VPN连上了但内网访问不了?一条路由命令解决
现象
VPN 连上了,图标也绿了,但内网地址就是打不开。
浏览器访问公司 OA(10.101.0.x)超时,SVN checkout 报无法连接主机,Ping 也全部丢包。
VPN 状态看着没问题,IP 也分配到了,但内网就像不存在一样。
排查
打开命令行看一眼路由表:
route print -4发现问题:路由表里根本没有 10.101.0.0/24 网段的路由。
VPN 客户端连接成功后,只添加了默认路由或 VPN 网关自身的路由,但公司内网的子网(10.101.0.0/24)没有被正确添加到路由表中。
也就是说,系统并不知道去 10.101.0.x 的流量应该走 VPN 的虚拟网卡,而是试图从物理网卡发出去 —— 物理网卡当然找不到公司内网,所以全部超时。
解决
手动加一条路由,告诉系统:要去 10.101.0.0/24 的流量,走 VPN 的网关出去。
# 先删掉可能存在的冲突路由route delete 10.101.0.0
# 添加持久路由route add -p 10.101.0.0 mask 255.255.255.0 10.105.8.1 metric 5 if 13参数说明:
| 参数 | 值 | 含义 |
|---|---|---|
-p | 持久化路由,重启后不丢失 | |
10.101.0.0 | 目标网络 | 公司内网段 |
mask 255.255.255.0 | 子网掩码 | /24 网段 |
10.105.8.1 | 网关 | VPN 虚拟网卡的网关地址 |
metric 5 | 跃点数 | 优先走这条路由 |
if 13 | 接口号 | VPN 虚拟网卡的接口索引 |
添加完成后,再访问内网 —— 秒开。
原理
VPN 连接本质上是在系统里创建了一张虚拟网卡(tap/tun 设备),并分配一个虚拟 IP(比如 10.105.8.x)。公司内网的数据包需要经过这张虚拟网卡加密后送到 VPN 网关,再由网关转发到内网目标。
但 VPN 客户端在连接时,只负责添加它知道的少量路由(通常是 VPN 网关本身的路由),并不会自动添加公司内网的所有子网路由。如果你的内网网段不在 VPN 客户端的”推送路由列表”里,就需要手动补上。
这条手动路由的含义就是:
凡是发往
10.101.0.1~10.101.0.255的数据包,不走物理网卡,而是交给虚拟网卡(if 13),通过 VPN 网关10.105.8.1转发。
如何找到自己的 VPN 网关和接口号
不知道 10.105.8.1 和 if 13 怎么来的?两步就能找到:
1. 找 VPN 虚拟网卡的网关地址:
VPN 连上后,执行:
ipconfig找到 VPN 虚拟网卡(通常叫 “以太网适配器” 或 “TAP-Windows Adapter”),看它的 默认网关 那一栏。那个地址就是你的 VPN 网关。
2. 找接口号:
route print找到 VPN 虚拟网卡对应的 if 编号(第一列的数字)。或者用:
netsh interface ip show interfaces更直观地看到每个接口的名称和 ID。
让重启也不失效
加 -p 参数(Persistent)后,路由会写入注册表,重启电脑也还在:
route add -p 10.101.0.0 mask 255.255.255.0 10.105.8.1如果想删除这条持久路由:
route delete 10.101.0.0写在最后
SSL VPN 的路由问题算是个老生常谈的坑。客户端只管”连上”,不管”连上后你能不能访问”。特别是公司内网有多个网段、或者用了非标准子网的时候,路由表缺条目的情况非常常见。
如果你也遇到 VPN 连上但内网访问不了的问题,可以按这个思路走一遍:
ipconfig找 VPN 虚拟网卡的 IP 和网关route print查看当前路由表- 确认缺少的目标网段
route add补上
一条命令的事,比折腾 VPN 客户端重装快多了。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!







