一、前言
日常维护工作中,有时候会遇到单台主机多张网卡的情况,尤其云上环境,云主机多张网卡是一种常见网络配置场景,那如何让多网卡正常工作呢,本期基于此北京,回顾下Linux策略路由的相关知识;

策略路由PBR:(Policy-Based-Route),也称为源路由,它是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。该技术打破了路由表的传统选路规则,可以根据管理维护人员自定义的策略条件(如源 IP 地址、源端口和协议类型)来选择性的转发数据包。Linux 使用 路由策略数据库 RPDB (Routing Policy DataBase,它是存放策略的数据库) 来实现基于策略的路由系统(policy based routing system)。RPDB 支持多个路由表RHEL 中,默认情况下的内核决定使用路由表是根据目标地址转发网络数据包,而基于策略的路由允许我们可以配置复杂的路由场景,比如当代系统网络服务NetworkManager,systemd管理的OS,比如:多网卡的情况,比如更自由灵活的网络策略需要场景,比如基于管理目的QoS需求或VPN拓扑结构中要求某些路由必须经过特定的路径的场景;但应用策略路由,须指定策略路由使用的路由图,这个路由图/表要事先定义号。
路由表/图存储关于网络的路由表信息。它们通过数值或名称标识,从Linux-2.2开始,内核把路由归纳到许多路由表中,这些表的编号数字的范围是1到255,可在 /etc/iproute2/rt_tables
文件中配置,默认情况下,所有的路由都会被插入到表main(编号254)中。在进行路由查询时,内核只使用默认路由表main。其中,一个路由图由很多条策略组成,每个策略都定义了1 个或多个的匹配规则和对应操作,规则用于根据数据包的特定属性选择路由表。当一个接口应用策略路由后,将对该接口接收到的所有包进行检查,而不符合路由图/表任何策略的数据包将按照linux内默认的路由策略转发进行处理,符合路由图中某个策略的数据包则按照该策略中定义的操作进行处理。
相关资源:RHOSP 动态路由、基于策略的路由、策略路由、Redhat KB、网络笔记、tutorials.com/docs/linux/man/8-ip-rule/" rel="nofollow" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; text-decoration-line: none; cursor: pointer; background-color: transparent; color: rgb(78, 161, 219); font-synthesis-style: auto; overflow-wrap: break-word;">routing policy database management
二、策略路由配置应用
2.1、策略路由种类
大体上分为两种:
目的地址路由:根据路由的目的地址来进行的策略;
源地址路由:根据路由源地址来进行策略实施

策略路由规则由三部分组成:
优先级,也就是0 32766 32767,数字越小优先级越高
条件,from all或者from 172.12.16.0/24
操作,lookup main或者lookup 231;确定数据包应该如何处理,如转发到特定的下一跳、阻止或允许传输等

2.2、策略路由工作原理
其中主要涉及rule和table2个域,那rule和table又是如何协作的呢?默认定义其中的规则会根据优先级依次遍历,直到决策出下一跳;我们可以使用ip route 命令来定义基于策略的现有路由配置;其中,Rhel中支持写入对应的接口静态路由文件:/etc/sysconfig/network-scripts/rule-enp1s0 ;另外,NetworkManager 支持 policy-routing,但尚不支持规则,规则必须由运行自定义脚本的用户进行配置。系统启动过程中NetworkManager 会检查 /etc/init.d/进行网络检查,因此可配置etc/init.d/network
脚本完成特定网络配置。
例如: 一个IP报文源地址是135.105.115.180, 目的地址是155.18.49.20,路由策略显示如下:
ip rule show #或ip ru ls查看策略路由;ip rule show可以查看当前RPDB中的规则
#第一列:表示该路由表被匹配的优先顺序,数字越小,越早被匹配。范围是0~32767。默认0、32766、32767三个优先级别已被占用。
#第二列:from,这里显示的是匹配规则,当前表示的是从哪里来的数据包,其中,
#From -- 源地址
#To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
# Tos -- IP包头的TOS(type of sevice)域
# Dev -- 物理接口
# Fwmark -- 防火墙参数
#第三列:loacl/main/default, 这些都是路由表名称,表示数据包要从那个路由表送出去。local表包含本机路由及广播信息,main表就是我们route -n看到的内容,default表,默认为空。
#每条策略路由的规则由一个选择器 和一个动作 组成,RPDB按照优先级顺序进行规则匹配,优先级数字越小越优先
0: from all lookup
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://zblog.hqyman.cn/post/10499.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏

微信支付宝扫一扫,打赏作者吧~
休息一下~~