iproute2路由配置(ip rule、ip route、traceroute)
nanshan 2024-11-25 15:27 9 浏览 0 评论
一、Iproute2简介
Iproute2是一个在Linux下的高级网络管理工具软件。实际上,它是通过rtnetlink sockets方式动态配置内核的一些小工具组成的,从Linux2.2内核开始,Alexey Kuznetsov 实现了通过rtnetlink sockets用来配置网络协议栈,它是一个现代的强大的接口。
centos安装iproute2命令:
yum install -y iproute
ip -V
二、iproute2常用命令
net-tools和iproute2的大致对比:
net-tools | iproute2 | 功能 |
netstat -r/route -n | ip route show | 查看路由信息 |
route add | ip route add | 添加路由 |
route del | ip route del | 删除路由 |
ifconfig | ip link | 显示up状态(激活状态)的网卡信息 |
ifconfig -a | ip addr show | 显示所有网卡的信息,包含未up的 |
ifconfig -s | ip -s link | 显示摘要信息 |
ifconfig -help | ip -help | 查看帮助 |
ifconfig eth0 up | ip link set eth0 up | 启动网卡 |
ifconfig eth0 down | ip link set eth0 down | 停掉网卡 |
netstat | ss | 监控工具 |
netstat -l | ss -l | 查看listen监听状态的连接信息 |
iptunnel | ip tunnel | ip隧道 |
netstat -g/ipmaddr | ip maddr | 多播地址管理 |
arp -na | ip neigh | arp地址解析信息ip->mac地址 |
三、路由(ip rule、ip route)
1)路由策略(ip rule)
基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。
ip rule 命令:
Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)
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
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参数。
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)route 命令里面的metric是做什么用的?
metric 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
路由算法使用了许多不同的metric以确定最佳路径。复杂的路由算法可以基于多个metric选择路由,并把它们结合成一个复合的metric。常用的metric如下:
1、路径长度
【路径长度】是最常用的路由metric。一些路由协议允许网管给每个网络链接人工赋以代价值,这种情况下,路由长度是所经过各个链接的代价总和。其它路由协议定义了跳数,即分组在从源到目的的路途中必须经过的网络产品,如路由器的个数。
2、可靠性
可靠性,在路由算法中指网络链接的可依赖性(通常以位误率描述),有些网络链接可能比其它的失效更多,网路失效后,一些网络链接可能比其它的更易或更快修复。任何可靠性因素都可以在给可靠率赋值时计算在内,通常是由网管给网络链接赋以metric值。
3、延迟
路由延迟指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络链接的带宽、经过的每个路由器的端口队列、所有中间网络链接的拥塞程度以及物理距离。因为延迟是多个重要变量的混合体,它是个比较常用且有效的metric。
4、带宽
带宽指链接可用的流通容量。在其它所有条件都相等时,10Mbps的以太网链接比64kbps的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接做路由不一定比经过较慢链接路由更好。例如,如果一条快速链路很忙,分组到达目的所花时间可能要更长。
5、负载
负载指网络资源,如路由器的繁忙程度。负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也是很耗费资源的。
6、通信代价
通信代价是另一种重要的metric,尤其是有一些公司可能关系运作费用甚于性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据而不采用昂贵的公用线路。
四、ip route基本用法
1)显示ip地址
ip a
ip address show
ip addr show dev ens33
ip a sh ens33
2)列出规则,查看表
ip rule
ip rule list
ip rule show
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)列出路由
ip route list
ip route show
ip route
# 显示所有路由表的路由
ip route show table all
5)查看指定网段的路由
ip route list 192.168.182.0/24
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
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
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命令使用
1)简介
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在 Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
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 开启或关闭数据包的正确性检验。
3)简单使用
1、不加任何参数
$ traceroute www.baidu.com
输出:
traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets
1 gateway (192.168.182.2) 0.094 ms 0.077 ms 0.044 ms 0.079 ms
2 * * * *
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 packets
1 gateway (192.168.182.2) 0.116 ms 0.095 ms 0.036 ms
2 * * *
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 packets
1 192.168.182.2 0.079 ms 0.039 ms 0.037 ms
2 * * *
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 packets
1 gateway (192.168.182.2) 0.096 ms 0.042 ms 0.067 ms
2 * * *
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 packets
1 gateway (192.168.182.2) 0.102 ms 0.065 ms 0.066 ms
2 * * *
3 * * *
4 * * *
相关推荐
- 超详细!Linux文件和目录的10项属性
-
公众号:老油条IT记文件和目录10项属性目录1:索引节点:inode2:文件类型3:链接数4:用户5:组6:文件大小7.8.9:时间戳10:文件名1.Linux文件#概述#1.linux里一切皆为文件...
- 如何恢复 Linux 系统下被删除的文件 ?
-
丢失数据是任何用户都可能经历的最令人不安和痛苦的经历之一。一旦珍贵数据被删除或丢失,就再也找不不回来通常会引发焦虑,让用户感到无助。值得庆幸的是,有几个工具可以用来恢复Linux机器上被删除的文件...
- Linux文件系统操作常用命令
-
在Linux系统中,有一些常用的文件系统操作命令,以下是这些命令的介绍和作用:#切换目录,其中./代表当前目录,../代表上一级目录cd#查看当前目录里的文件和文件夹ls#...
- Linux系统下使用lsof工具恢复rm命令删除的文件
-
rm(Remove)和lsof(ListOpenFiles)是Linux命令行工具,直接操作文件系统。rm用于删除文件和目录;lsof用于查看进程打开的文件、网络连接、设备等信息。rm删除的文...
- Linux文件管理知识:文本处理
-
Linux文件管理知识:文本处理上篇文章详细介绍了Linux系统中查找文件的工具或者命令程序的相关操作内容介绍。那么,今天呢,这篇文章围绕Linux系统中文本处理来阐述。众所周知,所有Linux操作系...
- Linux基础运维篇:Linux磁盘与文件系统管理(第012课)
-
一、磁盘基础认知1.磁盘是什么在Linux系统里,磁盘就像是一个巨大的仓库,专门用来存放各种数据。电脑里的文档、图片、程序等,都储存在磁盘上。磁盘有不同的类型,常见的有机械硬盘(HDD)和固态硬...
- Linux系统中其他值得关注的病毒/恶意软件示例
-
Linux系统中其他值得关注的病毒/恶意软件示例,结合其传播方式、危害特征及清除方法进行整理。一、经典病毒家族1.Slapper特征:利用Apache的SSL漏洞传播的蠕虫病毒,可创建僵尸网络供攻击者...
- Linux磁盘爆满紧急救援指南:5步清理释放50GB+小白也能轻松搞定
-
“服务器卡死?网站崩溃?当Linux系统弹出‘Nospaceleft’的红色警报,别慌!本文手把手教你从‘删库到跑路’进阶为‘磁盘清理大师’,5个关键步骤+30条救命命令,快速释放磁盘空间,拯救你...
- Linux常用文件操作命令
-
ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...
- linux怎么编辑文件内容
-
在Linux中,你可以使用多种方法来编辑文件内容。以下是几种常用的方法:使用文本编辑器:你可以使用命令行下的文本编辑器,如vi、vim或nano来编辑文件。例如,使用vim编辑一个名为example....
- linux学习笔记——常用命令-文件处理命令
-
ls目录处理命令:ls全名:list命令路径:/bin/ls执行权限:所有用户ls–ala--alll–long-i查看i节点ls–i查看i节点命令名称:mkdir命令英文原意:m...
- Win10新版19603推送:一键清理磁盘空间、首次集成Linux文件管理器
-
继上周四的Build19592后,微软今晨面向快速通道的Insider会员推送Windows10新预览版,操作系统版本号Build19603。除了一些常规修复,本次更新还带了不少新功能,一起来了...
- 很少有人知道可以这样删除文件
-
有时候我们在格式化硬盘分区或者删除一些文件的时候,会出现无法操作的情况,例如下面这种这个文件权限问题,系统为了保护一些文件而采取的安全措施,如果你能确定文件是可能删除的,那你只要赋予它管理员权限,...
- linux中磁盘满了?一招教你快速清理
-
创作背景:当天部署服务时,发现无法部署,后来经过日志排查后发现服务器磁盘满了,查询资料后进行了清理。话不多说,直接上解决方法。操作一:1.查看磁盘大小:df-h2.直接在最上层进行排序:du-a...
- Linux下乱码的文件名修改或删除
-
查看文件名#lstouch1?.txt#ll-itotal1469445217956913-rw-r--r--1oracleoinstall0Jan18...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
解决Linux终端中“-bash: nano: command not found”问题
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)