我将route IP_ADDRESS NETMASK net_gateway添加到OpenVPNconfiguration文件(本地),所以它不被服务器推送,它工作得很好。
但是,当我从configuration文件中删除路由行并重新连接到OpenVPN服务器时,它将保留在路由表中(根据Windows 7中的route PRINT (在cmd.exe中))。 这意味着OpenVPN不会删除以前生成的路由。
我想知道如何防止这一点。 我在下面添加了一个示例configuration文件(这不是特别的)。
client dev tap proto tcp-client resolv-retry infinite nobind persist-key persist-tun ca ca.crt comp-lzo verb 3 auth-user-pass route 192.168.1.100 255.255.255.255 net_gateway
Windows 7客户端机器很可能将IP条目caching在其ARP表或路由表中。 这篇Microsoft文章概述了Windows 7上的一些默认ARP行为http://support.microsoft.com/kb/949589 ,包括保留条目的默认时间。 为了testing这个假设,我将连接使用OpenVPN,断开连接,然后刷新ARP表,和/或刷新路由表,看看路线是否仍然存在。 如果它马上消失,看看需要多长时间,Windows 7才能在没有手动刷新的情况下删除路由。 如果是这样的话,那么你必须find一种方法,通过OpenVPN或Windows 7参数来修改路由/ ARP条目的默认生存期,或者刷新客户端上的OpenVPN断开连接表。
定义重新连接? 你如何重新连接?
您在configuration中使用了persist-tun ,这意味着隧道设备在标准重新加载期间保持运行。 由于界面永不停机,与之相关的路线永远不会消失。
persist-tun并将IP推送到客户端。 我在一个我关心的公司里有这样的设置,完美地工作。 这个解决scheme的基本思想是,Windows将在断开连接后取消configurationVPN接口,并在成功连接后重新configuration。 不需要pipe理员权限,没有隐藏的议程,这只是工作。 兼容性? 除了MacOS之外的一切。