eth0과 eth1이라는 2개의 인터페이스가 있는 Linux가 있습니다. 하나는 "외부"이고 다른 하나는 "내부"입니다. 포트를 외부 인터페이스에서 내부 인터페이스로 리디렉션하고 싶지만 반환에 몇 가지 문제가 있습니다. 패킷 질문입니다. 하지만 외부에서 외부로 전달하면 문제가 없습니다. 외부에서 작동하고 이를 수행하는 iptables 코드는 다음과 같습니다.
iptables -t nat -A PREROUTING -p tcp --dport (port number) -j DNAT --to-destination (ipdestiny internal):(port destiny who are listening in the host in this case is the same of dport)
iptables -t nat -A POSTROUTING -p tcp -d (ipdestiny internal) --dport (port number) -j SNAT --to-source (ip external)
"internal eth"에서 tcpdump를 실행하면: TCPdump:
09:53:55.099904 IP (tos 0x8, ttl 127, id 21212, offset 0, flags [DF], proto TCP (6), length 52)
ipexternal.(61236 port origin) > ipinternal.(port destiny): Flags [S], cksum 0x1aba (correct), seq 3030159247, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
0x0000: 4508 0034 52dc 4000 7f06 832b 0ac8 2840 E..4R.@....+..(@
0x0010: c0a8 3204 ef34 0050 b49c 8f8f 0000 0000 ..2..4.P........
0x0020: 8002 faf0 1aba 0000 0204 05b4 0103 0308 ................
0x0030: 0101 0402
내가 볼 수 있듯이 내부적으로 전달된 트래픽은 작동하지만 내부에서 외부로 "반환"되는 것은 없습니다. /etc/sysctl.conf 다음 줄을 확인했습니다.
net.ipv4.ip_forward=1
그리고 주석이 없습니다.
이것이 내가 nat 테이블을 보는 방법입니다:
iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:(port number listening on "external") to:(destiny ip "internal"):(port destiny in the "internal")
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT tcp -- 0.0.0.0/0 (ip destiny) tcp dpt:(port number listening on "external") to:(ip "external")
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
답변1
클라이언트가 트래픽을 수신하지만 반환 트래픽을 어디로 보낼지 모를 수 있습니다. 클라이언트 컴퓨터에서 고정 경로 또는 기본 게이트웨이를 정의합니다.