Я хочу проверять и изменять HTTP-запросы от одного процесса, отправленного другому. Для этого у меня есть прокси, работающий на порту localhost 8080 / tcp. Владелец процесса - root, и приложение, которому он отправляет, работает на локальном порту 50000 / tcp. Процесс порождает новые подпроцессы, поэтому я выбираю вышеуказанный путь. Я не могу использовать --pid-owner
. Как бы выглядела команда iptables для этого?
Или иначе говоря:
Ситуация:
Цель:
Трудности:
Нам нужно перехватить соединение P2 с localhost TCP / 50000 и переслать его PROXY, прослушивающему TCP / 8080 - PROXY должен быть настроен для пересылки запроса на LOCALHOST TCP / 5000.
Чтобы это сработало, нам нужно активировать переадресацию портов localhost на IPTABLES, изменив следующий системный параметр:
sysctl -w net.ipv4.conf.all.route_localnet=1
Впоследствии эта команда IPTABLES должна установить соединение P2 с TCP / 50000 и выполнить NAT для PROXY, прослушивающего порт TCP / 8080:
iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -m owner --uid-owner 0 -p tcp --dport 50000 -j DNAT --to-destination 127.0.0.1:8080
Эта конфигурация также может работать с использованием внешнего PROXY (что означает, что он не работает на том же компьютере, где работают P1 и P2), изменяя IP-адрес 127.0.0.1 на внешний в:
--to-destination X.X.X.X:8080
Надеюсь это поможет.