19

iptables を使用して UDP パケットの宛先ポートを変更することは可能ですか?

162 ではなく 1620 でトラップを送信するように SNMP エージェントを取得しようとしています。残念ながら、これまでのところ、送信元ポートを変更することしかできませんでした。

iptables -t nat -A ポストルーティング -p udp --dport 162 -j SNAT --to :1620

4

6 に答える 6

7

送信先のマシンがわかっていると仮定します。

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
于 2008-10-28T12:35:20.283 に答える
6

162 を 1620 にリダイレクトできます

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620
于 2008-11-13T08:54:54.930 に答える
5

この使用法は明らかにサポートされていません。http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txtから取得:

6.3.7. ローカルで生成された接続の宛先の変更

NAT コードを使用すると、DNAT ルールを OUTPUT チェーンに挿入できますが、
これは 2.4 では完全にはサポートされていません (可能ですが、新しい
構成オプション、いくつかのテスト、およびかなりのコーディングが必要です。したがって、誰かが Rusty と契約しない限り、それを書くために、私はすぐにそれを期待していません)。


現在の制限は、宛先をローカル マシン (たとえば、「j DNAT --to 127.0.0.1」) にのみ変更できることです。他のマシンには変更できません。そうしないと、応答が正しく翻訳されません。

于 2008-10-31T05:57:44.733 に答える
1

@PiedPiperは正しかった。DNAT では IP アドレスを指定する必要がありますが、ポートのリダイレクトのみを行いたいため、この場合は -j REDIRECT が機能する可能性があります。

http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2を参照してください。

于 2008-10-28T11:38:10.367 に答える
0

SNAT を作成する代わりに、DNAT を試してください。SNAT は SourceNAT を意味するため、送信元ポートが変更されるため、DNAT が機能します。

于 2008-10-28T11:04:05.350 に答える
0

迂回ルールを設定してから、変更されたポートでパケットを再注入できます。

私はこれをMac OS Xでしばらく前に行いましたが、Linuxでも同じ原則です: http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os-x.html

基本的に、非常に単純な透過プロキシを作成する必要があります。

于 2008-10-28T12:39:46.623 に答える