я бегу 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-маршрутизации и таблицы для локальной доставки пакетов.