iptables natルールを変更し続けたいと思います。より正確には、実行時にターゲットポートを変更したいと思います。しかし、フローの最初のパケットだけがnatテーブルに到達することがわかりました。その後、ルールが変更されても、残りのパケットは自動的に最初のパケットと同じ操作を実行します。
例えば
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-port 9999
または
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-port 9999
これは、プロセスの開始前にルールがあった場合にのみ適用されます。
…
また、回避策として、次のように接続追跡を停止してみました。
sudo iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -i eth0 -j NOTRACK
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -m conntrack --ctstate UNTRACKED -j REDIRECT --to-port 9999
または
sudo iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -i eth0 -j NOTRACK
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -m state --state UNTRACKED -j DNAT --to-port 9999
しかし、うまくいきません。この問題を解決するのに役立ちます。事前にありがとう...