IPtables UDP ポート転送は機能しません。

IPtables UDP ポート転送は機能しません。

ポート514から私のサーバーにUDP syslogメッセージを送信するデバイスがあります。 ifconfigをチェックし、コレクタソフトウェアをrootとして実行してテストし、このトラフィックが私のサーバーに到達していることを確認しました。

コレクタをルートとして実行する必要がないように、ポート514からの着信トラフィックを別のポートに転送しようとしています。ただし、以前に同じコマンドを正常に使用したにもかかわらず、何らかの理由でIPtablesでこれを行うことはできません。

私が作成したルール:

iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p udp --dport 514 -j REDIRECT --to-ports 9901

そして

iptables -I INPUT 1 -p udp -m udp --dport 9901 -j ACCEPT

私は何を見逃していますか?コレクタがポート514を確認するとき(上記の規則にもかかわらず)データを選択するため、トラフィックを転送できない場合はIPtablesが何らかの形で表示されると仮定します。

ベストアンサー1

OUTPUTパケットがローカルで生成されると、チェーンに入ります。この場合、-j REDIRECTチェーンOUTPUT、テーブルにnatを追加できます。

インバウンドパケットがローカルでない場合は、route_localnetそのインターフェイスのオプションを有効にすると成功する可能性があります。

# sysctl -w net.ipv4.conf.<IFNAME>.route_localnet=1

または

# echo 1 > /proc/sys/net/ipv4/conf/<IFNAME>/route_localnet

Route_localnet - BOOLEAN ルーティング時にループバックアドレスを火星のソースまたは宛先として処理しません。これにより、127/8 をローカルルーティング目的で使用できます。デフォルトはFALSE

引用:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

おすすめ記事