iproute2路由配置(ip rule、ip route、traceroute)
nanshan 2024-11-25 15:27 10 浏览 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 * * *
相关推荐
- F5负载均衡器如何通过irules实现应用的灵活转发?
-
F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...
- 映射域名到NAS
-
前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...
- 转发(Forward)和重定向(Redirect)的区别
-
转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...
- SpringBoot应用中使用拦截器实现路由转发
-
1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...
- 公司想搭建个网站,网站如何进行域名解析?
-
域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...
- 域名和IP地址什么关系?如何通过域名解析IP?
-
一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...
- 分享网站域名301重定向的知识
-
网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...
- NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...
- ForwardEmail免费、开源、加密的邮件转发服务
-
ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...
- 使用CloudFlare进行域名重定向
-
当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...
- 要将端口5002和5003通过Nginx代理到一个域名上的操作笔记
-
要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...
- SEO浅谈:网站域名重定向的三种方式
-
在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...
- 花生壳出现诊断域名与转发服务器ip不一致的解决办法
-
出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...
- 涨知识了!带你认识什么是域名
-
1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...
- 域名被跳转到其他网站是怎么回事
-
当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
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)