Я пытаюсь направить весь свой трафик через туннель SSH/прокси-сервер SOCKS5. У меня есть некоторые правила IP-таблиц, настроенные для перенаправления (почти) всего трафика в программу на основе сокетов, которая затем согласовывает и перенаправляет трафик на прокси-сервер SOCKS5. Я обнаружил, что не весь мой трафик перенаправляется должным образом, и я подозреваю, что это моя проблема. iptables
правила, которые не работают. Кто-нибудь согласится одолжить мне вторую пару глаз?
Например, я могу запустить 8.8.8.8 80 2>&1
и я вижу в своей программе на основе сокетов, что происходит перенаправление. Но когда я завиток google.com
, я получаю ошибку разрешения: curl: (6) Не удалось разрешить хост: google.com
. В моей программе на основе сокетов нет журналов, которые показывают, что была предпринята попытка перенаправления.
У меня есть программа на основе сокетов, прослушивающая 0.0.0.0:9900
а прокси-сервер SOCKS5 инициируется, например, на порту 9901. Я запускаю все это в контейнере Docker, если это имеет значение (но я не думаю, что это должно иметь большое значение...).
Я инициирую прокси-сервер SOCKS5, например:
#!/usr/bin/env bash
ssh -D 127.0.0.1:9901 -N пользователь@192.168.0.25
Вот iptables
правила, которые я использую:
#!/usr/bin/env bash
# Создать новую цепочку в таблице NAT.
iptables -t nat --new-chain ПОЛЬЗОВАТЕЛЬСКИЙ
# Создайте правило, позволяющее не трогать пакеты, предназначенные для локального хоста.
iptables -t nat --append CUSTOM --destination 127.0.0.0/8 --jump RETURN
# Создайте правило для выхода из туннеля, который мы создадим в одиночку.
# 192.168.0.25 — это статический IP-адрес машины, на которой работает сервер SOCKS5.
iptables -t nat --append CUSTOM --destination 192.168.0.25 --protocol tcp --destination-port 22 --jump RETURN
# Создайте правило для перенаправления всего остального трафика TCP через туннель SSH.
iptables -t nat --append CUSTOM --protocol tcp --jump LOG --информация на уровне журнала --log-prefix='[iptables] '
iptables -t nat --append CUSTOM --protocol tcp --jump REDIRECT --to-ports 9900
# Свяжите цепочки OUTPUT и PREROUTING таблицы NAT с нашей пользовательской цепочкой.
iptables -t nat -I ВЫВОД 1 --jump ПОЛЬЗОВАТЕЛЬСКИЙ
iptables -t nat -I PREROUTING 1 --jump CUSTOM
А вот и полный вывод iptables -t nat -L -v
:
Цепочка PREROUTING (политика ACCEPT 165 пакетов, 21537 байт)
pkts bytes target prot opt in out source target
165 21537 ПОЛЬЗОВАТЕЛЬСКАЯ все -- любая любая где угодно где угодно
5129 389K DOCKER все -- любое любое где угодно ADDRTYPE соответствует dst-type LOCAL
6987 1026K delegate_prerouting all -- любой любой везде где угодно
Цепочка INPUT (политика ACCEPT 114 пакетов, 8854 байта)
pkts bytes target prot opt in out source target
Цепочка OUTPUT (политика ACCEPT 40 пакетов, 2369 байт)
pkts bytes target prot opt in out source target
40 2369 ПОЛЬЗОВАТЕЛЬСКОЕ все -- любое любое в любом месте в любом месте
0 0 DOCKER все -- любое любое где угодно !127.0.0.0/8 ADDRTYPE соответствует dst-type LOCAL
Цепочка POSTROUTING (политика ACCEPT 39 пакетов, 2301 байт)
pkts bytes target prot opt in out source target
72 9027 MASQUERADE all -- any !docker0 172.17.0.0/16 везде
1614 99565 delegate_postrouting all -- любой любой везде где угодно
Сеть DOCKER (2 ссылки)
pkts bytes target prot opt in out source target
0 0 RETURN all -- docker0 любой где угодно где угодно
Цепочка CUSTOM (2 ссылки)
pkts bytes target prot opt in out source target
39 2301 ВОЗВРАТ все -- любой любой любой 127.0.0.0/8
0 0 RETURN tcp -- любой любой любой 192.168.0.25 tcp dpt:ssh
0 0 LOG tcp -- любой любой в любом месте Префикс информации об уровне журнала "[iptables] "
0 0 ПЕРЕНАПРАВЛЕНИЕ tcp -- любое любое куда угодно перенаправить порты 9900
Цепь МИНЮНППД (2 наименования)
pkts bytes target prot opt in out source target
Сеть delegate_postrouting (1 упоминание)
pkts bytes target prot opt in out source target
1614 99565 postrouting_rule all -- любой любой где угодно /* цепочка пользователей для постмаршрутизации */
0 0 zone_lan_postrouting all -- любой br-lan в любом месте в любом месте
0 0 zone_wifi_postrouting all -- любой br-wifi везде где угодно
55 5757 zone_wan_postrouting all -- любой eth0 в любом месте в любом месте
Сеть delegate_prerouting (1 ссылка)
pkts bytes target prot opt in out source target
6987 1026K prerouting_rule all -- любой любой где угодно /* цепочка пользователей для предварительной маршрутизации */
4545 342K zone_lan_prerouting all -- br-lan любой где угодно где угодно
1 32 zone_wifi_prerouting all -- br-wifi в любом месте в любом месте
2441 684K zone_wan_prerouting all -- eth0 любой где угодно где угодно
Сеть postrouting_lan_rule (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка postrouting_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть postrouting_wan_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть postrouting_wifi_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть prerouting_lan_rule (1 ссылка)
pkts bytes target prot opt in out source target
Цепь prerouting_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть prerouting_wan_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть prerouting_wifi_rule (1 ссылка)
pkts bytes target prot opt in out source target
Сеть zone_lan_postrouting (1 ссылка)
pkts bytes target prot opt in out source target
0 0 postrouting_lan_rule all -- любой любой где угодно /* цепочка пользователей для постмаршрутизации */
Сеть zone_lan_prerouting (1 ссылка)
pkts bytes target prot opt in out source target
4545 342K prerouting_lan_rule all -- любой любой где угодно в любом месте /* цепочка пользователей для предварительной маршрутизации */
Сеть zone_wan_postrouting (1 ссылка)
pkts bytes target prot opt in out source target
55 5757 postrouting_wan_rule all -- любой любой где угодно /* цепочка пользователей для постмаршрутизации */
55 5757 МАСКАРАД все -- любой любой где угодно где угодно
Сеть zone_wan_prerouting (1 ссылка)
pkts bytes target prot opt in out source target
2441 684K MINIUPNPD все -- любые любые где угодно где угодно
2441 684K MINIUPNPD все -- любые любые где угодно где угодно
2441 684K prerouting_wan_rule all -- любой любой везде где угодно /* цепочка пользователей для предварительной маршрутизации */
Сеть zone_wifi_postrouting (1 ссылка)
pkts bytes target prot opt in out source target
0 0 postrouting_wifi_rule all -- любой любой где угодно /* цепочка пользователей для постмаршрутизации */
Сеть zone_wifi_prerouting (1 ссылка)
pkts bytes target prot opt in out source target
1 32 prerouting_wifi_rule all -- любой любой где угодно /* цепочка пользователей для предварительной маршрутизации */
Дайте мне знать, если есть какая-либо другая информация, которую я должен включить, и заранее спасибо!