Windows下的网卡分流

引子

身在学校,经常需要在限流校园网和宿舍宽带间反复横跳,每次都要手动切换甚是麻烦,因此研究了下Windows下的路由表,希望能一劳永逸的解决网络分流问题。

我的网络环境及需求如下:

  • 无线网卡连接校园网,有线网卡连接宿舍宽带。
  • ipv4通过有线网访问,ipv6通过无线网访问。
  • 校园网内部地址及部分外网地址通过无线网访问。

原理

Windows下的网络请求由路由表route管理,按照内置规则按ip地址对请求进行网卡分流。

使用route PRINT命令可以查看当前路由表规则。

网络目标网络掩码网关接口跃点数
0.0.0.00.0.0.0192.168.1.1(有线)192.168.1.10725
0.0.0.00.0.0.0183.172.240.1(无线)183.172.243.3155

当同一网络目标对应多个网关时,系统会按照跃点数(Metric)由低到高的优先级进行网关分配。可以注意到,由于系统默认将0.0.0.0分配至所有网关,因此所有ipv4地址都将通过跃点数较低的网关进行访问。

route命令提供的修改接口如下:

  • ADD添加规则

    1
    
    route ADD <网络目标> MASK <网络掩码> <网关> METRIC <跃点数>
    
  • DELETE删除规则

    1
    
    route DELETE <网络目标>
    
  • CHANGE修改规则

    1
    
    route CHANGE <网络目标> MASK <网络掩码> <网关> METRIC <跃点数>
    

添加-p命令可以永久更改,否则为临时更改,重启后失效。

实例

在上述的应用场景中,具体操作如下:

  • 首先删除默认规则

    1
    
    route DELETE 0.0.0.0
    
  • 添加ipv4缺省值

    1
    
    route ADD 0.0.0.0 mask 0.0.0.0 192.168.1.1 p
    
  • 针对单ip添加规则(以本站ip为例)

    1
    
    route ADD 104.224.179.29 mask 255.255.255.0 183.172.240.1 -p
    
  • 针对一组ip添加规则(以166.111.*.*为例)

    1
    
    route ADD 166.111.0.0 mask 255.255.255.0 183.172.240.1 -p
    

PRINTDEL命令中可以使用*通配符,但在ADDCHANGE中必须使用完整的目标地址。