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

article/2025/9/17 21:36:40

一、Iproute2简介

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

centos安装iproute2命令:

yum install -y iproute
ip -V

二、iproute2常用命令

在这里插入图片描述
net-tools和iproute2的大致对比:

net-toolsiproute2功能
netstat -r/route -nip route show查看路由信息
route addip route add添加路由
route delip route del删除路由
ifconfigip link显示up状态(激活状态)的网卡信息
ifconfig -aip addr show显示所有网卡的信息,包含未up的
ifconfig -sip -s link显示摘要信息
ifconfig -helpip -help查看帮助
ifconfig eth0 upip link set eth0 up启动网卡
ifconfig eth0 downip link set eth0 down停掉网卡
netstatss监控工具
netstat -lss -l查看listen监听状态的连接信息
iptunnelip tunnelip隧道
netstat -g/ipmaddrip maddr多播地址管理
arp -naip neigharp地址解析信息ip->mac地址

三、路由(ip rule、ip route)

3.1、路由策略(ip rule)

基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

ip rule 命令:

Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)

3.1.1、添加规则
1)Source IP

根据来源端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的来源端IP是192.168.182.10,就参考路由表10;如果来源端IP为192.168.182.0/24网段的IP,就参考路由表20。

ip rule add from 192.168.182.10 table 10  
ip rule add from 192.168.182.0/24 table 20 

2)Destination IP

根据目的端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的目的端IP是192.168.183.1,就参考路由表10;如果目的端IP是192.168.183.0/24网段的IP,就参考路由表20。

ip rule add to 192.168.183.1 table 10  
ip rule add to 192.168.183.0/24 table 20 

3.1.2、示例:

# 添加路由表
echo '1024    tab1' >> /etc/iproute2/rt_tables
# 通过路由表 tab1 路由来自源地址为192.168.182.0/24的数据包,优先级220
ip rule add from 192.168.182.0/24 table tab1 prio 220
# 把源地址为192.168.182.247的数据报的源地址转换为192.168.182.130,并通过表tab1进行路由
ip rule add from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320# 删除
ip rule del from 192.168.182.0/24 table tab1 prio 220
ip rule del from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320

在这里插入图片描述

我们执行ip rule show命令所显示内容的第一个字段就是优先级别(prio),数字越小,代表优先级别越高,也代表这条规则可以排得越靠前,如此数据包在进行条件匹配时,就会越早匹配到这条规则,从输出的数据中,默认优先级别0、32766及32767已被占用,因此,在添加规则时,如果没有特别设置优先级别,那么,优先级别默认会从32766开始递减,如32765、32764……,如果我们需要特别设置优先级别,可以在ip rule add命令的最后加上prio XXX参数。

3.2、路由表 (使用 ip route 命令操作静态路由表)

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。路由表根据其建立的方法,可以分为动态路由表静态路由表

linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

0: 系统保留表
253: defulte table 没特别指定的默认路由都放在改表
254: main table 没指明路由表的所有路由放在该表,**默认表**
255: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改

备注:我们使用ip route list 或 route -n 或 netstat -rn查看的路由记录,也都是main表中记录。

路由表的查看可有以下二种方法:

ip route list table table_number
ip route list table 1204
ip route list table table_name
ip route list table tab1

路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。路由表添加完毕即时生效,下面为实例(最好把默认路由最后添加):

ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1

默认路由需要特别注意,走默认路由的话会导致非同一子网内的访问失败

3.3、route 命令里面的metric是做什么用的?

metric 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

路由算法使用了许多不同的metric以确定最佳路径。复杂的路由算法可以基于多个metric选择路由,并把它们结合成一个复合的metric。常用的metric如下:
1)路径长度

【路径长度】是最常用的路由metric。一些路由协议允许网管给每个网络链接人工赋以代价值,这种情况下,路由长度是所经过各个链接的代价总和。其它路由协议定义了跳数,即分组在从源到目的的路途中必须经过的网络产品,如路由器的个数

