공용 인터페이스와 개인 인터페이스 간의 포트 전달

공용 인터페이스와 개인 인터페이스 간의 포트 전달

이 질문은 수없이 많이 제기되었습니다. 몇 주 전에 나는 이 작업을 수행할 수 있었습니다.이것ServerFault가 게시하고이것디지털 오션 블로그 게시물. 나는 간단한 것을 놓치고 있어야합니다.

내 목표는 NAT를 수행하는 두 인터페이스 간에 패킷을 전달하는 것입니다. 특히 공용 인터페이스와 외부 USB NIC 간에 패킷을 전달하고 싶습니다.

포트 전달을 허용하도록 커널이 구성되었는지 확인했습니다.

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

그리고 인터페이스별 전달 구성은 다음과 같습니다.

net.ipv4.conf.enp0s20u4u3.forwarding = 1
net.ipv4.conf.eno1.forwarding = 1

내가 만든 규칙은 iptables다음과 같습니다.

iptables -t nat -A PREROUTING -i eno1 --protocol tcp --destination-port 10000 -j DNAT --to-destination 192.168.10.2:1234
iptables -A FORWARD -i eno1 -o enp0s20u4u3 --protocol tcp --destination-port 1234 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s20u4u3 --protocol tcp --source 192.168.10.2 --source-port 1234 -j SNAT --to-source 192.168.10.1

그런 다음 포트 10000을 통해 TCP 연결을 설정하여 이 구성을 테스트했습니다(외부 IP가 192.168.2.50인 경우).

$ nc -v 192.168.2.50 10000
nc: connect to 192.168.2.50 port 10000 (tcp) failed: Connection refused

내 규칙 항목이 올바르지 않은 경우 이 동작이 의미가 있습니다. 그래서 규칙 통계를 버렸습니다.

$ iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 15 packets, 2885 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eno1   any     anywhere             anywhere             tcp dpt:ndmp to:192.168.10.2:1234

Chain INPUT (policy ACCEPT 15 packets, 2885 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       tcp  --  any    enp0s20u4u3  192.168.10.2         anywhere             tcp spt:search-agent to:192.168.10.1

따라서 인바운드 TCP 패킷은 첫 번째 체인 규칙과 일치하지 않습니다 PREROUTING. 오류가 어디에 있는지 잘 모르겠습니다. 첫 번째 규칙은 매우 간단합니다. 아이디어는 다음과 같습니다.

192.168.2.50:10000에 대한 인바운드 트래픽은 개인 인터페이스에서 192.168.10.2:1234에 대한 NAT입니다.

관련 정보