Iptablesを使用してUDPパケットの宛先ポートを変更することは可能ですか?
162ではなく1620でトラップを送信するようにSNMPエージェントを取得しようとしています。残念ながら、これまでのところ、送信元ポートを変更することしかできませんでした。
iptables -t nat -A POSTROUTING -p udp --dport 162 -j SNAT --to:1620
この使用法は明らかにサポートされていません。 http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt から取得:
6.3.7。ローカルで生成された接続の宛先の変更
NATコードを使用すると、OUTPUTチェーンにDNATルールを挿入できますが、
これは2.4では完全にはサポートされていません(サポートは可能ですが、新しい
構成オプション、いくつかのテスト、そしてかなりのコーディングなので、誰かがRustyにそれを書くように契約しない限り、私はすぐにそれを期待しません)。現在の制限は、宛先のみを変更できることです
他のマシンではなく、ローカルマシン(たとえば、「j DNAT --to 127.0.0.1」)。そうしないと、応答が正しく翻訳されません。
162を1620にリダイレクトできます
iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620
送信先のマシンがわかっていると仮定します。
iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
@PiedPiperは正しかった。 DNATではIPアドレスを指定する必要がありますが、ポートリダイレクションのみを実行するため、この場合は-j REDIRECTが機能します。
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2 を参照してください
宛先変更ルールを設定してから、変更されたポートでパケットを再注入できます。
私はこれをMac OS Xでしばらくしてから行いましたが、Linuxでも同じ原則です http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os- x.html
基本的に、非常に単純な透過プロキシを作成する必要があります。