我在使用 Cato VPN 客户端访问远程资源时遇到问题。我通过 VPN 连接的子网如下
192.168.1.0/24
192.168.2.0/24
...
我的家庭网络 wifi 接口/网络看起来像
wlp58s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.98 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::e306:14d0:1888:c6b7 prefixlen 64 scopeid 0x20<link>
inet6 2604:2000:12c1:c42a:0:a0c3:8dc2:729c prefixlen 128 scopeid 0x0<global>
inet6 2604:2000:12c1:c42a:14a4:c462:d46a:8396 prefixlen 64 scopeid 0x0<global>
inet6 2604:2000:12c1:c42a:8c06:b847:efda:159a prefixlen 64 scopeid 0x0<global>
ether 9c:b6:d0:d5:24:05 txqueuelen 1000 (Ethernet)
RX packets 1382636 bytes 1411037937 (1.4 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 354583 bytes 73040708 (73.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
当我尝试访问时,192.168.1.11
出现无法找到服务器地址 IP 的错误。我认为问题在于,该地址192.168.1.11
是在本地家庭网络上而不是通过 VPN 进行查找的。一种解决方案是将我的家庭网络更改为其他网络,192.168.7.0/24
但我想知道是否还有其他选择?
ip route
客户端处于活动状态时的输出是
default dev tun0
default via 192.168.1.1 dev wlp58s0 proto dhcp metric 600
45.62.183.62 via 192.168.1.1 dev wlp58s0
169.254.0.0/16 dev wlp58s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.1.0/24 dev wlp58s0 proto kernel scope link src 192.168.1.98 metric 600
192.168.1.4 dev tun0
无需 VPN 即可ip route
观看
default via 192.168.1.1 dev wlp58s0 proto dhcp metric 600
169.254.0.0/16 dev wlp58s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.1.0/24 dev wlp58s0 proto kernel scope link src 192.168.1.98 metric 600
答案1
您可以在中看到问题ip route
。数字 6 表示到所有 IP 地址的路由192.168.1.0/24
都在设备 上wlp58s0
。这优先于规则 1,规则 1 表示默认网关是tun0
(VPN)。您似乎已经正确诊断了问题。
通常情况下,VPN 不会使用如此常见的子网,因为这样很容易出现此类问题。如果您所处的网络无法控制 IP(例如公共 wifi),则无法使用 VPN。
最好的解决方案可能是将 VPN 子网更改为更独特的子网,10.X.Y.0/24
并设置防火墙规则,以便该子网可以访问远程192.168.1.0/24
子网。
如果该选项不行,您可以更改您的家庭子网,但这不是一个可移植的解决方案。
最后,您可以删除该规则:
192.168.1.0/24 dev wlp58s0 proto kernel scope link src 192.168.1.98 metric 600
这可以解决您的问题,但会让您无法访问本地子网。如果您对网络不太了解,手动修改路由表也是有风险的。