【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)

linux,环境,使用,route,指令,设置,多个,网络连接,优先级,通过,修改,路由表,默认,网关,条目 · 浏览次数 : 0

小编点评

**文章概述** 文章介绍了如何在多个网络连接的情况下设置网络优先级,以实现特定网站访问的优先级。文章首先介绍了route命令的作用以及它如何设置网络优先级。然后,文章介绍了设置默认路由优先级的方法,以及如何修改默认路由的优先级。最后,文章总结了文章中所介绍的所有内容。 **route命令简介** route命令用于显示和操作IP路由表。route命令可以用于添加和删除路由规则,以及查询路由信息。 **设置默认路由优先级** 在多个网络连接的情况下,设置默认路由优先级可以实现特定网站访问的优先级。文章介绍了设置默认路由优先级的方法,以及如何修改默认路由的优先级。 **修改默认路由的优先级** 在设置默认路由优先级之前,需要考虑以下因素: * 网络连接的优先级。 * 网络连接的可靠性。 * 网络连接的性能。 文章中介绍了如何设置不同优先级的路由规则,以及如何使用metric属性对默认路由进行调整。 **设置路由优先级示例** 以下示例展示了设置以太网和WIFI网络的优先级: ```bash route add -net 10.0.0.0 netmask 255.0.0.0 reject route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 ``` **结论** 文章介绍了如何在多个网络连接的情况下设置网络优先级,并使用route命令来实现特定网站访问的优先级。

正文

1. 背景

  在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接的网络进行互联网访问.如果我们想切换到另一个网络进行互联网访问,最粗暴的方法就是断开最先连接的网络,则操作系统会自动切换到另一个网络.对于PC只有两个网络连接这个粗暴的方案的是可行的,可是如果网络连接数大于2,并且我们想切换到其中任意一个网络进行互联网访问.总不能依次断开其它所有的连接吧,未免太繁琐.

  下面我们介绍如何使用route命令来设置网络的优先级,从而使用我们想要的网络来进行互联网访问.

2. route简单介绍

  route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。

2.1 常见命令格式

1) 添加和删除路由

  1. route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]
  2. 增加 (add) 与删除 (del) 路由的相关参数:
  3. (a) -net :表示后面接的路由为一个网域。
  4. (b) -host :表示后面接的为连接到单部主机的路由。
  5. (c) netmask :与网域有关,可以设定 netmask 决定网域的大小。
  6. (d) gwgateway 的简写,后续接的是 IP 的数值,与 dev 不同。
  7. (e) dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0

(2) 查询路由信息

  1. route -nee
  2. (a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
  3. (b) -ee:使用更详细的资讯来显示。

(3) 添加/删除默认网关路由

  1. route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}
  2. (a) IP-ADDRESS:用于指定路由器(网关)的IP地址。
  3. (b) INTERFACE-NAME:用于指定接口名称,如eth0
  4. 1:route add default gw 192.168.1.1 eth0
  5. 2:route del default gw 192.168.1.1 eth0

(4) 添加/删除到指定网络的路由规则

  1. route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
  2. (a) NETWORK-ADDRESS:用于指定网络地址。
  3. (b) NETMASK:用于指定子网掩码。
  4. (c) INTERFACE-NAME:用于指定接口名称,如eth0
  5. 1:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
  6. 2:route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0

(5) 添加/删除路由到指定网络为不可达

  1. 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
  2. route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject
  3. (a) NETWORK-ADDRESS:用于指定网络地址。
  4. (b) NETMASK:用于指定子网掩码。
  5. 1:route add -net 10.0.0.0 netmask 255.0.0.0 reject
  6. 2:route del -net 10.0.0.0 netmask 255.0.0.0 reject

3. 使用route命令来修改默认路由的优先级

  在多个网络连接的情况下,比如以太网和WIFI同时存在的时候,路由表中就会存在多个默认网关。我们在本机上进行测试结果如下(手机热点和实验室有线网络):

可以看到以太网enp4s0f1和WIFI网络wlp3s0的路由信息都自动生成了,而且存在两个默认网关。如果访问外网,系统会根据路由缓存信息和速度最优的原则,通过速度更快的网关进行访问。Linux系统支持对默认网关的优先级进行设置,这时需要用到mteric这个参数,metric为跃点数,当系统中有多个默认网关时,数据包会通过metric更低的接口传输。在上述截图中我们看到有线网enp4s0f1的优先级更高.下面我们就为enp4s0f1和wlp3s0设置优先级:

