这个应用情境并不是很常见,不过可能有人会像我一样遇见(比如说这位老兄):你的电脑需要同时连接到两个网络,比如说像我的笔记本这样——一个是无线网卡连接的WIFI公有网络,一个是网卡连接到私有网络。比较。实际上这件事情并不怎么好,这意味着你的计算机很有可能变成公有网络和私有网络之间的一个桥梁,使得私有网络容易受到攻击。但有时候你必须这么做,可能因为你正好要做这样一个桥梁,比如用在内网与公共网络之间的安全中转。Windows在默认情况下对这种事情处理的不太好,通常只会使用两个网络中的一个,并且他会提示你使用两个网关是容易出问题的。但是如果你一定想要同时连接两个的话,怎么办呢?我尝试了很久,终于成功。下面用尽量简单的语言记述一下。
Windows下面有一个命令行程序负责处理这个事情,叫route.exe。在开始菜单里面点击“运行”,输入cmd,进入命令行窗口,输入route,回车,就可以看到这个命令了,会显示出一堆帮助。route就是路由的意思,表示Windows如何为自己选择网络信号发送的路由,route命令用来控制路由表。打印出来的路由可能是这样的:
0x1 ........................... MS TCP Loopback interface
0x2 ...00 21 5d 0b 3c ac ...... Intel(R) Wireless WiFi Link 5100 - 数据包计划程序微型端口
0x10004 ...00 1e 68 af 4f 44 ...... Broadcom NetLink (TM) Gigabit Ethernet - 数据包计划程序微型端口
==========......
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 171.22.105.254 171.22.105.188 25
0.0.0.0 0.0.0.0 192.168.0.254 192.168.0.103 20
......
127.0.0.0.....
Default Gateway: 192.168.0.254
0.0.0.0这一条代表默认网关,可以看到开启无线,插上网卡之后,系统里面就有两个默认网关了;Metirc可以理解为这个网关的优先级,数字越小越好。所以通常在插上网线之后,网线所连接的网络优先级要高于无线网络的优先级,也就是说无线网络被晾在了一边。
要改变这个情况,可以采取两个方式,一个是调整优先级。用route change命令:
最后那个if表示Interface,就是上面那个Interface List里面对应的数字,这样,无线网卡就优先了。或者还有一个方法,一劳永逸的删除网卡的默认网关:
比较推荐这样做,因为这样子就解决了Windows讨厌的两个网关的问题。
然后,如果我要访问特定的内部网络,怎么办呢?可以指定特殊的网段使用网卡:
这个表示192.168开头的网络都地址都通过网卡网络来走。这样就做到了普通访问走无线网络,私有网络走网卡了。说起来其实蛮简单的。
另外,Windows Server里面有一个蛮奇怪的东西,叫做Dead Gateway Detection(XP应该也有,因为这个是RFC中的一个东西),如果一个机器上有两个默认网关,在其中一个出现若干次数据连接失败之后,系统会自动切换到另外一个默认网关,并且是不考虑网关优先级的。最讨厌的是,他切换过去之后,不会自动切换回来。所以如果想要Server在内网/外网双网卡下稳定的工作,最好删掉次要的默认网关;除非两个网关都是外网,其中一个是另外一个的备份。
On this day/ 某年的这一天

2 Comments
X的,你搞定了这个问题;)
我的单位变态,linux系统无法上外网:(
我在linux下运行了一个windows虚拟机。
于是虚拟机可以上网,linux下可以ping通外网,但就是无法打开网页,无法rpm软件;(
已经为此郁闷了一年半了。
本以为要继续郁闷下去,可是现在你来了;)
Reply
ppip reply on May 2nd, 2010 10:29 am:
你也有类似的问题?
Reply
我可能再过几个月就去其他地方暂住几年
所以,不需要再被linux的上网问题而困扰了;)
Reply
ppip reply on May 9th, 2010 10:39 pm:
几年。。。难道你要到非洲去。。
Reply
Post a Comment