Назад | Перейти на главную страницу

Перенаправление замаскированного трафика через TOR

Я пытаюсь настроить AP с перенаправлением входящего трафика через TOR. Моя точка доступа теперь имеет 2 сетевых интерфейса:

  1. eth0 - есть доступ в интернет (192.168.1.92/24)
  2. wlan0 - интрасеть, без интернета (10.0.0.1/24)

Для выхода в интернет с wlan0 я делал обычные вещи: включил пересылку и маскарадинг. Для перенаправления трафика (на tor) я сделал перенаправление iptables. Итак, iptables целиком выглядит так:

NON_TOR="192.168.1.0/24 192.168.0.0/24 10.0.0.1/24"
TOR_UID=$(id -ur debian-tor)
TRANS_PORT="9040"

# masqaerade for wlan0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -A OUTPUT -m owner --uid-owner $TOR_UID -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 53

for NET in $NON_TOR 127.0.0.0/9 127.128.0.0/10; do
    iptables -t nat -A OUTPUT -d $NET -j RETURN
done

iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 10.0.0.1:9040
# iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $TRANS_PORT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   

Конфигурация Tor:

VirtualAddrNetwork 192.168.100.0/10
AutomapHostsOnResolve 1
TransPort 192.168.1.92:9040
TransPort 10.0.0.1:9040
DNSPort 53
ControlPort 9051

Но для клиентов AP это не работает. Для всех соединений, исходящих от AP, перенаправление на tor работает отлично. Вот фрагмент перехваченного трафика от AP-клиента (мобильного телефона), который состоит из запроса к ident.me :

Вы можете заметить, что правила перенаправления, описанные в iptables, игнорировались для замаскированного трафика. Почему это происходит и как это исправить?

Вот так выглядит тот же запрос, инициированный AP:

Правила вашего брандмауэра кажутся правильными. Однако перенаправление пакетов, поступающих в точку доступа, должно быть настроено в PREROUTING цепь. Правила добавлены в OUTPUT цепочка влияет только на локально сгенерированные пакеты.

Итак, следует добавить следующее правило:

iptables -t nat -A PREROUTING -i wlan0 -p tcp -j DNAT --to-destination 10.0.0.1:9040

В зависимости от политики, установленной на FORWARD цепь в filter table, может понадобиться и следующее правило:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT