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

하지만 작동하지 않습니다. 이 문제를 해결하도록 도와주세요. 미리 감사드립니다...

관련 정보