我对 VPN 还不是很了解。我在家里设置了一个 OpenVPN 服务器,我以为在国外旅行时连接到该服务器,我就可以像在家里一样“虚拟”地使用互联网。然而,事实似乎并非如此,某些网站在国外无法访问。例如,当我的 VPN 连接处于活动状态时,Facebook 就无法访问。
思考原因时,我进行了跟踪路由测试,结果令人惊讶:traceroute facebook.com
在我国外的笔记本电脑上(启用 VPN),30 跳后不会终止(IIUC 表示复杂的我正在尝试从我的笔记本电脑获取到 facebook.com 的路由)。但如果我ssh
进入托管我的 VPN 服务器的机器并执行相同操作,它会在 11 个跳数后终止(这听起来很自然)。有趣的是,在这两种情况下,我的家用路由器(连接到互联网)都出现在列表顶部。
我的结论是,流量没有“完全”通过我的家庭 VPN 服务器进行传输。
作为参考,以下是我添加到客户端配置中的一些选项:
redirect-gateway def1 bypass-dhcp bypass-dns
dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4
mssfix 1300
更新:经过更多关注后,我发现 facebook.com 从我的笔记本电脑或 VPN 服务器解析为两个不同的 IP。
从我的笔记本电脑:
$ traceroute facebook.com
traceroute to facebook.com (10.10.34.35), 30 hops max, 60 byte packets
...snip...
但是从 VPN 服务器 (ssh):
$ traceroute facebook.com
traceroute to facebook.com (157.240.17.35), 30 hops max, 60 byte packets
...snip...
更有趣的是traceroute 157.240.17.35
从连接到 VPN 服务器的笔记本电脑通过 12 跳到达目的地,并且经过的节点与traceroute facebook.com
从 VPN 服务器经过的节点完全相同。
dhcp-option
因此,我得出结论,尽管客户端配置中有指令,但应该存在 DNS 问题。
我在网络管理器配置中手动指定了 Google DNS IP,问题已解决。
这是正常的吗?为什么网络管理器不考虑dhcp-option
指令?
答案1
为什么从服务器到 facebook.com 只需要 9 次跳转,而从我在国外连接到 VPN 的机器到 facebook.com 则需要超过 30 次跳转
不同之处在于的起点traceroute
。
连接到 VPN 后,traceroute
从您的计算机开始,到达您的 OpenVPN 服务器,然后从它一直到 Facebook 服务器。因此,路线自然会有些长且复杂。
当您在 OpenVPN 服务器上执行 SSH 控制台时,traceroute
将从服务器启动并遵循从服务器到 的路由Facebook
。因此,路由要短得多,因为 不会跟踪从您的计算机到 VPN 服务器的路径traceroute
。对于 SSH 隧道,这将被视为到 VPN 服务器的一跳。