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

Использование iptables TPROXY вместо REDIRECT

я бегу Debian 8. Я пытаюсь перехватить все пакеты и сейчас использую iptables для этого:

iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5000

Кажется, это работает, но исключает возможность получить исходный порт назначения в пакете.

я прочел TPROXY должен быть путь, поскольку он не использует NAT.

Я пытался заменить REDIRECT с этим:

iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 5000

Но я при этом не перехватываю никакие пакеты на своем сервисе ...

Documentation / network / tproxy.txt в дереве ядра упоминает следующее:

Цель TPROXY обеспечивает аналогичную функциональность, не полагаясь на NAT. Просто добавьте такие правила в набор правил iptables выше:

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY \
  --tproxy-mark 0x1/0x1 --on-port 50080

Обратите внимание, что для того, чтобы это работало, вам необходимо изменить прокси, чтобы включить (SOL_IP, IP_TRANSPARENT) для прослушивающего сокета.

Вы установили вышеупомянутые параметры для прослушивающего сокета в своем приложении?

Также обратите внимание, что в приведенном выше документе упоминается необходимость добавления соответствующего правила IP-маршрутизации и таблицы для локальной доставки пакетов.