Problema estranho com o redirecionamento do iptables

2

Estou tentando redirecionar todo o tráfego de entrada na porta UDP 5060 para a porta 56790 e todo o tráfego de saída de 5060 para a porta 56789. Eu usei estas regras do iptables:

iptables -t nat -I PREROUTING -p udp ! -s localhost --dport 5060 -j REDIRECT --to-port 56790
iptables -t nat -I OUTPUT -p udp ! -s localhost --sport 5060 -j REDIRECT --to-port 56789

Eu escuto em ambas as portas usando SOCKS RAW depois de configurar a interface para o modo PROMISCUOUS usando ioctl.

Eu vejo pacotes SOMENTE no lado 56789, ou seja, não vejo nenhum pacote no 56790, enquanto o wireshark mostra que muitos pacotes são entregues na porta 5060.

Por que isso aconteceria? Alguma ideia? Você acha que é um problema com as regras do iptables ou algo a ver com soquetes brutos?

[Este é o Ubuntu 10.04 e o iptables v1.4.4]

    
por skypemesm 19.10.2010 / 12:36

1 resposta

3

Se você quiser redirecionar os pacotes que chegam à porta 5060 / udp de forma transparente para a porta 56790 / udp, então você precisa de duas regras iptables para isso: uma para pacotes de entrada, e um para mapear pacotes de resposta (que tem porta de origem 56790) de volta à porta de destino remoto 5060:

sudo iptables -A PREROUTING -p udp -m udp --dport 5060 -j DNAT --to-destination :56790
sudo iptables -A POSTROUTING -p udp -m udp --sport 56790 -j SNAT --to-source :5060

Por outro lado, para redirecionar os pacotes de saída (originados da porta 5060 e destinados à porta 5060) para a porta 56789, você troca os números de porta:

sudo iptables -A PREROUTING -p udp -m udp --dport 57689 -j DNAT --to-destination :5060
sudo iptables -A POSTROUTING -p udp -m udp --sport 5060 -j SNAT --to-source :56789
    
por Riccardo Murri 20.10.2010 / 00:25