iptables NATルールを動的に変更する

iptables NATルールを動的に変更する

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

しかし、うまくいきません。この問題を解決するのに役立ちます。事前にありがとう...

関連情報