iptables를 사용한 로컬 포트 ​​전달이 작동하지 않습니다.

iptables를 사용한 로컬 포트 ​​전달이 작동하지 않습니다.

다음 명령을 사용하여 포트 30에서 포트 1234로 들어오는 트래픽을 전달하고 있습니다. 하지만 작동하지 않습니다. Wireshark에는 포트 1234로 전달된 패킷의 흔적도 없습니다.

sudo iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p tcp --dport 30 -j REDIRECT --to-ports 1234.

답변1

다른 포트에 있는 데이터 패킷의 로컬 전달은 PREROUTING 체인을 통과하지 않습니다. OUTPUT 체인을 따릅니다. 체인을 PREROUTING에서 OUTPUT으로 변경하면 작동합니다.

sudo iptables -t nat -A OUTPUT -p tcp --dport 30 -j REDIRECT --to-port 1234

iptables NAT 필터에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
https://www.karlrupp.net/en/computer/nat_tutorial

답변2

활성화되어 있는지 확인하세요.

sudo iptables -t nat -L

항목이 있으면 다음 명령을 사용하여 삭제합니다.

sudo iptables -F -t nat

src dest 플래그 없이 시도해보세요:

sudo iptables -t nat -A PREROUTING -p tcp --dport 30 -j REDIRECT --to-ports 1234

활성화되어 있는지 다시 확인하세요.

sudo iptables -t nat -L

기본적으로 "OUTPUT" 경로에 대기 중인 연결된 항목을 제거하는 것이 중요합니다.

관련 정보