내 모든 트래픽은 포트 22에서 발생합니다. 나는 모든 트래픽이 라우팅되기를 원하는 임의의 포트 221을 선택했습니다.
이것이 내가 사용하는 규칙이다
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 221
or iptables -t nat -A OUTPUT -p tcp --dport 22 -j REDIRECT --to-ports 221
iptable --list
target prot opt source destination
tcp -- anywhere anywhere tcp dpt:ssh
tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:221
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt
명령을 사용하여 트래픽을 확인하고 있습니다.
tcpdump -i any port 221
포트 221로 라우팅되는 것은 없습니다. 내가 뭘 잘못했나요?
답변1
수신 인터페이스는 IP 스택보다 먼저 패킷을 확인합니다. 즉, 시스템 외부에서 발생하는 패킷에는 NAT 효과가 나타나지 않습니다. 목적지 포트가 변경되어 볼 수 없습니다 tcpdump
. 그러나 체인의 Packjet 카운터를 통해 볼 수 있습니다 filter/INPUT
.
이는 로컬에서 생성된 패킷과 다릅니다. 인터페이스에 도달하기 전에 IP 스택에 도착합니다. 따라서 루프백 인터페이스에서 DNAT 효과가 있는 패킷을 볼 수 있습니다.