기본적으로 내가 원하는 것은 Google Cloud VM의 공개 IP를 사용하여 로컬 웹 서버에 액세스하고 싶다는 것입니다. 내 로컬 측에는 공개 IP가 없습니다.
내가 넣었을 때gcloud_public_ip:80내 브라우저 URL 표시줄에서 클라우드 VM의 웹 대신 로컬 서버의 웹 포트에 액세스하고 싶습니다.
Wireguard를 성공적으로 구성했습니다. gcloud vm과 로컬 서버 모두의 wg0 인터페이스가 실행 중입니다. 내 로컬 라우터에는 포트 차단이나 IP 필터링이 없습니다. 또한 Google 클라우드 방화벽에서 웹 포트 80/443 udp/tcp 수신 + wireguard 터널용 다른 포트를 열었습니다.
인터넷에서 들어오는 트래픽을 Wireguard 터널의 반대편에 있는 로컬 서버의 웹 포트 80/443으로 리디렉션하려면 클라우드 VM에서 iptables 명령을 사용해야 한다는 내용을 읽었습니다. 나는 그것에 대해 잘 알지 못하지만 내가 배운 한 두 가지 명령을 실행해야 합니다. 하나는 PREROUTING용이고 다른 하나는 POSTROUTING용입니다.
이것은 내가 내린 명령이지만 작동하지 않거나 적어도 뭔가 빠진 것 같습니다.
sudo iptables -t nat -A PREROUTING -i ens4 -p tcp --dports 80,443 -j DNAT --to-destination 10.0.3.2
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dports 80,443 -j SNAT --to-source 10.140.0.2
ens4는 공개 IP가 매핑된 Google Cloud VM의 내부 인터페이스입니다.
10.0.3.2는 로컬 서버의 측 터널 IP입니다.
10.140.0.2는 공개 IP가 매핑된 ens4의 IP입니다.
답변1
VPS 서버에 규칙을 설정하여 웹 서버와의 트래픽을 적절하게 처리할 수 있습니다.
그러나 Wireguard 터널을 통해 모든 트래픽을 전달하는 웹 서버에 규칙을 설정해야 합니다.
웹 서버의 Wireguard 터널을 통해 기본 경로를 설정해야 합니다. 사용 중인 실제 인터넷 연결을 통해 VPS에 대한 호스트 경로가 있어야 합니다.
모든 세부 사항은 네트워크 설정의 세부 사항에 따라 달라집니다.