如何在Linux中路由过滤 Linux ip rule规则配置

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

在Linux中实现路由过滤和灵活的路由控制,主要依赖于 ip ruleip route 命令,结合策略路由(Policy Routing)机制。传统的路由表是基于目标地址的单一查找,而策略路由允许你根据源地址、接口、防火墙标记等多种条件选择不同的路由表,从而实现更精细的流量控制。

理解策略路由与ip rule的作用

Linux内核维护多个路由表,除了默认的 main 表外,还可以创建自定义路由表。ip rule 用于定义使用哪个路由表来查找路由,规则按优先级顺序执行。

规则匹配的常见条件包括:

  • 源IP地址(from)
  • 目标IP地址(to)
  • 入站接口(iif)
  • 防火墙标记(fwmark)
  • 优先级(priority)

例如,你可以让来自某个子网的流量走特定的网关,或让标记过的数据包使用独立的路由表。

配置自定义路由表

首先需要定义额外的路由表。路由表编号和名称的映射保存在 /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规则实现路由过滤

使用 ip rule add 命令添加策略规则,控制数据包使用哪个路由表。

常见用法示例:

  • 根据源地址选择路由表:
    ip rule add from 192.168.10.0/24 table custom_table priority 100
  • 根据防火墙标记选择路由表:
    先在iptables中打标记:
    iptables -t mangle -A OUTPUT -s 192.168.10.50 -j MARK --set-mark 0x1
    然后添加规则:
    ip rule add fwmark 0x1 table custom_table priority 200
  • 根据入站接口决定路由:
    ip rule add iif eth0 table custom_table priority 150

规则优先级数值越小,优先级越高。系统会按优先级顺序匹配规则,一旦匹配就停止。

查看与管理规则和路由

查看当前规则:

ip rule show

查看指定路由表的内容:

ip route show table custom_table

删除规则(按优先级):

ip rule del priority 100

临时规则在重启后会丢失。若需持久化,应将命令写入网络配置脚本,如:

  • 在 systemd 系统中使用 network-pre-up 脚本
  • 或在 /etc/network/interfaces(Debian)中使用 up 指令
  • 或使用 NetworkManager 的 dispatcher 脚本

基本上就这些。通过组合 ip rule、自定义路由表和 iptables 标记,你可以实现复杂的路由过滤和流量分流,比如多ISP出口、基于用户的路由、策略性旁路等场景。关键是理解匹配顺序和路由表选择逻辑,避免规则冲突。不复杂但容易忽略细节。


# linux  # ai  # 子网  # echo  # 接口  # default  # table  # debian  # 路由表  # 自定义  # 你可以  # 源地址  # 数据包  # 流量控制  # 还可以  # 多个  # 越高 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器如何保障网站安全无虞?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  做企业网站制作流程,企业网站制作基本流程有哪些?  Java类加载基本过程详细介绍  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  如何快速查询域名建站关键信息?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何快速完成中国万网建站详细流程?  详解CentOS6.5 安装 MySQL5.1.71的方法  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel Docker环境搭建教程_Laravel Sail使用指南  JS碰撞运动实现方法详解  android nfc常用标签读取总结  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  香港服务器部署网站为何提示未备案?  如何用美橙互联一键搭建多站合一网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  怎样使用JSON进行数据交换_它有什么限制  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  重庆市网站制作公司,重庆招聘网站哪个好?  北京的网站制作公司有哪些,哪个视频网站最好?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  ,网页ppt怎么弄成自己的ppt?  IOS倒计时设置UIButton标题title的抖动问题  详解Android中Activity的四大启动模式实验简述  网站制作壁纸教程视频,电脑壁纸网站?  如何用虚拟主机快速搭建网站?详细步骤解析  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何快速搭建高效服务器建站系统?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何快速重置建站主机并恢复默认配置?  如何在IIS中新建站点并配置端口与物理路径?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何在建站宝盒中设置产品搜索功能?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何在香港免费服务器上快速搭建网站?