上述截图的操作是依次删除两个默认路由然后再重新添加这两条默认路由,在重新添加的时候制定两条路由的metric属性.以太网enp4s0f1的metric是100不变,我们将无线网wlp3s0的metric由600改成了99.这样无线网的metric就比有线网的低,相应的优先级就比有线网的高. 

上述指令执行完毕我们就可以看到网络连接的图标由

         变成了

这样我们就通过修改路由表中的默认网关条目实现了调整多个网络连接的优先级.

4. 结束语

  本来是打算解决PC有多个网络连接情况下如何指定访问某个特定网站(如github)的网络连接.因为在实验室经常出现github使用手机热点的网络连接特别快,有线网则是龟速,就想着能不能只在访问github的时候使用手机热点,其它情况依旧使用有线网.

  本来以为是一个很简单的问题,可是后面调研发现并没有可行的解决方案(也许是自己没找到),时间不允许继续在这个问题上纠结,只能退而求其次解决多个网络连接的优先级切换问题.

  个人觉得多网络连接情况下指定访问某个特定网站(如github)的网络连接还是很有实际需求的,后面有时间还会继续探索这个问题.

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux30870 人正在系统学习中

与【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)相似的内容:

【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)

1. 背景 在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接的网络进行互联网访问.如果我们想切换到另一个网络进行互联网访问,最粗暴的方法就是断开最先连接的网络,

[转帖]linux下如何避免rsyslog系统日志不停打印到console

背景:linux环境下,服务器由于某种异常导致rsyslog message不停打印到console控制台,影响我们正常使用。 ps:我遇见的场景: 解决办法:1. vim /etc/rsyslog.conf 2.找到“# Everybody gets emergency messages”后注释掉

[转帖]k8s系列-06-containerd的基本操作

https://www.jianshu.com/p/52a2884594f5 上一篇我们介绍了containerd的安装,本篇我们来简单介绍下如何进行使用。 环境 linux服务器 前置安装 躺过的坑,需要安装下面内容,否则执行ctr run的时候会报错如下: ctr: failed to crea

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]CygWin、MingW、MSYS之间的关系

https://www.jianshu.com/p/09198f6e0a3c 前言 在跨平台开发或移植中,经常会听说Cygwin、MingW、MSYS,他们之间是什么关系?对于将要完成的任务,应该选择哪一个环境? 异同对比 相同点: 都可以使用一些gnu相关的工具,使得原来在linux下的工具可以被

[转帖]修改jmeter内存配置(win&mac&linux)

目录 一、背景: 二、win环境下修改jmeter内存 三、mac&linux环境下修改jmeter内存 四、验证内存是否修改成功 一、背景: 在进行大数据、高并发压测的过程性,有时会遇上JMeter卡死现象,使得测试无法进行,查看日志显示:java.lang.OutOfMemoryError: J

[转帖]Linux环境使用apt-get安装telnet、curl、ifconfig、vim、ping等工具

https://www.cnblogs.com/east7/p/15834866.html 当在Linux服务器执行Telnet命令时,如果提示command not found: telnet,说明服务器上并未安装Telnet命令,需要安装此命令。下面介绍在linux服务器如何安装telnet、c

[转帖]Linux环境-常用命令-iftraf使用

Linux环境-常用命令-iftraf使用https://news.68idc.cn/jiabenmake/qita/20150318284332.html yuminstalliptraf-y查看每个IP实时流量iftraf-ieth0查看网络包大小iftraf-zeth0查看网口实时进出宽带if

[转帖]Linux 流量监控工具:iptraf-ng 的安装与使用

环境 Linux/Ubuntu 18.04 + 安装iptraf-ng-1.2.1,可编译安装,安装包链接:iptraf-ng-1.2.1.zip 解压iptraf-ng-1.2.1 unzip ./iptraf-ng-1.2.1.zip 安装ncurses(系统是ubuntu18.04) sudo

[转帖]Linux开发环境——SCL软件集

一、SCL简介 1、SCL简介 SCL(Software Collections)是一个CentOS/RHEL Linux平台的软件多版本共存解决方案,为RHEL/CentOS Linux用户提供一种方便、安全地安装和使用应用程序和运行时环境的多个版本的方式,同时避免把系统搞乱。 CentOS/RH