Linux系统route、ip route、ip rule简介

article/2025/9/17 21:38:53

一、相关概念

1. 路由(Routing)

路由是指设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程

2. 路由表(routing table)

所谓路由表,指路由器或者其互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量表中包含的信息决定了数据转发的策略。路由表根据其建立的方法,可以分为动态路由表和静态路由表。

Linux 2.x以上路由表由1~2^31范围内的数字或文件/etc/iproute2/rt_tables中的名称标识。其中,系统维护了4个路由表(0, 253, 254, and 255),其余管理员可自定义:

0#表:系统保留表

253#表:default table,是一个空表为一些后续处理保留的

254#表:main table,所有没指明路由表的路由保存在该表

255#表:local table,保存本地路由和广播路由,由系统维护

路由表序号和表名的对应关系在/etc/iproute2/rt_tables 文件中,可手动编辑。

3. 策略路由

策略路由是指按照用户制定的策略进行路由选择,是一种比基于目标网络进行路由更加灵活的数据包路由转发机制它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

4. 路由选择

当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:

(1) TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。

(2) 当计算完路由表中所有的路由项后:

(a) TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。

(b) 如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。

(c) 如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。

(d) 如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)

网络路由的优先级介于主机路由和默认路由之间,精度越高,优先级越高。

二、route

传统显示/操作内核IP路由表的工具(net-tools工具包的一部分),主要用途是通过接口设置到特定主机或网络的静态路由。

1. 查看路由表信息

-C

显示路由缓存

-v

显示详细的操作

-n

显示数字地址,不尝试确定主机名,加快显示速度

-e

使用netstat格式显示路由表

-ee

使用更详细的信息显示路由表

路由表输出项说明:

Destination

目标网络或目标主机

Gateway

网关地址”*”(如果未设置)

Genmask

目标网络的网络掩码255.255.255.255为主机,0.0.0.0为默认路由

Flags

路由标记,可能的标记包括

U--路由是活动的

H--主机路由

G--网关路由

R--恢复动态路由产生的表项

D--由路由的后台程序动态创建

M--由路由的后台程序修改

 ! --阻塞路由

Metric

路由距离,到达指定网络所需的跳跃数(linux内核没有使用

Ref

使用此路由的活动进程个数(linux内核没有使用)

Use

查找此路由的次数

Iface

该路由项对应的输出接口

2. 操作静态路由

命令格式:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

add

添加路由

del

删除路由

-net

目标是一个网络

-host

目标是一个主机

target

目标网络或主机,可以是IP地址或网络主机名

netmask NM

添加网络路由时用到的网络掩码

netmask匹配的位数越高该条路由匹配时的优先级也越高

gw GW

指定通过网关路由,后面接网关地址

metric M

设置路由的metric字段(路由跳数)它用在路由表里存在多个路由选择与转发包中的目标地址最为匹配的路由所选的路由具有最少的跃点数,故Metric值越小,优先级越高。

dev If

指定网络接口发送数据,如果dev If是最后一个选项,则dev可以省略

3. 应用实例

1)添加默认网关路由

route add default gw 192.168.7.1

2)删除默认网关路由

route del default gw 192.168.7.1

3)添加到指定网络的路由

route add -net 224.0.0.0/8 ens33

4)删除到指定网络的路由

route del -net 224.0.0.0 netmask 255.0.0.0 ens33

三、ip route

配置内核路由表中静态路由的工具,是iproute2工具包的一部分,可以和ip rule工具组合配置策略路由。

1. 命令格式

常见命令格式如下:

ip route { list | flush } SELECTOR
ip route 操作命令 匹配条件 [ via [ FAMILY ] ADDRESS ] [ dev STRING ]

ip route

查看默认路由表(main)路由

ip route {add|append}

添加新路由

ip route change

更改路由,修改当前存在的路由

ip route replace

更改或添加新路由

ip route {del|delete}

根据条件(to、tos、preference和table关键字值)删除指定路由

ip route {list|show}

显示路由表的内容或匹配特定条件的路由,缺省为显示main表

to SELECTOR--显示特定目的地的路由

table TABLEID--显示指定表的路由,TABLEID为路由表的id或all(所有路由表)、cache(路由缓存)其中之一

from SELECTOR--显示特定源的路由

protocol RTPROTO--显示指定协议的路由

scope SCOPE_VAL--显示指定作用域的路由

type TYPE--显示指定类型的路由

