本文所列内容在Vultr的VPS上面测试通过。
一般情况下我们不需要改动Windows系统的路由设置,设定一个网关就好了。但是不需要改动不代表它不存在,只有一个网关的情况下实际上默认路由表是所有目标数据都投递到网关去。
当我们有多条线路的时候,需要指定路由走向,那么就需要本文了 -_-#
首先纠正一下思维,国内的IDC行业门槛很低,所以像朋友说的,其实很多服务商只有“电脑城卖硬盘”的水平,所以圈子里流传着很多错误的说法和做法。比如服务器上居然敢装360……比如双线双IP环境需要两个网卡,这也是个错误。理论和事实都证实了,一个网卡就可以同时与若干个不同ISP的网络通信,所以需要双网卡的说法是没有依据的,有点无厘头……
当具有多个网关的时候,就需要指定某些数据进入某一条线路或者某一个网络,这被称为策略路由。举个例子,一台服务器同时与电信、网通进行物理直连,而不是跨网路由的话,就是一种情形。
Windows本身是支持策略路由的,策略路由的关键在于首先指定“小众”路由,然后做一个默认的“默认路由”,下面看模板:
先清理路由表(Windows需要) route -f 【中间是路由表内容】 最后默认路由 route -p add 0.0.0.0 mask 0.0.0.0 默认网关 shutdown /r /t 0
举个例子,假设网通的网关是2.2.2.2,电信的网关是1.1.1.1,移动的网关的3.3.3.3,首先在网卡属性的IPV4上面设置好各个网段的IP,默认网关只填写电信的。
然后路由表的内容是这样的:
route -f route -p add 网通IP段1 mask 255.255.255.0 2.2.2.2 route -p add 网通IP段2 mask 255.255.255.0 2.2.2.2 [其他网通IP段类同] route -p add 移动IP段1 mask 255.255.255.0 3.3.3.3 route -p add 移动IP段2 mask 255.255.255.0 3.3.3.3 [其他移动IP段类同] route -p add 0.0.0.0 mask 0.0.0.0 1.1.1.1 shutdown /r /t 0
按照例子中做成一个批处理,执行完会自动重启,不重启也会生效,但是Windows Server 2008和R2系统会断网,所以需要重启才能连上。策略路由的设置是一次性的,如果3个段的IP没有更改,那么以后是不用动这个设置的,重启也不会失效,如果有所改变,那么需要再次修改并执行这个批处理。
上面的例子是默认走电信路由,具体默认走向哪一条线路都没关系的,主要是看IP段的多少,因为执行这个命令还有点慢的,而电信的IP段最多,所以按照上面来做,性能会最高。还有个原因是,根据官方统计,实际上国内终端用户有超过85%是电信用户,再加上路由表不会是一个很精确的东东,更新也不会太及时,所以不管路由表做的正确与否,按照文中思路来默认走电信,都是效果最好的。
但是本文所提的方法也有个弊端,就是当一条线路失效的时候,这种方式是无法自动切换的,比如网通的线路挂了,那么送出去的网通IP段数据依然会送往网通线路,所以很明显的,网通的用户会无法与服务器通信。这个问题没有太好的办法,物理线路问题也不是操作系统能决定的了,后面一篇文章会提供一个有点另类的解决方法。
附:当某条线路临时维护或者其他什么原因需要暂时离线的话,可以参考下面的命令来临时调整:
切换移动 route change 移动IP段1 mask 255.255.255.0 3.3.3.3 route change 移动IP段2 mask 255.255.255.0 3.3.3.3 或者切换网通 route change 网通IP段1 mask 255.255.255.0 2.2.2.2 route change 网通IP段2 mask 255.255.255.0 2.2.2.2
本文内容在Windows XP/2003/2003 R2/2008/2008 R2上都测试通过,理论上Windows Server 2012也是可以的,但是没有测试过。