Preciso desta linha na minha configuração do iptables para redirecionamentos?

Preciso desta linha na minha configuração do iptables para redirecionamentos?

Eu tenho um aplicativo escutando na porta 7162 traps SNMP. As armadilhas estão chegando na porta 162, então tenho esse redirecionamento no meu iptables:

-A PREROUTING -p udp -m udp --dport 162 -j REDIRECT --to-ports 7162

Também preciso permitir explicitamente conexões de entrada para a porta 162 com

-A INPUT -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT

Às vezes funciona apenas com a primeira linha, às vezes não, então estou tentando descobrir por que isso acontece.

Responder1

A primeira regra deve ser suficiente - a menos que você esteja limitando o acesso à porta 7162 em INPUTcadeia de alguma forma.

Na verdade, seu pacote UDP não deveria nem passar pela INPUTcadeia com a porta de destino definida como 162, pelo menos de acordo com o diagrama a seguir:https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

Além disso, sua INPUTregra parece muito complicada. UDP é um protocolo sem estado, então você está lidando com algum tipo de estado dentro do netfilter. Eu nem encontrei documentação adequada sobre o que esses estados significam quando usados ​​com UDP.

Tente monitorar ambas as portas com tcpdumpo programa em busca de pistas (nota:se você descartar algum pacote em PREROUTINGcadeia, o tcpdump não os veráele pode ver apenas o pacote recebido na porta 162, mesmo a escuta no loop back não revelará o redirecionamento).

Editar:Você não está tentando a regra com conexões em uma única máquina, certo? PREROUTINGnão é percorrido em conexões somente localhost.

informação relacionada