最近,学校的校园网不知为何总是偶尔抽风,虽然每次断网的持续时间不长,但这个中断也容易影响学习,每次断网后感觉很多工作无法进行了。但此时的校园无线网又是顺通无阻的,可惜无线网无法连接课题组的服务器。这篇文章就来探索一下鱼与熊掌兼得的解决办法。
一般情况下,我们不需要考虑有线和无线网卡的问题,只要任意一种能够联通网络即可。但是,如果你遇到了下面的这些情况,那么就需要考虑双网卡的问题了。
- 日常工作需要使用有线网连接内网服务器,但是有线网因为未知原因失去了互联网的连接因此无法同时查阅资料;
- 在校园正在通过有线连接使用校园网,但想要访问 Steam 或者 SciHub(这类网站一般被加入到黑名单了);
- 在公司有些私人的事情想要完成,但不想通过有线网访问被侦测流量。
而 WiFi 一般来说可以通过自己的手机作为热点,这样就能绕过很多部署在有线网络背后的限制和断流问题了。
通过例子认识原理
决定一个网络包(Package)通过哪个物理网卡(Interface)发送数据给其网关(Gateway),主要由路由(Route)中的这 3 个因素决定:
- 目标地址 (Destination)
- 掩码(Mask)
- 优先级 (Metric)
当一个网络包中的地址加上掩码正好等于目标地址的时候,则该网络包通过本条路由中的指定网卡发送给其网关处理。当然,同一个网络包有可能有多条路由均符合该匹配条件,机器会根据优先级依次判定路由,最长匹配先发送。
让我们用送快递的例子来解释这个原理。假设你是一个快递分拣中心的经理,你需要根据收件人的地址将快递(Package)分发到两个下级快递投递站。在这个例子中,我们可以将快递员看作物理网卡(Interface),将分拣中心和投递站看作网关(Gateway),而根据路线选择最佳交通工具和路径的过程就是路由(Route)。假设你有两个交通工具(Interface):电动车(Metric = 1)和小汽车(Metric = 2),以及两个下级投递站:京海市总投递站(Mask:京海市)和京海市青华区投递站(Mask:京海市青华区)。
假设你看到的收件人地址是京海市青华区养老院。那么,和投递站的掩码一匹配,就能发现应该投递往京海市青华区投递站;Metric 信息可以理解为,一般情况下,用小汽车投递会更快。
但现实情况下,有时候城市会限行,这种情况下就需要手动调整优先级用电动车来投递了。
普通人也能上手的路由修改方式
如果使用搜索引擎搜索「windows 使用双网卡上网」,网络上的文章大部分均指向使用管理员权限打开命令行,然后通过一系列的命令操作来更改路由。这种方式不仅需要熟悉命令行,也需要一定的网络知识。相信大多数人看到系统默认的终端就头疼。
我最后找到一款古老的 GUI 软件「NetRouteView」,它不仅能够浏览目前的路由信息,也支持更改路由。官网上面表示,该工具支持任何版本的 Windows 系统,从 Windows 2000 到 Windows 11。我在 Win10 下使用了很多次都运行良好。下图是该软件在我电脑下展示的一个路由信息。
这个路由表里,我们只关注 Connection Name 这一栏为以太网(Ethernet)和无线网(Wi-Fi)的路由项。在每个网卡下面,都包含了该子网中的路由信息,同时均有一条相对比较特殊的路由(下称默认路由),其目标地址和掩码均为 0.0.0.0,且该路由的优先级比同网卡下其它的路由项优先级都要低。默认路由是对网络包中的目的地址找不到存在的其他路由时所最终选择的路由。
我们通过手动分析路由表的优先级可以发现,以太网的默认路由的优先级比无线网的默认路由的优先级要高,因此当用户访问外网互联网时,会优先选择以太网的默认路由。然而,在本文的上下文里,有线网因为一些原因无法正确连接互联网,就造成了本文开头提及的问题。
因此,我们的解决方案也很显而易见了。我们需要让外网互联网请求优先走 WiFi 无线网的默认路由而不是有线网的默认路由。在 NetRouteView 这款软件里可以这么更改,选中默认路由右击编辑,将两个默认路由的优先级 Metric 互相对调1一下。以我图中的信息为例,将图中红色的 65 改为 55,然后将蓝色的 55 改为 65,就可以了。由于这两条默认路由的优先级均为各自网卡路由项的最低,因此修改它们并不影响那些内网服务的路由请求优先匹配。
这样一来,内网的有线连接不会受到影响,而外网的请求又会优先走无线连接,从而达成了我们的目标。如果优先网络恢复后,想要恢复原来的路由设置,除了可以再次交换两个默认路由的优先级以外,还可以重启电脑,该路由表的最后一栏 Persistent 表明了这些路由项均非持久化,重启后会即可恢复,所以即使修改出问题了也不怕。