활성 UDP 연결을 위한 iptables 포트 전달

활성 UDP 연결을 위한 iptables 포트 전달

다음을 사용 port 12345하여 UDP에서 포트 전달을 설정하려고 합니다 .port 54321

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

이것은 새로운 연결에서는 잘 작동하지만 현재 활성화된 연결에서는 작동하지 않습니다.

192.168.0.2:55555의미를 명확히 하기 위해 규칙을 추가하기 전에 <---> 에서 활성 연결이 있고 들어오는 모든 연결을 로 192.168.0.1:12345리디렉션하려고 한다고 가정 해 보겠습니다 .192.168.0.1:12345192.168.0.1:54321

위의 두 가지 규칙을 추가하면 에서 보낸 패킷을 제외한 다른 모든 패킷은 에서 192.168.0.1:12345수신됩니다 .192.168.0.1:54321192.168.0.2:55555

나는 연결 상태가 이것에 중요한 역할을 한다고 생각합니다. 이 문제를 어떻게 해결하고 패킷을 192.168.0.1:55555목적지에서 으로 port 12345전달할 수 있습니까 port 54321?

답변1

나는 그것을하는 방법을 알아 냈습니다!

NAT에서 REDIRECT를 사용해야 합니다! 그러나 그 전에 conntrack에서 이 연결에 해당하는 항목을 삭제해야 합니다! 다음과 같은 것

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

관련 정보