Desejo testar um subsistema que se comunica com outro subsistema via tcp. Eu usei o seguinte:
"iptables -A OUTPUT -p tcp --dport "+port_number" -j DROP"
parar o tráfego em uma porta para que eu pudesse, através de um script, enviar meus próprios dados para o sistema em teste. Isso funcionou muito bem.
Agora desejo, no entanto, encaminhar o tráfego para o meu script, em vez de simplesmente descartá-lo. Desejo então manipular os dados em meu script antes de encaminhá-los para o subsistema em teste.
Posso fazer isso usando iptables? Existe uma abordagem melhor?
Responder1
Você poderia tentar isso (o tráfego de entrada para a porta 1234
será redirecionado para 4321
o host local, onde seu script poderá escutar):
iptables -I INPUT -p tcp --dport 1234 -j ACCEPT
iptables -I INPUT -p tcp --dport 4321 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 1234 -j REDIRECT --to-ports 4321
Se quiser acessar a porta 1234
também da mesma máquina, você precisará adicionar uma OUTPUT
regra, pois PREROUTING
não é usada pela interface de loopback:
iptables -t nat -I OUTPUT -p tcp -o lo --dport 1234 -j REDIRECT --to-ports 4321
Agora, no servidor, você pode tentar ouvir nc -l 4321
(aqui você pode usar seu próprio script). Em um cliente, tente nc server_host_name_or_ip 1234
escrever qualquer coisa para verificar se o servidor está fazendo o redirecionamento corretamente.
Não se esqueça de salvar a iptables
configuração!