首页 > 代码库 > windows下配置路由,解决内外网同时上掉线的问题

windows下配置路由,解决内外网同时上掉线的问题

这是个最基本的网络知识了,可前些天遇到这个问题,发现快忘完了,就在这记下来吧。

基本原理

首先上两张图

正确的路由设置下的网络包流向



有两个默认路由设置的网路包流向



你的电脑同时连接内外网,会向不同的地址发送很多网路包,首先的机器上会缓存一个路由表,你的网卡根据这个路由表,决定你的网络包下一站的地址是哪。

正常情况下,访问特别网段地址都会设置路由,比如上图访问10.11.12.0/24段的包因为符合路由条件

10.11.12.0  255.255.255.0 10.11.12.1

因此,它会被导向到10.11.12.1这个网关地址,然后去找自己的目的的。

而那些没有符合的路由条件的包,则会一股脑的跑到默认路由的地址上去,即

0.0.0.0  0.0.0.0  192.168.1.1(默认网关)

但是,如果你的机器缓存中有两个默认网管,如下面那个图所示

那么那些本来找不到要去哪的包就会有两条路可走,即

一条0.0.0.0   0.0.0.0  192.168.1.1-----可正常找到百度谷歌的路

一条0.0.0.0    0.0.0.0   10.11.12.1-----找不到百度谷歌的路

所以,当你访问百度谷歌的时,有些请求包走着192.168.1.1的路,有些就会走另外一条。

走192.168这条路的包能因为包丢失,返回不了结果,走另外一条路的包则直接进了死胡同,直接被丢掉了。

所以,你的网路会出现,网络不稳定的情况。因为有时候一批包都走192.168那条路,你访问外网正常,一会一批包走错路了,你就又上不去外网了。

所以,在一台电脑上,只能设置一条默认路由,而这条默认路由是要能走通外网的网关。

而对于对内网地址的访问,你只需要针对你要访问的内网网段设置合适的路由,那么这些放回就不会因为找不到路而跑到默认网管上面去。

基本就是这个道理。


说下基本设置(windows环境下)

查看本地缓存路由表

cmd里面执行

route print
里面会有两种路由,临时路由和永久路由,临时路由是你重启就会消失的,而永久路由重启机器依然存在。

增加一条路由

route add  10.11.12.0(网络地址) mask  255.255.255.0(子网掩码)   10.11.12.1(网关地址)

删除一条路由

route  delete  10.11.12.0(网络地址)
改变一条路由

route  change  <span style="font-family: Arial, Helvetica, sans-serif;">10.11.12.0(网络地址) mask  255.255.255.0(子网掩码)   10.11.12.2(网关地址)

永久路由的问题

上面增加的路由为临时路由,若想使之变成永久路由,可在

route add  命令的最后使用参数   -p。

不过我这里不推荐增加永久路由,因为永久路由删除比较麻烦。而且你可以把你要增加的路由写进一个批处理文件中,每次双击执行就行了。

但是,如果你机器中已经存在了一条永久路由,要删除它,需要在注册表

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\PersistentRoutes]

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\PersistentRoutes]

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\Tcpip\Parameters\PersistentRoutes]

下找到对应的条目删除。

这个方法,我曾在xp系统上实验,都是每次直接成功,但在window 7系统实验的时候则遇到了些问题,没法顺利删除。

所以,还是不建议使用永久路由吧。

windows下配置路由,解决内外网同时上掉线的问题