因为工作需要,长时间的要拨入一个VPN,但在windows默认情况下拨VPN后会上不了网。经过检查发现是因为拨VPN后默认网关会变成VPN网关,但VPN服务器没有开中继上网的功能。
但是我们也还是有办法可以解决这个问题的。请跟我一步步来。
第一步。关闭VPN默认路由
在VPN属性中选择 网络-Internet协议(TCP/IP)-属性-高级,去掉“在远程网络上使用默认网关”的勾。
第二步。拨VPN,添加静态路由
连接VPN后在VPN连接的状态-详细信息 中找到客户端IP。
运行CMD,在命令行中输入route add 目标IP mask 子网 客户端IP,如:route add 1.1.1.1 mask 255.255.255.255 10.10.10.10
如果你的VPN连接IP是固定了的话到这里就可以了。在route add命令最后加上-p,这样就算重启也不会丢失。但是,现在绝大部分的VPN都不会是固定IP,怎么办?每次拨VPN都进行一下这样的操作,好麻烦的。不过好,windows系统有强大的批处理功能让计算机来自动处理这些事。
将以下代码另存为vpn.bat,执行这个就可以了
@echo off
rasdial VPN username password
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i 10.10') do set vpnip=%%i
route add Destination mask Netmask %vpnip%
代码说明:
第一行:关闭回显
第二行:拨入VPN,其中VPN换为你的VPN连接名称,username和password分别是用户名和密码
第三行:查看拨入的VPNIP并转为变量“vpnip”,将10.10替换为你拨VPN后获取的IP段
第四行:写入静态路由,将destination换为你需要访问的目标地址,也可以是网段,将netmask换为目标子网,也目标地址对就应,如果目录地址为单个IP,如1.1.1.1,那么子网为255.255.255.255,如果目标地址为网段,如1.1.1.0,那么子网为255.255.255.0
本文出自 “winters” 博客.