我已经在 Ubuntu 18.04 服务器上使用 strongswan 设置了 ikev2 VPN,并且我使用的是 Windows 10 Pro 1809 和内置的 vpn 客户端。
我可以正常连接到 VPN,几乎所有流量都通过 VPN 路由。如果我访问 ipchicken.com 或 whatismyip.com 等网站,它们会显示 VPN IP 地址。
但是,如果我尝试访问托管在同一台服务器上的反向代理,流量来自我的外部连接,而不是 vpn。这意味着我无法访问反向代理上仅限于本地 ip 地址的某些服务。
如果我直接通过服务器的 LAN ip 访问反向代理,那么流量就会通过 vpn。
是什么赋予了?
答案1
到您服务器的公共 IP 地址的流量必须通过互联网。否则 VPN 本身将无法工作。VPN 隧道无法使用自身到达服务器;这毫无意义。Windows 在协议方面不会有所区别;任何发往您服务器的公共 IP 的流量都将通过互联网路由。
您可以通过打开命令提示符并输入来查看路由表中的路由规则route print
。VPN 服务器的公共 IP 地址将被列为单一的高优先级路由。
要通过 VPN 访问您的服务器,您应该使用服务器的 IP 地址...
- 在 VPN 子网上
- 可从 VPN 子网网关路由
您发现服务器的 LAN IP 通过 VPN 传输。您的计算机将通过 VPN 发送此 IP,因为此 IP 不在您的本地 LAN 上,也不是服务器的公共 IP。服务器在 VPN 接口上看到此流量,并且作为 VPN 网关,服务器将其转发到远程 LAN*。然后,服务器在其远程 LAN IP 上看到远程 LAN 上的此流量并拾取它,将其转发到正确的应用程序。
* 请注意,Linux 非常聪明,可以跳过此步骤。它知道所有其他接口的 IP 地址,默认情况下将接受任何接口上它所拥有的任何 IP 的流量。