Wireguard: Linux 게스트에서 실행되는 서비스는 VPN에 연결된 경우 인터넷에서 액세스할 수 없습니다.

Wireguard: Linux 게스트에서 실행되는 서비스는 VPN에 연결된 경우 인터넷에서 액세스할 수 없습니다.

Windows 호스트의 vmware에서 실행되는 Linux 게스트에서 여러 서비스를 실행하고 있습니다. Linux 클라이언트에서는 다음 구성을 사용하여 Wireguard 클라이언트를 VPN 공급자에 연결합니다.

[Interface]
PrivateKey = Redacted
Address = 100.81.66.38/32
DNS = 10.255.255.1

[Peer]
PublicKey = Redacted
AllowedIPs = 0.0.0.0/0
Endpoint = den-301-wg.whiskergalaxy.com:443
PresharedKey = Redacted

내 라우터에서는 항상 네트워크를 통해 내 서비스에 연결할 수 있는 친숙한 이름을 갖도록 DDNS 클라이언트를 실행한 다음 포트 전달을 사용하여 다양한 서비스(ssh, ftp 등)에 액세스합니다.

Wireguard 클라이언트를 연결하기 전에는 인터넷을 통해 서비스에 제대로 액세스할 수 있었지만 wg-quick up wg0 Linux 게스트에 접속한 후에는 더 이상 인터넷에서 서비스에 액세스할 수 없었습니다. 내 Linux 게스트의 로컬 IP 주소(로컬 LAN에서)를 사용하여 계속 액세스할 수 있습니다. 인터넷에 있는 라우터의 공개 주소를 사용하여 연락할 수 없는 것 같습니다.

내 로컬 LAN에서 SSH 서버와 같은 것에 액세스할 수 있다면 라우터에서 전달된 포트도 정확히 동일한 로컬 IP 주소를 가리키기 때문에 작동할 것이라고 생각했기 때문에 이것은 이상해 보입니다. 흥미롭게도 Windows를 실행하는 것 외에도 다른 게스트에서도 유사한 설정이 실행되고 있습니다. 여기서는 Wireguard 클라이언트를 연결할 수 있으며 라우터의 공용 IP 및 포트 전달을 통해 해당 게스트에서 실행되는 웹 서비스에 계속 액세스할 수 있습니다. Linux 게스트만이 다른 작업을 수행합니다.

비슷한 일을 해봤 sysctl -w net.ipv4.ip_forward=1지만 도움이 되지 않는 것 같습니다. 나도 시도해 보았지만 AllowedIPs = 0.0.0.0/1, 128.0.0.0/1아무것도 바뀌지 않았습니다. 로컬에서는 항상 액세스할 수 있지만 인터넷을 통해서는 액세스할 수 없습니다. 전선 보호 장치를 분리하면 모든 것이 다시 작동하기 시작했습니다.

답변1

귀하의 이야기를 통해 귀하는 외부 VPN 공급자가 있고 일부 서비스를 호스팅하는 Linux 게스트를 해당 VPN 공급자에 연결하고 싶어한다는 것을 이해합니다. Linux 클라이언트를 가리키는 로컬 라우터에도 포트 전달이 있습니다.

터널링을 활성화하면 Linux 게스트에서 호스팅하는 서비스는 포트 전달을 통해 사용할 수 없지만 여전히 내부 서비스입니다.

이 문제는 Linux 클라이언트의 라우팅 문제로 인해 발생합니다. 이는 배선으로 인해 발생합니다 AllowedIPs=0.0.0.0/0.

이 줄은 AllowedIPs=0.0.0.0/0Linux 게스트에게 기본 경로가 VPN 터널을 통과함을 알려줍니다. 이는 포트 전달을 통해 들어오는 모든 인터넷 트래픽이 VPN 터널을 통해 응답된다는 의미입니다.

로컬 트래픽이 작동하는 이유는 Linux 게스트와 동일한 네트워크에 있으므로 반환 트래픽이 어떤 네트워크에 응답해야 하는지 알 수 있기 때문입니다.

Wireguard 터널링을 활성화하려는 이유가 명확하지 않기 때문에 최종 솔루션에 대한 정확한 답변을 드릴 수 없습니다. 하지만 AllowedIPs좀 더 구체적인 네트워크로 변경해야 합니다 .

예를 들어, 네트워크로 향하는 패킷 AllowedIPs=100.81.66.0/24만 보내려는 경우입니다 . 100.81.66.0/24VPN을 통해 원하는 경로를 얻으려면 여러 네트워크를 쉼표로 구분할 수 있습니다.

관련 정보