Windows 10客户端VPN路由下共享文件夹访问异常问题求助
我遇到一个挺头疼的问题:我的Windows 10客户端通过VPN路由是正常工作的,ping、HTTP、Git这类请求都能走VPN接口,但唯独访问Windows共享文件夹不行——它总是走默认网关,因为我的客户端网关可以直接连接到共享文件夹服务器(地址是10.10.2.195)。
如果我删掉默认网关的路由,共享文件夹就能通过VPN访问了,但这样其他正常的外网访问就受影响了。我想问问有没有办法不用删除默认路由,就能让共享文件夹的流量也走VPN?
附上我的当前路由表(我已经尝试过修改路由metric,但对访问\\10.10.2.195无效):
C:\Windows\system32>route print =========================================================================== Interface List 16...........................Wintun Userspace Tunnel 12...00 0c 29 1e 70 58 ......Intel(R) 82574L Gigabit Network Connection 10...00 ff 7d 93 6c 4d ......TAP-Windows Adapter V9 1...........................Software Loopback Interface 1 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.139.2 192.168.139.134 375 0.0.0.0 128.0.0.0 10.71.0.9 10.71.0.10 281 10.10.1.0 255.255.255.0 10.71.0.9 10.71.0.10 281 10.10.2.0 255.255.255.0 10.71.0.9 10.71.0.10 27 10.71.0.0 255.255.255.0 10.71.0.9 10.71.0.10 281 10.71.0.8 255.255.255.252 On-link 10.71.0.10 281 10.71.0.10 255.255.255.255 On-link 10.71.0.10 281 10.71.0.11 255.255.255.255 On-link 10.71.0.10 281 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 128.0.0.0 128.0.0.0 10.71.0.9 10.71.0.10 281 171.244.61.115 255.255.255.255 192.168.139.2 192.168.139.134 281 192.168.139.0 255.255.255.0 On-link 192.168.139.134 281 192.168.139.134 255.255.255.255 On-link 192.168.139.134 281 192.168.139.255 255.255.255.255 On-link 192.168.139.134 281 218.54.150.0 255.255.255.0 10.71.0.9 10.71.0.10 281 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 10.71.0.10 281 224.0.0.0 240.0.0.0 On-link 192.168.139.134 281 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 10.71.0.10 281 255.255.255.255 255.255.255.255 On-link 192.168.139.134 281 =========================================================================== Persistent Routes: None IPv6 Route Table =========================================================================== Active Routes: If Metric Network Destination Gateway 1 331 ::1/128 On-link 10 281 fe80::/64 On-link 12 281 fe80::/64 On-link 10 281 fe80::58e:2793:89a2:3455/128 On-link 12 281 fe80::94df:f425:f6cc:f67b/128 On-link 1 331 ff00::/8 On-link 10 281 ff00::/8 On-link 12 281 ff00::/8 On-link =========================================================================== Persistent Routes: None
当我执行route delete 0.0.0.0 mask 0.0.0.0后,共享文件夹就能正常通过VPN访问了,但这显然不是长久之计,希望能找到更合适的解决方案。
解决方案建议
针对这个问题,核心原因是Windows的SMB协议(共享文件夹依赖的协议)可能优先使用了本地网关的路径,即使你已经配置了目标网段的VPN路由。这里有几个可行的解决办法:
1. 添加更精确的主机路由
既然共享文件夹服务器的地址是10.10.2.195,你可以添加一条主机级别的路由,强制这个特定IP的所有流量走VPN网关,这条路由的优先级会高于网段路由和默认路由。
以管理员身份打开命令提示符,执行:
route add 10.10.2.195 mask 255.255.255.255 10.71.0.9 metric 1 if 10
10.10.2.195是目标共享服务器IP255.255.255.255是主机掩码,确保只匹配这个单一IP10.71.0.9是VPN的网关(从你的路由表中看到的VPN网段网关)metric 1设置最低的优先级,确保这条路由最先被匹配if 10指定使用VPN接口(对应你路由表中的TAP-Windows Adapter V9的接口编号10)
如果希望这条路由重启后依然生效,可以加上-p参数:
route add -p 10.10.2.195 mask 255.255.255.255 10.71.0.9 metric 1 if 10
2. 调整VPN接口的metric值
从你的路由表看,本地网卡的默认路由metric是375,VPN的半默认路由(0.0.0.0 128.0.0.0)metric是281,而10.10.2.0网段的VPN路由metric是27,理论上这个网段的流量应该走VPN,但SMB可能有特殊处理。你可以尝试降低VPN接口的整体metric,让它的优先级高于本地网卡:
- 打开网络和共享中心,点击VPN连接的属性
- 切换到网络选项卡,选择Internet协议版本4 (TCP/IPv4),点击属性
- 点击高级,取消勾选自动跃点计数,手动设置接口跃点数为一个比本地网卡更低的数值(比如10,比本地的375低很多)
- 确认后重启VPN连接,查看路由表是否更新,再测试共享文件夹访问
3. 禁用本地网卡的SMB直接访问(可选)
如果上述方法都无效,你可以在本地网卡上禁用SMB协议,强制共享流量走VPN:
- 打开设备管理器,找到本地网卡(Intel(R) 82574L Gigabit Network Connection)
- 右键选择属性,切换到高级选项卡
- 找到SMB Direct相关的选项(不同网卡可能命名不同),设置为禁用
- 重启电脑后测试
备注:内容来源于stack exchange,提问作者MinhNV

