Linux 网络参数配置教程:rp_filter 与 accept_source_route 实战说明
在多网卡服务器、路由转发、SDN、NFV 或特殊网络环境中,Linux 默认的网络安全策略有时会导致回包异常、流量被丢弃等问题。
本文通过一个实际示例,讲解如何配置 rp_filter 与 accept_source_route,以及临时配置与永久配置的正确方式。
一、相关参数说明
1️⃣ rp_filter(反向路径过滤)
作用:
-
用于防止 IP 欺骗
-
内核会检查数据包的源地址是否能通过该接口的路由表回去
常见取值:
-
0:关闭反向路径过滤(宽松,适合多网卡/策略路由) -
1:开启严格校验(默认,安全性高) -
2:宽松模式(较少使用)
多网卡或非对称路由场景中,通常需要关闭(设为 0)
2️⃣ accept_source_route(是否接受源路由)
作用:
-
控制是否接受 IP 包中携带的 Source Route 选项
常见取值:
-
0:不接受(默认,安全) -
1:接受(仅在特殊网络需求下使用)
⚠️ 开启源路由存在安全风险,仅在明确需要时使用。
二、临时生效的配置方式(立即生效,重启失效)
你提供的第一组命令属于运行时临时配置:
特点
-
立即生效
-
系统重启后失效
-
适合测试、排障、临时验证
适用场景
-
网络调试
-
快速验证是否为 rp_filter 导致的丢包问题
三、永久生效配置方式(推荐)
你给出的第二部分配置,本质是 sysctl 永久配置(即使你写在 rc.local 中):
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eno1.accept_source_route = 0
net.ipv4.conf.eno2.rp_filter = 1
net.ipv4.conf.eno2.accept_source_route =0
net.ipv4.conf.enp3s0f0.rp_filter = 1
net.ipv4.conf.enp3s0f0.accept_source_route = 0
⚠️ 注意问题点
这组配置与你前面的 echo 命令是完全相反的:
| 参数 | echo 设置 | sysctl 设置 |
|---|---|---|
| rp_filter | 0(关闭) | 1(开启) |
| accept_source_route | 1(开启) | 0(关闭) |
👉 这会导致:
-
运行中你关闭了 rp_filter
-
重启后又被 sysctl/rc.local 打开
-
网络问题“重启后复现”
四、正确的永久配置示例(与 echo 保持一致)
推荐方式:使用 /etc/sysctl.d/
创建配置文件:
写入以下内容:
立即生效:
五、验证配置是否生效
或直接查看:
原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/18537.html