Rootop 服务器运维与web架构

ip rule/ip route定义策略路由

ip rule 是 Linux 下的一个命令,用于管理和查看路由策略数据库 (RPDB, Routing Policy Database)。
它允许管理员定义基于各种选择条件(如源地址、目的地址、接口等)的路由规则。
以下是 ip rule 命令的一些常用参数及其解释:

# 常用参数
add:添加一条新的路由规则。
del:删除一条现有的路由规则。
list 或 show:显示当前的路由规则。

参数解释
from [ADDRESS[/MASK]]:指定源地址或源地址范围。只匹配来自这些地址的数据包。可以是单个 IP 地址或 CIDR 范围。
to [ADDRESS[/MASK]]:  指定目的地址或目的地址范围。只匹配发送到这些地址的数据包。可以是单个 IP 地址或 CIDR 范围。
iif [NAME]:		   指定入接口。只匹配从该接口接收到的数据包。接口名例如 eth0。
oif [NAME]:		   指定出接口。只匹配将从该接口发送出去的数据包。接口名例如 eth0。
priority [PREFERENCE]:指定规则的优先级。数值越小优先级越高。规则按优先级顺序进行匹配。规则按从小到大的顺序进行匹配。
table [TABLE_ID]:	   指定路由表。数据包匹配此规则后,将在指定的路由表中查找路由。默认路由表 ID 为 main (254), local (255), default (253) 等。
fwmark [MARK]:		   指定防火墙标记。只匹配带有该标记的数据包。由 iptables 或 nftables 设置的数据包标记。
uidrange [UID-START-UID-END]:匹配数据包的用户 ID 范围。例如, 0-65535。
sport [PORT[/MASK]]:  指定源端口或源端口范围。只匹配来自这些端口的数据包。可以是单个端口或端口范围。
dport [PORT[/MASK]]:  指定目标端口或目标端口范围。只匹配发送到这些端口的数据包。可以是单个端口或端口范围。
tos [TOS]:			   指定服务类型 (Type of Service)。只匹配带有此 TOS 值的数据包。TOS 值用来指定数据包的优先级。
ipproto [PROTOCOL]:   指定 IP 协议。只匹配使用该协议的数据包。例如, tcp, udp, icmp 等。

在方括号内的表达式(“[” 和 “]”之间的字符)是可选的(写命令时要去掉括号)。
在尖括号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉尖括号)。
省略号表示该选项可以单个或多个

# 添加规则
ip rule add from 192.168.1.0/24 table 100 priority 100
这条规则表示,来自 192.168.1.0/24 网络的数据包将根据路由表 100 的规则进行处理,优先级为 100。

# 删除规则
ip rule del from 192.168.1.0/24 table 100 priority 100
这条规则表示删除之前添加的规则。

# 显示当前规则
ip rule show
这条命令将显示当前的所有路由规则及其优先级和条件。

#####################################################################
linux中默认有3个路由表,local main default
[root@localhost ~]# cat /etc/iproute2/rt_tables 
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep

ip route show 默认就是打印的main表,等于ip route show table main
local表是本地路由表,ip route show table local,是系统配置的ip生成的路由信息。

ip route add 是用于向 Linux 内核的路由表中添加路由的命令。
它属于 ip 命令套件的一部分,该套件用于管理网络设备、路由、策略路由和隧道。
ip route add 命令有多种参数,可以配置路由的不同方面。以下是一些常见参数及其解释:

基本语法
ip route add [prefix] via [gateway] dev [device] [additional options]

常用参数及解释
prefix:				指定要添加的目标网络或主机。格式为 IP地址/子网掩码长度,例如 192.168.1.0/24 或 0.0.0.0/0(默认路由)。
via [gateway]:		指定路由数据包的下一跳网关 IP 地址。例如 via 192.168.1.1。这是数据包应通过的中间路由器。
dev [device]:		指定要通过的网络设备接口。例如 dev eth0。这用于指示数据包应发送到的物理或虚拟网络接口。
src [source-address]:	指定用于该路由的数据包的源地址。例如 src 192.168.1.100。这在多源地址环境中非常有用。
metric [value]:		指定路由的优先级(度量值)。度量值越小,优先级越高。用于在多条路由可用时确定使用哪条路由。
table [table_id]:	指定要添加路由的路由表。默认情况下,路由添加到主路由表(table 254)。
scope [scope]:		指定路由的范围。常用范围包括:
	global:			全球范围,适用于整个互联网。
	link:				链路范围,适用于直连网络。
	host:				主机范围,仅适用于特定主机。
proto [protocol]:	指定路由协议。常用协议包括:
	static:	静态路由。
	kernel:	由内核生成的路由。
	boot:		在系统启动时添加的路由。
	dhcp:		由 DHCP 获取的路由。
	onlink:		强制将目标视为直接连接,即使没有相关 ARP 条目。这在某些需要绕过常规 ARP 检查的情况下有用。
	nexthop:	指定多个下一跳以实现负载均衡或冗余。例如:

ip route add 192.168.1.0/24 nexthop via 192.168.1.1 dev eth0 weight 1 nexthop via 192.168.1.2 dev eth1 weight 2
weight:指定每个下一跳的权重,用于流量分配。

示例
添加到特定网络的路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
将发往 192.168.2.0/24 网络的数据包通过 192.168.1.1 网关,并使用 eth0 接口。


添加默认路由:
ip route add default via 192.168.1.1
将所有未知目的地的数据包发送到 192.168.1.1 网关。


添加主机路由:
ip route add 192.168.1.10/32 dev eth0
将发往 192.168.1.10 的数据包通过 eth0 接口。


添加带度量值的路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 metric 100
添加到 192.168.2.0/24 网络的路由,度量值为 100。


添加到特定路由表:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 table 100
将路由添加到 ID 为 100 的路由表。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5468.html

作者:Venus

服务器运维与性能优化

评论已关闭。