私のすべてのトラフィックはポート22で発生します。私はすべてのトラフィックをルーティングしたい任意のポート221を選択しました。
これが私が使うルールです
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 221
or iptables -t nat -A OUTPUT -p tcp --dport 22 -j REDIRECT --to-ports 221
iptable --list
target prot opt source destination
tcp -- anywhere anywhere tcp dpt:ssh
tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:221
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt
コマンドを使用してトラフィックを確認しています。
tcpdump -i any port 221
ポート 221 にルーティングされるものはありません。私は何が間違っていましたか?
ベストアンサー1
受信インターフェイスは IP スタックの前にパケットを確認します。つまり、システム外で発生するパケットには NAT 効果は現れません。宛先ポートが変更されて表示されませんtcpdump
。ただし、チェーンのPackjetカウンターで見ることができますfilter/INPUT
。
これはローカルで生成されたパケットとは異なります。インターフェイスに到達する前にIPスタックに到着します。したがって、ループバックインターフェイスでDNAT効果のあるパケットを見ることができます。