.net을 통해 게이트웨이/라우터로 사용하는 2개의 NIC( enp1s0
- 개인 LAN 192.168.0.0/24 및 - 공용) 가 있는 CentOS 7이 있습니다 . 사설 LAN에 있는 모든 PC는 게이트웨이를 통해 인터넷에 연결됩니다. 또한 어디에서나 액세스할 수 있는 사설 LAN에 몇 가지 서비스가 있으며 이러한 서비스에 포트 전달을 사용합니다. 예를 들어, 192.168.0.77 포트 80에 웹 서버가 있고 ISP가 제공한 공용 IP를 통해 어디서나 액세스할 수 있습니다. 규칙은 다음과 같습니다.enp0s29u1u1
iptables
-A PREROUTING -d my_public_ip -i enp0s29u1u1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.77:80
이 규칙의 문제점은 웹사이트에 액세스할 수 있다는 것입니다.www.mysite.com 로컬 네트워크에 연결되어 있지 않을 때, 하지만 로컬 네트워크를 사용할 때는 개인 IP(192.168.0.77)를 통해서만 작동합니다.
이제 내 완전한 규칙은 다음과 같습니다.
공인 IP를 사용하여 로컬 네트워크에서 웹 서버에 액세스하려면 어떤 규칙을 추가해야 합니까?
답변1
포트 전달 규칙을 외부 인터페이스에 바인딩했지만 로컬 네트워크의 트래픽이 게이트웨이의 내부 인터페이스에 도달합니다. 따라서 이 트래픽은 웹 서버로 전달되지 않습니다.
단순히 모든 인터페이스에서 포트 전달을 사용할 수 있도록 만드는 것은 솔루션의 일부일 뿐입니다. 외부 주소에 대한 연결 시도는 웹 서버로 전달되지만 웹 서버의 반환 패킷은 LAN의 클라이언트로 직접 전송되며 주소가 일치하지 않습니다(클라이언트는 외부 주소와 내부 주소에서 답변을 얻습니다).
로컬 네트워크 내의 외부 주소에서 웹 서버에 액세스할 수 있도록 하려면 다음을 수행해야 합니다.
- 모든 인터페이스에서 포트 전달을 사용할 수 있도록 설정
- 웹 서버로 향하고 로컬 네트워크에서 게이트웨이의 로컬 주소로 전송되는 트래픽을 위장합니다.