リダイレクトのために iptables 設定にこの行が必要ですか?

リダイレクトのために iptables 設定にこの行が必要ですか?

ポート 7162 で SNMP トラップをリッスンするアプリケーションがあります。トラップはポート 162 に到着するので、iptables で次のリダイレクトを設定します。

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

ポート162への着信接続を明示的に許可する必要はありますか?

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

最初の行だけで機能する場合もあれば、機能しない場合もあるので、その理由を解明しようとしています。

答え1

INPUT何らかの方法でポート 7162 へのアクセスをチェーンで制限していない限り、最初のルールで十分です。

INPUT実際、少なくとも次の図によれば、UDP パケットは宛先ポートが 162 に設定されたチェーンを通過するべきではありません。https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

さらに、INPUTルールが複雑すぎるようです。UDP はステートレス プロトコルなので、netfilter 内で何らかの形式の状態を処理することになります。UDP で使用されるこれらの状態が何を意味するかについての適切なドキュメントさえ見つけていません。

手がかりを得るためにプログラムで両方のポートを監視してみてくださいtcpdump(注:チェーン内でパケットをドロップするとPREROUTING、tcpdumpはそれを検出しません。ポート 162 の着信パケットのみを確認でき、ループバックをリッスンしてもリダイレクトは明らかになりません。

編集:単一マシン内の接続でルールを試しているわけではないですよね?PREROUTINGローカルホストのみの接続では走査されません。

関連情報