dev NAME--显示经过指定设备接口的路由

via [ FAMILY ] PREFIX--显示通过特定下一跳路由的路由

src PREFIX--显示通过特定上一跳路由的路由

ip route flush

删除特定条件的路由,参数同ip route show

ip route get ADDRESS

获取特定IP的路由包信息

【附录】

to TYPE PREFIX

路由目的地址,TYPE缺省为unicast,PREFIX缺省为0/0

metric NUMBER

路由跳数

preference NUMBER

路由权重

table TABLEID

将要操作的路由表

dev NAME

发送接口名称

via [ FAMILY ] ADDRESS

下一跳路由的地址,该字段取决于路由类型

src ADDRESS

指定使用特定源地址(多IP或多网卡情况),只对该主机产生的网络包有效

scope SCOPE_VAL

目的地作用域,SCOPE_VAL可以是数值或字符串(/etc/iproute2/rt_scopes),缺省时网关单播路由为global,直接单播和广播路由为link,本地路由为host

protocol RTPROTO

路由协议标记,RTPROTO可以是数值或字符串(/etc/iproute2/rt_protos),缺省时为boot,常见的有如下几种:

redirect--ICMP重定义创建

kernel--内核自动配置创建

boot--系统启动过程创建,路由进程启动后将被删除

static--管理员手动创建

ra--路由发现协议创建

FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]

TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local| main | default | all | NUMBER ]

SCOPE := [ host | link | global | NUMBER ]

RTPROTO := [ kernel | boot | static | NUMBER ]

2. 应用实例

1)显示路由

示例一:显示指定路由表的路由

ip route show table 10

示例二:显示指定网段的路由

ip route list 192.168.7.0/24

示例三:显示所有路由表的路由

ip route show table all

2)添加路由表

示例一:通过添加路由方式添加路由表

ip route add 192.168.11.0/24 dev ens33 table 100

注:table 100为不存在的路由表ID

示例二:通过配置文件方式添加路由表

echo "252 TEST" >> /etc/iproute2/rt_tables

注:252 为路由表ID,TEST为路由表名

3)添加路由

命令格式:ip route add TARGET [via GW] [dev IFACE] [src SOURCE_IP] [table TABLEID]

【注】TARGET可以是:

主机路由:具体IP地址

网络路由:NETWORK/MASK

示例一:添加默认路由

ip route add default via 192.168.7.1 table 10

示例二:添加到指定网络的路由

ip route add 192.168.11.0/24 via 192.168.7.1 metric 10 table 10

示例三:添加到指定主机的路由

ip route add 192.168.11.1 dev ens33

4)追加路由

ip route append 192.168.5.0/24 via 192.168.7.1

5)修改路由

方法一:

ip route change 192.168.2.0/24 via 192.168.7.2

方法二:

ip route replace 192.168.3.0/24 via 192.168.7.2

6)删除路由

命令格式:ip route del TARGET [via GW] [dev IFACE] [src SOURCE_IP] [table TABLEID]

示例一:删除指定表中默认路由

ip route del default table 100

示例二:删除特定网络路由

ip route del 192.168.5.0/24 via 192.168.7.1

示例三:删除指定表中特定网络路由

ip route del 192.168.1.0/24 table 100

7)清空路由表

示例一:清空所有路由表

ip route flush

示例二:清空指定网络的路由

ip route flush 192.168.2.0/24

三、ip rule

策略路由规则管理工具。Linux系统在启动时,内核会为路由策略数据库配置三条缺省的规则: 

1)优先级:0,匹配任何数据包,查询路由表local(ID 255)。local表是一个特殊的路由表,包含本地和广播地址的高优先级控制路由,使用者不应删除或重写它

2)优先级:32766,匹配任何数据包,查询路由表main(ID 254)。main表是包含所有非策略路由的常规路由表。管理员可以删除或用其他规则重写此规则

3)优先级:32767,匹配任何数据包,查询路由表default(ID 253)。default表是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理,可以删除此规则

1. 命令格式

ip rule [ list | add | del | flush] SELECTOR ACTION

常见操作如下:

ip rule add

插入新规则

ip rule {del|delete}

删除特定规则

ip rule flush

删除所有规则,没有参数

ip rule show

显示规则,list和lst等同于show,没有参数

常见匹配条件如下:

type TYPE (default)

选择规则类型匹配,共有如下几种类型:unicast、blackhole、unreachable、prohibit、nat