2)可靠性

可靠性,在路由算法中指网络链接的可依赖性(通常以位误率描述),有些网络链接可能比其它的失效更多,网路失效后,一些网络链接可能比其它的更易或更快修复。任何可靠性因素都可以在给可靠率赋值时计算在内,通常是由网管给网络链接赋以metric值。

3)延迟

路由延迟指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络链接的带宽、经过的每个路由器的端口队列、所有中间网络链接的拥塞程度以及物理距离。因为延迟是多个重要变量的混合体,它是个比较常用且有效的metric。

4)带宽

带宽指链接可用的流通容量。在其它所有条件都相等时,10Mbps的以太网链接比64kbps的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接做路由不一定比经过较慢链接路由更好。例如,如果一条快速链路很忙,分组到达目的所花时间可能要更长。

5)负载

负载指网络资源,如路由器的繁忙程度。负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也是很耗费资源的。

6)通信代价

通信代价是另一种重要的metric,尤其是有一些公司可能关系运作费用甚于性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据而不采用昂贵的公用线路。

四、ip route基本用法

4.1、显示ip地址

ip a
ip address show
ip addr show dev ens33
ip a sh ens33

4.2、列出规则,查看表

ip rule
ip rule list
ip rule show

4.3、增加/删除/清空规则

# 增加规则
ip rule add from 192.168.1.10 table 10  
ip rule [del|delete]
ip rule del from 192.168.1.10 table 10
# 清空所有规则,没有参数
ip rule flush

4.4、列出路由

ip route list
ip route show
ip route
# 显示所有路由表的路由
ip route show table all

4.5、查看指定网段的路由

ip route list 192.168.182.0/24

4.6、添加路由

ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
# 添加默认路由
ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1

4.7、删除路由

ip route del 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
ip route del default via 192.168.182.2 dev ens33 proto static metric 100 table tab1

4.8、清空指定网络的路由

# 清空默认表路由
ip route flush
# 清空指定表路由
ip route flush table tab1
# 模糊匹配清空路由
ip route flush 192.168.182.0/24 
#这个是清理所有192.168.182.0/24相关的所有路由,
#有时候设置错网关存在多条记录,就需要一次性清空相关路由再进行添加

五、路由分类之动态路由

动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。它是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。

常见的动态路由协议有以下几个:

路由信息协议(RIP)、OSPF(Open Shortest Path First开放式最短路径优先)、IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)、边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。

六、ip route结合iptables做高级路由策略

1、创建路由表tab2

echo '1025    tab2' >> /etc/iproute2/rt_tables

2、添加 ip rule 规则

 ip rule add  fwmark 3  table tab2 

(fwmark 3是标记,table tab1是路由表tab1。 意思就是凡是标记了 3 的数据使用tab1 路由表)
3、添加路由规则

ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab2
# 添加默认路由
ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab2

4、使用iptables给相应的数据打上标记:

 iptables -A PREROUTING -t mangle -i ens33 -s 192.168.182.130-192.168.182.180 -j MARK --set-mark 3

因为mangle的处理是优先于 nat 和fiter表的,所以相应数据包到达之后先打上标记,之后再通过ip rule规则。对应的数据包使用相应的路由表进行路由,最后读取路由表信息,将数据包送出网关。

七、traceroute命令使用

7.1、简介

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在 Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

7.2、命令格式:

traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

命令参数:

-d 使用Socket层级的排错功能。-f 设置第一个检测数据包的存活数值TTL的大小。-F 设置勿离断位。-g 设置来源路由网关,最多可设置8个。-i 使用指定的网络界面送出数据包。-I 使用ICMP回应取代UDP资料信息。-m 设置检测数据包的最大存活数值TTL的大小。-n 直接使用IP地址而非主机名称。-p 设置UDP传输协议的通信端口。-r 忽略普通的Routing Table,直接将数据包送到远端主机上。-s 设置本地主机送出数据包的IP地址。-t 设置检测数据包的TOS数值。-v 详细显示指令的执行过程。-w 设置等待远端主机回报的时间。-x 开启或关闭数据包的正确性检验。
7.3、简单使用

