特定网络连接VPN后无法访问VPN内网主机——子网冲突问题求助
嘿,这个问题我之前帮朋友排查过,大概率是子网冲突在搞鬼!
你看,当你连接家里的WiFi/4G热点时,你的本地设备获取到的IP是192.168.0.124,而你要ping的VPN内网主机IP是192.168.0.217——俩地址在同一个子网段里!这就麻烦了:你的系统会认为192.168.0.217是本地网络里的设备,根本不会把数据包发到VPN隧道里,自然就ping不通了。而在咖啡店、朋友热点这些网络里,它们的子网段肯定和VPN内网不一样,所以路由不会混乱,就能正常访问。
给你几个解决办法,按优先级来:
改家庭热点的子网段(最推荐):
登录你的热点设备管理后台(一般在浏览器输192.168.0.1或192.168.1.1,账号密码通常在设备背面),找到LAN设置,把子网改成别的段,比如192.168.3.0/24或者10.0.0.0/24,保存重启后再连VPN试试,应该就能正常访问内网主机了。用VPN的拆分隧道功能(如果支持):
如果你没法改家庭网络的子网,看看你的VPN客户端有没有「拆分隧道」或者「自定义路由」的选项,手动设置只有VPN内网的IP段走VPN通道,本地的192.168.0.x流量还是走本地网络,这样就能避免冲突。不过这个得看你的VPN服务商有没有开放这个功能。临时测试验证:
你可以先开个其他手机热点,把手机热点的子网改成非192.168.0.x的段(有些安卓手机能在热点设置里改,苹果的话可能需要调整APN),然后连接这个热点再连VPN,要是能ping通192.168.0.217,就实锤是子网冲突的问题了。
你贴的ping输出也能佐证这个问题:
$ ping 192.168.0.217 PING 192.168.0.217 (192.168.0.217) 56(84) bytes of data. From 192.168.0.124 icmp_seq=1 Destination Host Unreachable From 192.168.0.124 icmp_seq=2 Destination Host Unreachable From 192.168.0.124 icmp_seq=3 Destination Host Unreachable ^C --- 192.168.0.217 ping statistics --- 4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3055ms pipe 3
这里提示从192.168.0.124(你的本地IP)返回目标不可达,说明系统根本没把数据包发去VPN,而是在本地网络里找这个IP,自然找不到。
备注:内容来源于stack exchange,提问作者mikesierr4