from PREFIX

选择源地址前缀匹配

to PREFIX

选择目的地址前缀匹配

iif NAME

选择要匹配的接收设备

oif NAME

选择要匹配的发送设备

fwmark MARK

选择fwmark值匹配

priority PREFERENCE

指定此规则的优先级,每个规则都有唯一优先级,preference和order等同于priority

table TABLEID

规则匹配时要查找的路由表标识

ACTION := [ table TABLE_ID ]

                   [ realms [SRCREALM/]DSTREALM ]

                   [ goto NUMBER ]

TABLE_ID := [ local | main | default | NUMBER ]

不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表就没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。

2. 应用实例

1)显示规则

命令格式:ip rule {show|list|lst}

输出说明:

a) 第一个字段表示规则的优先级,数字越小,表示优先级越高

b) 第二个字段表示匹配条件

c) 第三个字段表示表id,可能是表名或数值

2)添加规则

命令格式:ip rule add 匹配条件 [优先级] [表id]

【注】表缺省为main;优先级缺省从main或自定义最低优先级序号开始,然后依次递减,即优先级越来越高

示例一:添加IP段和目的IP策略路由

ip rule add from 192.168.7.0/24 to 8.8.8.8 prio 10 table 200

示例二:添加接收设备策略路由

ip rule add dev ens33 table 1

示例三:添加fwmark值策略路由

ip rule add fwmark 1

3)删除规则

命令格式:ip rule del [匹配条件] [优先级] [表id]

【注】匹配条件、表id、优先级可以同时指定其中一个或多个,如果缺省会按照优先级顺序,从最高优先级依次删除

示例一:根据优先级删除

ip rule del prio 10

示例二:根据匹配条件删除

ip rule del from 192.168.7.0/24 to 8.8.8.8

示例三:根据路由表id删除

ip rule del table 200

示例四:根据匹配条件、表id和优先级删除

ip rule del from 192.168.7.0/24 to 8.8.8.8 prio 10 table 200

四、参考资料

1. https://www.cnblogs.com/EasonJim/p/8424731.html

2. https://blog.csdn.net/u011857683/article/details/83795435


http://chatgpt.dhexx.cn/article/pfHP436J.shtml

相关文章

Linux 路由的添加删除-ip route

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux 路由的添加删除-ip route - joshua317的博客 一、路由查看 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default …

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)

一、iproute2 Arch LInux已经弃用了 net-tools,转而使用 iproute2。 iproute2提供 ip 命令行接口,用于管理网络接口,IP地址。路由表。 使用 ip 命令配置的信息会在系统重启后丢失,要进行永久配置,可以使用网络管理器…

Linux ip route 常用配置

Linux ip route 常用配置 路由: 路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器…

iproute2路由配置(ip rule、ip route、traceroute)

一、Iproute2简介 Iproute2是一个在Linux下的高级网络管理工具软件。实际上,它是通过rtnetlink sockets方式动态配置内核的一些小工具组成的,从Linux2.2内核开始,Alexey Kuznetsov 实现了通过rtnetlink sockets用来配置网络协议栈&#xff0c…

iproute2编译安装

1、下载iproute2 cd /usr/local/src/ git clone https://github.com/shemminger/iproute2.git稳定版本库 git://git.kernel.org/pub/scm/network/iproute2/iproute2.git 2、下载编译安装libmnl git clone git://git.netfilter.org/libmnl cd libmnl/ sh autogen.sh ./confi…

ip route配置单个网关

环境: 树莓派通过网线连接laptop,走eth0网卡,用于ssh远程树莓派连接wifi,走wlan0网卡,用于访问外网 需求: 现在要让树莓派同时连接两个网络,必须能通过wifi上外网,通过网线能用笔…

ip route内容详解

------分割线------ 我们在k8s-calico2这个node上来看。执行ip r, 在这个node的路由中,需要我们关注的有: 192.168.97.2 dev calic285cddbb40 scope link blackhole 192.168.97.0/26 proto bird 192.168.210.192/26 via 10.173.32.26 dev eth0 proto…

华为路由器静态路由协议配置

华为路由器配置静态路由 静态路由 静态路由,一种路由的方式,路由项)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态。一般来说&…

静态路由详细讲解

1.路由: 从源主机到目标主机的转发过程 2.路由器的转发原理: 根据路由表转发数据包,有路由条目则转发到下一跳; 无路由条目,则丢弃数据包,返回数据不可达信息。 3.路由表的形成 先添加直连网段路由&…

