星期一, 十月 29, 2012

关闭Windows 7自动跃点功能实现指定多条默认路由选路顺序


在Win7下搭了个隧道,手动添加路由并设置了一个比较低的跃点数,开始使用的时候发现流量走隧道,但是过一会自动变成本地网卡。同样的设置在XP中从来没出现过。查资料后发现确实为Windows 7的(新)特性。
1. Windows 7下路由跃点值由两部分之和构成(设备跃点数和路由本身跃点数),所以当你用
netsh int ip add route 0.0.0.0/0 "Internet" 10.0.0.1 metric=10 public=yes store=active
这样的命令(或者route)添加路由时,再用route print看到的路由metric值并不是自己在命令中指定的值(比如上面的命令增加的路由metric可能为20)。这就是因为Win7给你指定的metric值上增加了设备本身metric。
2. 设备本身metric默认为自动生成,与此设备连接速度和带宽有关,而且使用过程中可能发生变化。这应该就是隧道时灵时不灵的原因了吧。
修改很简单,依次打开控制面板,网络和Internet,网络和共享中心,左侧找到更改适配器设置,找到本地网卡,右键点之,属性,选择IPv4,点属性,弹出对话框中点高级按钮,将自动跃点项前的对勾去掉,填入一个合适的值(如1000)。再用同样的方法修改隧道对应的适配器的跃点值(如100)。回来连接隧道上网,再不出现上网过程中路由自动改变的问题了。
这个方法同样适用于多网卡情况,有时需要用到多个网卡同时接入,但各有不同用途,就需要手动设置跃点(metric)值,可以参考官方论坛的文章。最后抱怨一下Win7这个功能,可能带来很大的问题,有时用户本来指望使用加密的VPN连接保护通信,结果因为其连接速度不如原生的本地网卡,在使用过程中由于Win7自动跃点,不知不觉所有流量改为通过本地网卡路由,结果数据在用户不知情的情况下变为明文传输。

没有评论: