Не удается получить трафик при настройке режима прозрачного прокси для определенного порта

263
shikn

Я хотел бы захватить вызов службы 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, но не может получить ответ.

Большое спасибо за вашу помощь.

0
Извините за опечатку, это 10001. shikn 6 лет назад 0
Что ты на самом деле пытаешься сделать? Вы просто хотите увидеть трафик? Что плохого в том, чтобы просто использовать коммутатор с включенным [зеркалированием портов] (https://en.wikipedia.org/wiki/Port_mirroring) и wireshark или tcpdump? Appleoddity 6 лет назад 0
О, я хочу перехватить ответ и заменить ответ на запрос от HostA. shikn 6 лет назад 0
Возможно, полное изменение программного обеспечения может помочь увидеть https://softwarerecs.stackexchange.com/questions/4239/what-software-to-modify-and-create-tcp-ip-packets Ross 6 лет назад 0

1 ответ на вопрос

0
Ross

Возможно - как только пакеты попадают на сервер MITM, он теперь переходит на порт 8080 - но веб-сервер HOST_A все еще работает на 10001 - так что вам не нужно делать другие IPTABLES, чтобы вернуть их на 10001? Я думаю, что ты лучше меня, но я бы догадался

sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j REDIRECT --to-port 10001 

сделал бы это