vue打印功能 手持终端打印小票,电脑连接打印机打印预览

最近的项目有手持终端打印小票和电脑连接诶打印机打印信息 方法有很多种的: 一. vue-print-nb 安装插件 1.安装插件 npm install vue-print-nb --save 2. 在main.js中引入安装的插件 import Print from vue-print-nb Vue.use(Print); 3.直接就可以在相应的页…

用计算机名共享打印机不能打印,共享打印机无法打印怎么办解决教程

在办公室使用共享打印机的时候,难免不遇到一些故障,比如共享打印机无法打印的问题,已经连接上打印机了,但使用它打印的时候就是不行,这时候我们要在自己的电脑上找原因,我们按下面的步骤操作来解决。 1、确…

如何在计算机上取消打印,打印机如何取消打印任务

打印机如何取消打印任务 如果文档正在打印过程中需要取消打印任务,则直接点击打印任务窗口中的“暂停”按钮即可取消打印任务。也可能通过点击Windows任务栏右下角的打印机图标来打开“打印任务”窗口,然后点击“暂停”按钮以暂停打印任务。 打印机如何取…

Excel打印针式打印机备货单

Excel打印针式打印机备货单 1. 进入控制面板2. 设置打印服务器属性3. 测试打印Excel5. 打印不全问题 得力打印机驱动下载官网:https://www.nbdeli.com/services/download.html 1. 进入控制面板 Win10: 快捷键:WinS 输入控制面板即可 2. 设…

飞鹅打印机远程打印订单

飞鹅打印机远程打印订单 1. 需求2. 打印机选型3. 飞鹅打印机添加4. 飞蛾打印机联网设置5. 测试打印6. 打印工具类代码7. 飞鹅打印机样式 1. 需求 当用户下完订单后,自动调用订单打印服务,然后打印订单信息。 就像饿了么、美团直接下完单之后会有语音播报…

计算机打印东西怎么横向打印机,打印机横向打印怎么设置,打印机不能横向打印...

在win10系统中该如何将打印机的默认打印方向变成横向打印呢?当我们经常打印的文档都是字数少,字体大的文档一般都会通过word将其制作成横向界面的纸张,但是每次在打印的时候都需要进行设置将反向设置为横向才可以,非常的麻烦&…

计算机打印机无法打印,电脑打印机无法打印怎么办 打印机无法打印解决教程...

我们可能对引起打印机不打印的故障原因有些了解,有打印机方面的,也有计算机方面的。以下分别进行介绍: 1.检查打印机是否处于联机状态。在大多数打印机上“OnLine”按钮旁边都有一个指示联机状态的灯,正常情况下该联机灯应处于常亮状态。如果该指示灯不亮或处于闪烁状态,则…

php通过js连接打印机直接打印PDF文件

一、前言: 1、最近公司项目需要连接打印机直接批量打印校准证书(PDF文件) 一、前提: 1、本地下载好LODOP并安装 2、电脑下载并安装打印机驱动 二、php代码 框架是yii2.0 getVerifyFile()这个是在模型层封装的方法 集体…

计算机打印机副机无法打印,局域网打印机无法打印怎么办 局域网打印机无法打印解决方法...

局域网打印机为什么不能打印呢?其实连接打印机的电脑直接打印和局域网内的打印机是不一样的,如果直接打印机电脑可以打印,说明问题出在网络上。如果打印机网络接口有问题,也是不能再局域网内进行打印的。还有一个情况是,在打印机…

手机如何连无线打印服务器,手机可以直接连接打印机打印东西吗?需要怎么做?...

根据我所知道的回答一下这个问题。 手机越来越有取代电脑的趋势,办公用手机、娱乐用手机、玩游戏用手机。不得不承认,手机给大家带来了很大的方便。如何不通过电脑,直接将手机里的东西打印出来呢,很多人有了这样的需求。这里就说一…

计算机打印机无法打印,电脑打印机无法打印怎么办 打印机不能打印解决办法...

电脑打印机无法打印怎么办?前面介绍过因为打印机服务没有启动所打印机无法正常的打印了,下面我们再来看一篇在打印机不能打印问题原因及解决办法。 第一、确认打印机安装是否正常 本地打印机无法使用,首先从先易后难的顺序来判断。要确认机器是否已经正确的安装了打印机。 我…