Gostaria de capturar uma chamada de serviço HTTP do HostA - > HostB para testar o cliente no HostA para substituir a resposta HTTP. Ambos os sistemas operacionais são Linux. Eu tentei seguir, mas falhei.
Qual é a maneira recomendada de fazer isso?
Eu gostaria de usar o modo de proxy transparente porque não posso modificar o cliente e não posso redirecionar todo o tráfego de HostA para hostB como outro serviço também em execução no HostA. Gostaria de redirecionar apenas a conexão do cliente do host A para o host B.
O cliente no Host A chama um serviço no Host B em uma determinada porta 10001 por HTTP.
Eu tentei configurar o HostC com o mitmproxy (HostA e HostC estão na mesma sub-rede)
HostA (ip_A) - > HostC (ip_C) com mitmproxy- > HostB (ip_B), eu configuro a tabela ip para construir o modo transparente.
A seguir é o que eu configurei no 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
No 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
Isso não funciona. cliente no tempo limite de conexão HostA.
Se eu tentar traceroute no HostA
traceroute ip_B -p 10001 -T
Ele mostra que o ip_B está inacessível no TCP do HostA
Eu também tentei configurar o mitmproxy no HostA, mas quando tento redirecionar o tráfego da porta 10001
no HostA
sudo iptables -t nat -A OUTPUT -p tcp --dport 10001 -j REDIRECT --to-port 8080
mitmproxy -T --host
A chamada de serviço pode ser capturada pelo mitmproxy no HostA, mas não é possível obter resposta.
Muito obrigado pela sua ajuda.