iptables — перенаправление локального и транзитного исходящего трафика, предназначенного для порта 80, на порт 8080

iptables — перенаправление локального и транзитного исходящего трафика, предназначенного для порта 80, на порт 8080

У меня возникла проблема с iptables из-за моего очень ограниченного опыта работы с ним.

У меня настроен выходной ретранслятор TOR, и я пытаюсь перенаправить весь локальный и TOR-трафик так, чтобы он выходил из моего сервера через порт 8080.

На данный момент у меня установлено следующее:

-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

Но, похоже, это перенаправляет только транзитный трафик, когда я выступаю в роли маршрутизатора, а не трафик, исходящий от устройства.

решение1

Не буду комментировать 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

Связанный контент