iptables出力DNATが機能しない

iptables出力DNATが機能しない

私はこの質問に似たことをしようとします。

https://unix.stackexchange.com/a/85933/20426

したがって、ポート44444に出るすべてのトラフィックを1.1.1.1:80にリダイレクトしたいと思います。

iptables -t nat -A OUTPUT -p tcp --dport 44444 -j DNAT --to-destination 1.1.1.1:80
iptables -t nat -A OUTPUT -p tcp --dport 44444 -j LOG --log-prefix

しかし、トラフィックはまだ代わりに元のIPに移動します。1.1.1.1:80

私はOpenWRTルーターでこれを設定しようとしていますが、バージョンは次のとおりです。

MTK OpenWrt SDK V3.4
revision : e7847192
benchmark : APSoC SDK 5.0.1.0
Linux 3.10.14
iptables v1.4.21

私は何が間違っていましたか?

答え1

私のために働くようです:

# iptables -tnat -A 出力 -p tcp --dport 44444 -j DNAT --ターゲット $someip:8888
$nc $someotherip44444
#tcpdump -n...
18:23:54.699942 IP[マイIPアドレス].55212 >[一部IP].8888:フラグ[S]、seq 1138760196、...

この部分を理解すればiptables のマニュアルページそうですね。OUTPUTホスト自体から始まる接続にのみ適用されます。いいえルーティング接続。このルールを追加しませんかPREROUTING

nat
このテーブルは、新しい接続を作成するパケットが見つかったときに参照されます。これは4つの組み込み機能で構成されています。 ... OUTPUT(ルーティング前にローカルに生成されたパケットの変更)および POSTROUTING(パケットが放出されようとしたときに変更)。

関連情報