iptables를 사용하여 외부 IP를 로컬 서버로 NAT

iptables를 사용하여 외부 IP를 로컬 서버로 NAT

고정 IP(1.1.1.1이라고 가정)를 사용한 Adsl 연결이 있습니다. 내 데비안 방화벽은 ppp를 통해 인터넷에 연결되고 IP는 방화벽에 직접 할당됩니다. ppp0 Link encap:Point-to-Point Protocol inet addr:1.1.1.1 P-t-P:<IP-DOES-NOT-MATTER> Mask:255.255.255.255

저는 데비안을 방화벽/라우터로 사용하고 있으며 기본 iptables 스크립트를 사용하여 로컬 클라이언트를 인터넷에 연결하고 있습니다. iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward

외부 호스팅 도메인에 대한 하위 도메인 레코드를 만들었습니다. sub.example.com IN A 1.1.1.1

iptables를 사용하여 인터넷에서 로컬 서버로 http 연결을 DNAT할 수 있습니다. iptables --table nat --append PREROUTING -i ppp0 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to 192.168.1.101:80

또한 지역 고객에게도 다가갈 수 있기를 바랍니다.sub.example.com추가 구성이 필요하지 않습니다.

방화벽에서 시도한 iptables 명령(작동하지 않음) iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 : iptables -t nat --append OUTPUT --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-dest 192.168.1.101

첫 번째 명령은 패킷을 서버로 라우팅하지만 응답을 받지 못합니다(1.1.1.1이 서버에 구성되지 않음). 두 번째는 아무것도 하지 않습니다.

iptables를 사용하여 이를 달성할 수 있는 방법이 있습니까?

답변1

@wurtel의 답변에 따라 DNAT와 SNAT를 함께 사용했는데 효과가 있었습니다. 감사합니다:)

명령은 다음과 같습니다: iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 iptables --table nat --append POSTROUTING --out-interface eth1 -source 192.168.1.0/24 --dest 192.168.1.101 -p tcp --dport 80 -j SNAT --to-source 192.168.1.1

관련 정보