iptables 전달 문제

iptables 전달 문제

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

클라이언트가 트래픽을 수신하지만 반환 트래픽을 어디로 보낼지 모를 수 있습니다. 클라이언트 컴퓨터에서 고정 경로 또는 기본 게이트웨이를 정의합니다.

관련 정보