我最近设置了我的 StrongSwan VPN,主要遵循以下方法DigitalOcean 指南。一切都运行良好,直到我遇到这个奇怪的路由问题。
网络图如下:
+-----------+ +-----------+ Internet +------------+ +-------------+
|VPN server |___|Router |. . . . . |WiFi gateway|___|Laptop |
|192.168.0.2| |192.168.0.1| |192.168.0.1 | |192.168.0.111|
+-----------+ +-----------+ +------------+ +-------------+
基本上,当我连接到与路由器具有相同 IP 地址(或相同网络)的 Wi-Fi 时,我将无法访问 LAN。当我尝试连接到192.168.0.XXX
笔记本电脑时,它会尝试访问 Wi-Fi 路由器网络后面的主机,而不是 VPN 服务器的网络。
我怀疑这是客户端的路由问题,但当我从 iOS 连接时我无能为力。
是否有服务器设置可以阻止这种行为?
答案1
在路由方面,如果您已经在子网 192.168.0.0/24 上,那么您将通过本地连接访问它,而不会路由到任何地方。您通常会执行的是公共 IP 地址上的 VPN 服务器,支持访问其后面的专用网络。
通过 VPN 服务器建立隧道,您可以有效地为自己在该网络上提供一个适配器 - 通过隧道。
如果两个网络使用相同的网络范围,那么您的系统就无法分辨哪些机器在哪里,并且通常会将本地连接识别为比远程连接成本较低,因此将所有网络流量发送到本地。
如何解决此问题?
它可能可以设置一个可以为您重新映射地址的客户端。
但是,您可能会发现在服务器上执行此操作更容易。在 VPN 服务器上设置第二个隧道,以访问不同的专用网络范围。然后在服务器上使用该范围定义一个适配器(根据您的设置,这可能很容易)。例如,您可以使用 IPTABLES 重新映射 IP 地址,但您可能还需要重新映射 ARP,这有点棘手。您可以使用 arptables(通常在负载平衡器环境中使用)。
所有这些都将会是大量的工作......