linux环境设置默认路由的优先级
一、常见命令格式
-
添加和删除路由
1 route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev] 2 3 增加 (add) 与删除 (del) 路由的相关参数: 4 (a) -net :表示后面接的路由为一个网域。 5 (b) -host :表示后面接的为连接到单部主机的路由。 6 (c) netmask :与网域有关,可以设定 netmask 决定网域的大小。 7 (d) gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同。 8 (e) dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
-
查询路由信息
route -nee
(a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
(b) -ee:使用更详细的资讯来显示。
-
添加/删除默认网关路由
route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME} (a) IP-ADDRESS:用于指定路由器(网关)的IP地址。 (b) INTERFACE-NAME:用于指定接口名称,如eth0。 例1:route add default gw 192.168.1.1 eth0 例2:route del default gw 192.168.1.1 eth0
-
添加/删除到指定网络的路由规则
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME} (a) NETWORK-ADDRESS:用于指定网络地址。 (b) NETMASK:用于指定子网掩码。 (c) INTERFACE-NAME:用于指定接口名称,如eth0。 例1:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 例2:route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
-
添加/删除路由到指定网络为不可达
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。 route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject (a) NETWORK-ADDRESS:用于指定网络地址。 (b) NETMASK:用于指定子网掩码。 例1:route add -net 10.0.0.0 netmask 255.0.0.0 reject 例2:route del -net 10.0.0.0 netmask 255.0.0.0 reject
二、使用route命令来修改默认路由的优先级
在多个网络连接的情况下,比如以太网和WIFI同时存在的时候,路由表中就会存在多个默认网关。我们在本机上进行测试结果如下(手机热点和实验室有线网络):
可以看到以太网enp4s0f1和WIFI网络wlp3s0的路由信息都自动生成了,而且存在两个默认网关。如果访问外网,系统会根据路由缓存信息和速度最优的原则,通过速度更快的网关进行访问。Linux系统支持对默认网关的优先级进行设置,这时需要用到mteric这个参数,metric为跃点数,当系统中有多个默认网关时,数据包会通过metric更低的接口传输。在上述截图中我们看到有线网enp4s0f1的优先级更高.下面我们就为enp4s0f1和wlp3s0设置优先级:
上述截图的操作是依次删除两个默认路由然后再重新添加这两条默认路由,在重新添加的时候制定两条路由的metric属性.以太网enp4s0f1的metric是100不变,我们将无线网wlp3s0的metric由600改成了99.这样无线网的metric就比有线网的低,相应的优先级就比有线网的高. (上述指令执行完毕我们就可以看到网络连接的图标由 变成了
)。这样我们就通过修改路由表中的默认网关条目实现了调整多个网络连接的优先级。