必须将 accept_source_route 显式设为 0,因其默认值可能被云镜像或系统升级重置为 1;该配置开启会允许攻击者绕过防火墙、伪造地址、实施中间人攻击,且不经过 iptables 日志,直接进入内核网络栈。

必须显式设为 0,不能依赖默认值——很多云镜像、容器环境或系统升级后会悄悄重置为 1。
为什么 accept_source_route=1 是高危配置
源路由允许发送方在 IP 头里指定转发路径,攻击者可借此:绕过防火墙规则、伪造私有地址发起反射探测、构造跳转链路实施中间人攻击。它不经过 iptables,不触发日志,直接进入内核网络栈前端处理——一旦开启,等于给 IP 层开了个后门。
常见错误现象:sysctl net.ipv4.conf.all.accept_source_route 返回 1,但业务看似正常,实则已暴露在源路由类攻击面下。
- 只改
all不够:新创建的接口(如 Docker 网桥、K8s CNI 接口)会继承default值,必须同步覆盖 - IPv6 同理:虽然多数场景 IPv6 源路由使用率低,但为防绕过,也应设
net.ipv6.conf.all.accept_source_route = 0和net.ipv6.conf.default.accept_source_route = 0 - 不要写进
/etc/sysctl.conf主文件:易被其他配置覆盖,推荐独立文件管理
临时生效与永久固化操作步骤
先验证当前状态,再执行配置:
临时关闭(立即生效,重启丢失):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 sudo sysctl -w net.ipv4.conf.default.accept_source_route=0
永久生效(推荐写入独立配置文件):
echo "net.ipv4.conf.all.accept_source_route = 0" | sudo tee /etc/sysctl.d/99-secure.conf echo "net.ipv4.conf.default.accept_source_route = 0" | sudo tee -a /etc/sysctl.d/99-secure.conf sudo sysctl -p /etc/sysctl.d/99-secure.conf
- 若已有
/etc/sysctl.d/99-secure.conf,用tee -a追加,避免覆盖原有安全参数 - 执行
sysctl -p时若报错“invalid key”,检查等号前后是否有空格、行尾是否有多余字符 - 某些发行版(如 RHEL/CentOS 8+)需额外运行
sudo sysctl --system确保加载所有.d/下配置
配套参数必须同步关闭,否则单点防护无效
源路由只是 IP 欺骗入口之一,攻击者常组合利用。以下参数应一并设为安全值:
-
net.ipv4.conf.all.rp_filter = 1:启用反向路径过滤,丢弃源 IP 不可达的包(发生在网络栈最底层,比 iptables 更早) -
net.ipv4.conf.all.accept_redirects = 0和net.ipv4.conf.all.send_redirects = 0:禁用 ICMP 重定向,防路由表劫持 -
net.ipv4.ip_forward = 0:非路由器角色必须关闭 IP 转发,否则可能被用作跳板 -
net.ipv4.conf.all.secure_redirects = 0:该旧机制已过时且易绕过,显式关闭更稳妥
验证是否全部生效,运行:
sysctl net.ipv4.conf.all.accept_source_route net.ipv4.conf.default.accept_source_route \
net.ipv4.conf.all.rp_filter net.ipv4.conf.all.accept_redirects \
net.ipv4.ip_forward | grep =
输出每行末尾都应为 = 0 或 = 1(仅 rp_filter 应为 1)。
最容易被忽略的是:default 值未覆盖导致新网卡(如 cni0、docker0)仍启用源路由;以及没刷新路由缓存,使部分旧状态残留。加固后务必用 cat /proc/sys/net/ipv4/conf/*/accept_source_route 扫一遍所有接口确认全为 0。


















