다음을 사용 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:12345
192.168.0.1:54321
위의 두 가지 규칙을 추가하면 에서 보낸 패킷을 제외한 다른 모든 패킷은 에서 192.168.0.1:12345
수신됩니다 .192.168.0.1:54321
192.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