route
命令在Windows
环境下用于展示或操作IP
路由表。所谓路由表可以理解一条一条的路由信息,即路由表中含有网络周边的拓扑信息。路由表创建的主要目标是为了实现路由协议和静态路由选择。
0.背景
如果一个电脑上有双网卡,有时需要指定访问指定网段的时候用指定网络设备。一般情况下,windows能够自动选择合适的网络设备去访问不同的网段。但这次我遇到了一点不一样的问题。
我的网络环境如下:
有线网卡
ip 192.168.93.111 netmask 225.255.255.254 gateway 192.168.93.221
无线网卡
ip 192.168.91.7 netmask 225.255.255.0 gateway 192.168.91.1
我想通过有线网卡去访问192.168.5.22
,整个网络链路都是畅通的,我通过tracert
命令去跟踪路由,发现打印的第一个网关就是192.168.91.1
,这个说明是通过无线网卡去访问目标地址的,当然最后无法寻到目标地址。
tracert -d 192.168.5.22
通过查资料发现route
能设置路由的优先级,从而帮助我们解决问题。
1.route初体验
1.1命令说明
该命令执行必须拥有管理员权限,所以要用管理员运行cmd
```
命令格式
ROUTE [-f] [-p] [-4|-6] command [destination][MASK netmask] [gateway] [METRIC metric] [IF interface] ```
命令支持 print
,add
,delete
,change
可选项解释:
1.2查看路由表信息
可以通过route print
查看路由表信息
route print
运行此命令会展示接口信息,以及系统当前的IPv4和IPv6路由表
接口列表
根据打印信息我们可以看到有线设备的接口编号是49
,无线接口编号是11
ipv4路由表
-网络目标,表示目标主机
-接口,表示指定路由的接口地址
-跃点数,表示访问路由到目标网络的成本,即表示优先级,数字越大成本越高,优先级越低。
当然还有ipv6
的路由表,因为还没有用到,就不打印出来了,可以设置可选参数-4
只打印ipv4
的路由表信息。
route print -4
2.route更改优先级
2.1通过添加到目标主机的路由
确定目标主机地址,添加路由
route add 192.168.5.0 mask 255.255.255.254 192.168.93.221 if 49
一般来说添加此条路由规则以后就能按照指定网络设备去访问目标主机,但是如果存在另一条目标主机相同的路由,就可能不会按照你预想的路径去访问。这样跃点数METRIC
能起到作用。
2.2通过设置目标主机的优先级路由
route add 192.168.5.0 mask 255.255.255.254 192.168.93.221 metric 2 if 49
把METRIC
值设置的足够小,就能优先使用此条路由路径。但是也有例外,路由表的路由路径一般会设置目标主机0.0.0.0
的路由规则,有时候会针对所有的网络设备接口进行设置。这个可能会覆盖上面设置的路由规则。建议修改针对0.0.0.0
目标主机的路由规则。
```
修改路由信息
route change 0.0.0.0 mask 255.255.255.254 192.168.93.221 metric 2 if 49 ```
以上的命令都是临时有效的,重启电脑会失效的,要想永久生效,请使用可选参数-p
2.3设置metric的方法
建议参考微软官方文档
An explanation of the Automatic Metric feature for IPv4 routes
2.4其它设置方法
也许命令行对于非计算机专业领域的人群不是很友好,可以参考图形页面设置方法。
How to Change the Priority of Wired/Wireless Network Cards in Windows
3. route扩展
只打印匹配的项
route print 172*
删除指定路由
route delete 172.19.1.28
另外,如果添加无效的MASK
会产生错误。
4.实践操作
如果有外网和内网冲突,参照以下指令解决。以下方案的目标是外网优先,特殊设置内网访问的路由规则。
```
删除全部指向0.0.0.0的路由配置
route delete 0.0.0.0
添加永久的通过外网网卡访问所有目标地址路由规则
route add 0.0.0.0 mask 0.0.0.0 192.168.130.1 -p
添加永久的通过内网网卡访问指定目标地址的路由规则
route add 192.168.3.0 mask 255.255.255.0 192.168.93.225 -p ```