Не комментируя TOR, так как у меня мало знаний.
Но для цели iptables, вот она. PREROUTING
включает в себя маршрутизацию. При инициации соединения из локальной системы вы не маршрутизируете. Вы просто должны использовать OUTPUT
вместо / в дополнение к PREROUTING
.
Область применения REDIRECT
:
REDIRECT
Эта цель действительна только в таблице nat, в цепочках PREROUTING и OUTPUT и в пользовательских цепочках, которые вызываются только из этих цепочек. Он перенаправляет пакет на саму машину, изменяя IP-адрес назначения на основной адрес входящего интерфейса (локально сгенерированные пакеты сопоставляются с адресом localhost, 127.0.0.1 для IPv4 и ::1 для IPv6).
Так:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
РЕДАКТИРОВАТЬ:
Чтобы избежать перенаправления конкретного пользователя или группы (например, чтобы избежать бесконечного цикла со службой на порту 8080), вы можете сделать это (например, для службы, работающей с эффективной группой tor
) вместо вышеупомянутого:
iptables -t nat -N OUTPUT intercept
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j intercept
iptables -t nat -A intercept -m owner --gid-owner tor -j RETURN
iptables -t nat -A intercept -j REDIRECT --to-ports 8080