【转帖】奇淫技巧 | route命令设置网络优先级
奇淫技巧 | route命令设置网络优先级
https://blog.csdn.net/DynmicResource/article/details/120134745
1. 背景
在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接的网络进行互联网访问.如果我们想切换到另一个网络进行互联网访问,最粗暴的方法就是断开最先连接的网络,则操作系统会自动切换到另一个网络.对于PC只有两个网络连接这个粗暴的方案的是可行的,可是如果网络连接数大于2,并且我们想切换到其中任意一个网络进行互联网访问.总不能依次断开其它所有的连接吧,未免太繁琐.
下面我们介绍如何使用route命令来设置网络的优先级,从而使用我们想要的网络来进行互联网访问.
2. route简单介绍
route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。
2.1 常见命令格式
1) 添加和删除路由
-
route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]
-
-
增加 (add) 与删除 (del) 路由的相关参数:
-
(a) -net :表示后面接的路由为一个网域。
-
(b) -host :表示后面接的为连接到单部主机的路由。
-
(c) netmask :与网域有关,可以设定 netmask 决定网域的大小。
-
(d) gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同。
-
(e) dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
(2) 查询路由信息
-
route -nee
-
-
(a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
-
(b) -ee:使用更详细的资讯来显示。
(3) 添加/删除默认网关路由
-
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
(4) 添加/删除到指定网络的路由规则
-
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
(5) 添加/删除路由到指定网络为不可达
-
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
-
-
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
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)的网络连接还是很有实际需求的,后面有时间还会继续探索这个问题.
【转帖】奇淫技巧 | route命令设置网络优先级的更多相关文章
- Gradle更小、更快构建APP的奇淫技巧
本文已获得原作者授权同意,翻译以及转载原文链接:Build your Android app Faster and Smaller than ever作者:Jirawatee译文链接:Gradle更小 ...
- 优化DP的奇淫技巧
DP是搞OI不可不学的算法.一些丧心病狂的出题人不满足于裸的DP,一定要加上优化才能A掉. 故下面记录一些优化DP的奇淫技巧. OJ 1326 裸的状态方程很好推. f[i]=max(f[j]+sum ...
- ASP.NET Core 奇淫技巧之伪属性注入
一.前言 开局先唠嗑一下,许久未曾更新博客,一直在调整自己的状态,去年是我的本命年,或许是应验了本命年的多灾多难,过得十分不顺,不论是生活上还是工作上.还好当我度过了所谓的本命年后,许多事情都在慢慢变 ...
- 12个实用的 Javascript 奇淫技巧
这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...
- NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)
NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...
- NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识
NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识 ARGUS 1月13日 发布 推荐 0 推荐 收藏 6 收藏,707 浏览 大家或许会有这种奇葩的需求...要是同一台主机上, 需要针对不 ...
- NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)
NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...
- Zepto源码分析(二)奇淫技巧总结
Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...
- javascript之奇淫技巧
最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~ //为兼容ie的模拟Object.keys() Object.showkeys = function(obj) ...
- BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&树状数组
点我看题 这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ 于是悄悄咪咪翻开题解了. 实际上两个数组可以看做一个数组 如 ...
随机推荐
- LeetCode 二分查找篇(69、33、704)
69. x 的平方根 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...
- 一个合格的CloudNative应用:程序当开源软件编写,应用配置外置
摘要:对于一个合格的CloudNative应用,应该把自己的程序当做开源软件来编写的,不该将数据库连接信息和密码放在代码里,一定要将配置外置. 对于一个合格的CloudNative应用,应该把自己的程 ...
- 华为云GaussDB两大数据库通过中国信通院多项评测
摘要:权威认可!华为云GaussDB两大数据库通过中国信通院多项评测. 本文分享自华为云社区<官宣!华为云GaussDB两大数据库通过中国信通院多项评测>,作者: GaussDB 数据库 ...
- Mac Maven环境变量配置 zsh: command not found: mvn
之前配过环境变量,但是后来打开还是报 zsh: command not found: mvn 需要在运行前先刷下环境变量 source ~/.bash_profile 每次使用前都刷一下比较麻烦,这是 ...
- Axure 自定义元件库
点击文件 -> 新建元件库 可以添加多个元件,并将期重命名 保存元件库 新建页面 添加元件,选择自建的元件库 导入后就会发现我的原件库 这样就可以使用我们自定义的元件库了
- 比 Python 快得吓人,PyPy 极简入门
众所周知 Python 有一个致命的缺点:速度比 C.C ++ 等语言慢很多.PyPy 恰好可以解决这一问题,它能够让 Python 代码运行得比 C 还快. 比如: import time from ...
- k8s--容器挂载 error: /proc must be mounted
问题描述: 登录容器,执行ps命令查看进程时,报错/proc挂载问题,如下图,按照图上所说在/etc/fstab 下添加,还是报错 思路: 可能是lxcfs挂了或者hang住了,具体要登录k8s节点实 ...
- PS 新建作业DUMP DBSQL_DUPLICATE_KEY_ERROR
1.CJ20N新建作业 在CJ20N中新建作业后,保存DUMP,报以下错误 2.相关NOTE 605584 - CN22: update termination when creating activ ...
- Spring 学习笔记(4)依赖注入 DI
本篇文章主要对 Spring 框架中的核心功能之一依赖注入 (DI,Dependency Injection) 进行介绍,也是采用 理论+实战 的方式给大家阐述其中的原理以及明确需要注意的地方. 相关 ...
- UVA 156 Ananagrams STL应用
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&prob ...