OpenVPN改进
修改了下OpenVPN, 系统托盘图标的右键菜单增加”Pause”和 “Reume”项,可以暂停/恢复VPN连接,也可以双击托盘图标进行转换。
下载 openvpn_gui.rar 解压以后放入 Program Files\OpenVPN\bin 目录, 替换掉原来的openvpn_gui.exe
修改过的源代码:openvpn-gui-1.0.3.rar
是用GCC编译的,需要安装MingW 及 MSYS, 详细的说明可以参考源码目录里的readme
原理:
OpenVPN 在连接成功以后,会在系统里添加一块虚拟网卡,并修改默认路由的配置,使所有的数据导向虚拟网卡。所以当不需要VPN连接时,只需将默认路由改为原来的配置,要使用VPN连接时,再将默认路由改回。
其实比较完美的解决方法是使用一个HTTP Proxy,在本地网卡接收数据,再将数据通过虚拟网卡发送出去。而默认路由指向本地网卡。这样就不会影响其它连网程序的使用。可惜Windows的Socket好像没有SO_BINDTODEVICE或 SO_NOTROUTE的选项,无法指定数据包Outgoing的网络接口。
wal Said,
六月 30, 2010 @ 11:05:43
感谢楼主的分享,使用中发现了个问题
1、当有多个配置文件时,不能使用恢复暂停功能
2、另外就是当双击tray时会出现缺省路由丢失的问题,导致退出openvpn后系统不能正常访问网络,需要重新启动计算机或者修复网络才能恢复网络正常
希望博主能加以改进,非常感谢@!
wal Said,
六月 30, 2010 @ 13:41:47
在多配置的情况和使用代理上vpn的时候缺省路由可能不是按照route add 0.0.0.0 mask 0.0.0这样的,代理的情况下缺省路由并不发生变化,这时候就会出问题。