1)不加任何参数

$ traceroute www.baidu.com 

输出:

traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets1  gateway (192.168.182.2)  0.094 ms  0.077 ms  0.044 ms  0.079 ms2  * * * *3  * * * *4  * * * *5  * * * *6  * * * *7  * * * *8  * * * *9  * * * *
10  * * * *
11  * * * *
12  * * * *
13  * * * *
14  * * * *
15  * * * *
16  * * * *
17  * * * *
18  * * * *
19  * * * *
20  * * * *
21  * * * *
22  * * * *
23  * * * *
24  * * * *
25  * * * *
26  * * * *
27  * * * *
28  * * * *
29  * * * *
30  * * * *

说明:

  • 记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送3个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。
  • 有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
  • 有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加**-n 参数来避免DNS解析**,以IP格式输出数据。
    2)跳数设置(-m)
$ traceroute -m 10 www.taobao.com

输出:

traceroute to www.baidu.com (183.232.231.174), 10 hops max, 60 byte packets1  gateway (192.168.182.2)  0.116 ms  0.095 ms  0.036 ms2  * * *3  * * *4  * * *5  * * *6  * * *7  * * *8  * * *9  * * *
10  * * *

3)显示IP地址,不查主机名(-n)

$ traceroute -n -m 4 www.baidu.com

输出:

traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets1  192.168.182.2  0.079 ms  0.039 ms  0.037 ms2  * * *3  * * *4  * * *

4)探测包使用的基本UDP端口设置8080(-p)

$ traceroute -p 8080 -m 4 www.baidu.com

输出:

traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets1  gateway (192.168.182.2)  0.096 ms  0.042 ms  0.067 ms2  * * *3  * * *4  * * *

5)绕过正常的路由表,直接发送到网络相连的主机(-r)

$ traceroute -r www.baidu.com

输出:

traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets
connect: Network is unreachable

6)把对外发探测包的等待响应时间设置为3秒(-w)

$ traceroute -w 3 -m 4 www.baidu.com

输出:

traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets1  gateway (192.168.182.2)  0.102 ms  0.065 ms  0.066 ms2  * * *3  * * *4  * * *

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

相关文章

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配置单个网关

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

ip route内容详解

------分割线------ 我们在k8s-calico2这个node上来看。执行ip r, 在这个node的路由中&#xff0c;需要我们关注的有&#xff1a; 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…

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

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

静态路由详细讲解

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

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

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

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

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

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

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

Excel打印针式打印机备货单

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

飞鹅打印机远程打印订单

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

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

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

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

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

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

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

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

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

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

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

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

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

VUE调用打印机打印页面

一个比较简单的方法 1.安装插件 npm install vue-print-nb --save 2.在main.js文件中引入 import Print from vue-print-nb Vue.use(Print); //注册 3.在div里写上id&#xff0c;这个div里所有的内容就都可以打印了&#xff0c;例如&#xff1a; <div id"printTest…

Java 导出Excel下拉框(多级级联)

1.创建工具类 package com.ztool.excel.select;import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.xssf.usermodel.*;import java…

基于POI和easyexcel实现excel文件读写-多列表加下拉选项框

实现概要&#xff1a;公司使用excel整理微服务基线&#xff0c;原来老的excel模板已经不适用&#xff0c;所以需要将微服务从老的excel转移到新的模板中&#xff0c;由于微服务数量较多而且都是重复的复制粘贴的工作&#xff0c;所以决定使用工具完成。 具体实现&#xff1a;使…

EXCEL如何设置下拉选项打勾 + 不正常选项拉红

Excel怎么制作能打勾叉的下拉菜单_360新知 (so.com) 首先&#xff0c;选中要设置的单元格&#xff0c;然后&#xff0c; 开始→条件格式→突出显示单元格规则→等于