通过ip rule和自定义路由表实现策略路由,可基于源地址、接口、fwmark等条件进行流量控制,结合iptables标记与路由规则,实现多ISP出口、用户级路由等复杂场景的灵活管理。

在Linux中实现路由过滤和灵活的路由控制,主要依赖于 ip rule 和 ip route 命令,结合策略路由(Policy Routing)机制。传统的路由表是基于目标地址的单一查找,而策略路由允许你根据源地址、接口、防火墙标记等多种条件选择不同的路由表,从而实现更精细的流量控制。
Linux内核维护多个路由表,除了默认的 main 表外,还可以创建自定义路由表。ip rule 用于定义使用哪个路由表来查找路由,规则按优先级顺序执行。
规则匹配的常见条件包括:
例如,你可以让来自某个子网的流量走特定的网关,或让标记过的数据包使用独立的路由表。
首先需要定义额外的路由表。路由表编号和名称的映射保存在 /etc/iproute2/rt_tables 文件中。
编辑该文件,添加自定义表:
echo "100 custom_table" >> /etc/iproute2/rt_tables然后为这个表配置路由:
ip route add default via 192.168.2.1 dev eth1 table custom_table ip route add 10.0.0.0/8 dev eth0 src 192.168.2.100 table custom_table使用 ip rule add 命令添加策略规则,控制数据包使用哪个路由表。
常见用法示例:
规则优先级数值越小,优先级越高。系统会按优先级顺序匹配规则,一旦匹配就停止。
查看当前规则:
ip rule show查看指定路由表的内容:
ip route show table custom_table删除规则(按优先级):
ip rule del priority 100临时规则在重启后会丢失。若需持久化,应将命令写入网络配置脚本,如:
基本上就这些。通过组合 ip rule、自定义路由表和 iptables 标记,你可以实现复杂的路由过滤和流量分流,比如多ISP出口、基于用户的路由、策略性旁路等场景。关键是理解匹配顺序和路由表选择逻辑,避免规则冲突。不复杂但容易忽略细节。
以上就是如何在Linux中路由过滤 Linux ip rule规则配置的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号