Не удается получить трафик при настройке режима прозрачного прокси для определенного порта
Я хотел бы захватить вызов службы HTTP от HostA -> HostB, чтобы проверить клиент на HostA для замены ответа HTTP. Обе ОС Linux. Я попытался следовать, но потерпел неудачу. Какой рекомендуемый способ сделать это?
Я хотел бы использовать режим прозрачного прокси, потому что я не могу изменить клиента и не могу перенаправить весь трафик с HostA на hostB, поскольку другие службы также работают на HostA. Я хотел бы только перенаправить соединение клиента с хоста A на хост B. Клиент на хосте A вызывает службу на хосте B через определенный порт 10001 по HTTP.
Я попытался настроить HostC с mitmproxy (HostA и HostC находятся в одной подсети) HostA (ip_A) -> HostC(ip_C) с mitmproxy-> HostB(ip_B), я установил таблицу ip для создания прозрачного режима.
Вот что я настроил на HostA
sudo iptables -t mangle -I OUTPUT -p tcp --dport 10001 -j MARK --set-mark 1
sudo ip route add default via ip_C table 100
sudo ip rule add fwmark 0x1 table 100
На HostC
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -o eth0 -p tcp --dport 10001 -j REDIRECT --to-port 8080
mitmproxy -T --host
Это не работает таймаут подключения клиента к HostA. Если я попробую traceroute на HostA
traceroute ip_B -p 10001 -T
Это показывает, что ip_B недоступен по TCP от HostA
Я также попытался настроить mitmproxy на HostA, но когда я пытаюсь перенаправить трафик порта 10001 на HostA
sudo iptables -t nat -A OUTPUT -p tcp --dport 10001 -j REDIRECT --to-port 8080
mitmproxy -T --host
Сервисный вызов может быть перехвачен mitmproxy на HostA, но не может получить ответ.
Большое спасибо за вашу помощь.
1 ответ
Возможно - как только пакеты попадают на сервер MITM, он теперь переходит на порт 8080 - но веб-сервер HOST_A все еще работает на 10001 - так что вам не нужно делать другие IPTABLES, чтобы вернуть их на 10001? Я думаю, что ты лучше меня, но я бы догадался
sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j REDIRECT --to-port 10001
сделал бы это