用批处理(bat)语言编写VPN自动拔号程序

首先:创建一个文本文件。
其次:在文本文件中输入如下代码:

  1. @echo off

  2. @Rem 用户名

  3. set user=xxx       //你的vpn用户名

  4. @Rem 密码

  5. set pass=xxx           //你的vpn密码

  6. @Rem 拨号文件名

  7. set NIC_name=VPN        //注意这个nic_name一定要和你创建的网络vpn连接的名字一样,否则无法连接成功

  8. echo 正在VPN连接...

  9. rasdial %NIC_name% %user% %pass%     //rasdial为自动拔号命令

  10. echo 已经连接.

  11. for /f "tokens=1* delims=:" %%i in ('ipconfig /all^|find "192.168.123"') do set ip=%%j   //过滤出ipconfig命令输出的信息包含192.168.230这个地址段的信息(这个ip段就是你连接vpn成功后vpn服务器分配的内网ip地址)

  12. echo %ip%

  13. route delete 0.0.0.0 mask 0.0.0.0 %ip% METRIC 1    //这句就是删除缺省指向vpn内网的路由

  14. route add 192.168.21.0 mask 255.255.255.0 %ip% METRIC 1    //以下是添加需要访问的内网地址段

  15. route add 192.168.13.0 mask 255.255.255.0 %ip% METRIC 1

前面的代码中都有相关参数的解析,这里就不多做介绍了,主要介绍一下如果配置将内网和外网数据分离,实现即可以上外网又可以访问公司内网(当然要保证你的本地是可以上外网的),以下代码中最后route部分就是解决这个问题的:

  1. route delete 0.0.0.0 mask 0.0.0.0 %ip% METRIC 1

这条命令的作用是删除vpn连接成功后自动创建缺省路由网关是指向vpn地址的那条缺省路由,后面的%ip%就是前面通过过滤ipconfig输出信息中包含vpn服务器分配的内网ip。删除这个缺省路由后,缺省路由的网关会自动切换到原来本地接口所指向的网关,这样就实现了所有数据都是通过本地的接口转发,而不是能过vpn通道来转发。有人就会问那启不是只能上外网又不能上内网了,也没有意义。没错,接下来就要添加可以通过vpn通道访问的公司内网的相应内网网段地址如下:

  1. route add 192.168.21.0 mask 255.255.255.0 %ip% METRIC 1

  2. route add 192.168.13.0 mask 255.255.255.0 %ip% METRIC 1

这段代码中就添加了192.168.21.0和192.168.13.0两个内网网段地址段,当然你还可以继续添加你想访问的公司内网地址段。
最后命名任意保存为.bat的文件,例:vpn.bat。


<< 上一篇

网络端口查找

下一篇 >>

内存不能只读