Linux 多网卡环境下 rp_filter 与 accept_source_route 配置详解

Linux 网络参数配置教程:rp_filter 与 accept_source_route 实战说明

在多网卡服务器、路由转发、SDN、NFV 或特殊网络环境中,Linux 默认的网络安全策略有时会导致回包异常、流量被丢弃等问题。
本文通过一个实际示例,讲解如何配置 rp_filter 与 accept_source_route,以及临时配置与永久配置的正确方式


一、相关参数说明

1️⃣ rp_filter(反向路径过滤)

net.ipv4.conf.*.rp_filter

作用:

  • 用于防止 IP 欺骗

  • 内核会检查数据包的源地址是否能通过该接口的路由表回去

常见取值:

  • 0:关闭反向路径过滤(宽松,适合多网卡/策略路由)

  • 1:开启严格校验(默认,安全性高)

  • 2:宽松模式(较少使用)

多网卡或非对称路由场景中,通常需要关闭(设为 0)


2️⃣ accept_source_route(是否接受源路由)

net.ipv4.conf.*.accept_source_route

作用:

  • 控制是否接受 IP 包中携带的 Source Route 选项

常见取值:

  • 0:不接受(默认,安全)

  • 1:接受(仅在特殊网络需求下使用)

⚠️ 开启源路由存在安全风险,仅在明确需要时使用。


二、临时生效的配置方式(立即生效,重启失效)

你提供的第一组命令属于运行时临时配置

echo 0 > /proc/sys/net/ipv4/conf/eno1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eno2/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eno1/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/eno2/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/enp3s0f0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/enp3s0f0/accept_source_route

特点

  • 立即生效

  • 系统重启后失效

  • 适合测试、排障、临时验证

适用场景

  • 网络调试

  • 快速验证是否为 rp_filter 导致的丢包问题


三、永久生效配置方式(推荐)

你给出的第二部分配置,本质是 sysctl 永久配置(即使你写在 rc.local 中):

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eno1.rp_filter = 1
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/

创建配置文件:

vim /etc/sysctl.d/99-custom-network.conf

写入以下内容:

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 1
net.ipv4.conf.eno1.rp_filter = 0
net.ipv4.conf.eno1.accept_source_route = 1
net.ipv4.conf.eno2.rp_filter = 0
net.ipv4.conf.eno2.accept_source_route = 1net.ipv4.conf.enp3s0f0.rp_filter = 0
net.ipv4.conf.enp3s0f0.accept_source_route = 1

立即生效:

sysctl –system

五、验证配置是否生效

sysctl net.ipv4.conf.eno1.rp_filter
sysctl net.ipv4.conf.eno1.accept_source_route

或直接查看:

cat /proc/sys/net/ipv4/conf/eno1/rp_filter
cat /proc/sys/net/ipv4/conf/eno1/accept_source_route

原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/18537.html

(0)
admin的头像admin
上一篇 2025年12月26日
下一篇 2025年12月26日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

QQ
分享本页
返回顶部