linux网络知识:路由策略(ip rule,ip route)

article/2025/9/17 21:37:32

目录

一,路由策略(使用ip rule命令操作路由策略数据库)

二,路由表(使用ip route命令操作静态路由表)

三, ip rule,ip route,iptables 三者之间的关系


一,路由策略(使用ip rule命令操作路由策略数据库)

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

ip rule命令:

Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)SELECTOR := [ from PREFIX 数据包源地址] [ to PREFIX 数据包目的地址] [ tos TOS 服务类型][ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]ACTION := [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 网络地址转换][ prohibit 丢弃该表| reject 拒绝该包| unreachable 丢弃该包][ flowid CLASSID ]TABLE_ID := [ local | main | default | new | NUMBER ]

例子:

#例子1:通过路由表 inr.ruhep 路由来自源地址为192.203.80/24的数据包
ip rule add from 192.203.80/24 table inr.ruhep prio 220 #例子2:把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由
ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320

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

0:匹配任何条件,查询路由表local(ID 255),该表local是一个特殊的路由表,包含对于本地和广播地址的优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。

32766:匹配任何条件,查询路由表main(ID 254),该表是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。

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

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

二,路由表(使用ip route命令操作静态路由表)

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据--路由表,供路由选择时使用,表中包含的信息决定了数据转发的策略。

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

0#表: 系统保留表

253#表: defulte table 没特别指定的默认路由都放在改表

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

255#表: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改

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

ip route list table table_numberip route list table table_name

路由表序号和表名的对应关系在 /etc/iproute2/rt_tables文件中,可以手动编辑,路由表添加完毕及时生效,实例如下:

#实例1:在一号表中添加默认路由为192.168.1.1
ip route add default via 192.168.1.1 table 1 #实例2:在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2
ip route add 192.168.0.0/24 via 192.168.1.2 table 1 

以下面的路由表为例,说明各个字段含义:

Destination    Netmask    Gateway          Interface    Metric
0.0.0.0    0.0.0.0    192.168.123.254    192.168.123.88    1 #缺省路由,目的地址不在本路由表中的数据包,经过本机的 192.168.123.88 接口发到下一个路由器 192.168.123.254
127.0.0.0    255.0.0.0    127.0.0.1    127.0.0.1    1        #发给本机的网络包
192.168.123.0    255.255.255.0    192.168.123.68    192.168.123.68    1 #直连路由。目的地址为 192.168.123.0/24 的包发到本机 192.168.123.88 接口
192.168.123.88    255.255.255.255    127.0.0.1    127.0.0.1    1        #目的地址为 192.168.123.88的包是发给本机的包
192.168.123.255    255.255.255.255    192.168.123.88    192.168.123.88    1 #广播包的网段是 192.168.123.0/24,经过 192.168.123.88 接口发出去
224.0.0.0    224.0.0.0    192.168.123.88    192.168.123.88    1             #多播包,经过 192.168.123.88 接口发出去
255.255.255.255    255.255.255.255    192.168.123.68    192.168.123.68    1 #全网广播包
Default Gateway: 192.168.123.254

三, ip rule,ip route,iptables 三者之间的关系

iptables:iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。

注:图中 “路由判断” 就是使用ip rule,ip route设置的规则,其中ip route配置的路由表服务于ip rule配置的规则。

以一例子来说明:公司内网要求192.168.0.100 以内的使用 10.0.0.1 网关上网 (电信),其他IP使用 20.0.0.1 (网通)上网。

  1. 首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关:ip route add default gw 20.0.0.1
  2. 之后通过 ip route 添加一个路由表:ip route add table 3 via 10.0.0.1 dev ethX (ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)
  3. 之后添加 ip rule 规则:ip rule add fwmark 3 table 3 (fwmark 3 是标记,table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表)
  4. 之后使用 iptables 给相应的数据打上标记:iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3

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

这里可以看出 Netfilter 处理网络包的先后顺序:接收网络包,先 DNAT,然后查路由策略,查路由策略指定的路由表做路由,然后 SNAT,再发出网络包。

欢迎订阅公众号【从零开始学无线】,一起学习交流!

                                                                        


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

相关文章

iproute2 命令详解

iproute2 命令详解 一、和netstat说再见二、篡权的ss三、被ip取代的命令 博客环境说明: 系统版本:CentOS Linux release 7.7.1908 (Core) yum源:阿里源 一、和netstat说再见 netstat命令详解点击这里查看 二、篡权的ss centos安装iproute2命令: yum ins…

linux之ip route命令

1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应…

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

一、相关概念 1. 路由(Routing) 路由是指设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。 2. 路由表(routing table) 所谓路由表,是指路由器或者其它互联网网络设…

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()这个是在模型层封装的方法 集体…