首页/安全/安全加固速查/关闭 IP 转发(ip_forward=0)
主机加固基线90 条

关闭 IP 转发(ip_forward=0)

非路由/网关主机开启转发会被当作跳板利用:攻击者控制一台主机后可借其转发能力向内网横向探测;主机角色明确时应关闭。

安全加固速查安全更新于 2026-10-13

转发能力要按角色收敛

IP 转发让主机具备路由能力:非网关主机开启转发后,一旦被拿下,攻击者就能借它作为跳板向内网做横向探测和流量中转。主机角色明确时应当关闭(net.ipv4.ip_forward = 0)。但容器宿主、VPN 网关、NAT 服务器与路由设备必须保持开启,改错会立即中断转发业务。

基本信息

适用平台Linux(非路由器主机)
基线值net.ipv4.ip_forward = 0
风险等级中
IPv6 对应开关net.ipv6.conf.all.forwarding
生效方式写入 sysctl 配置后执行 sysctl --system

典型使用场景

  • 主机加固基线中的转发能力收敛
  • 排查被当作跳板使用的内网流量
  • 新装机统一收敛内核转发参数
  • 容器宿主机的参数冲突协调
  • 路由与网关设备的角色核对

核查与加固

核查与加固
sysctl net.ipv4.ip_forward                  # 查看当前取值
sysctl net.ipv6.conf.all.forwarding         # 单独查看 IPv6 转发开关
cat >> /etc/sysctl.d/99-hardening.conf <<'EOF'
net.ipv4.ip_forward = 0
EOF
sysctl --system                             # 重新加载全部配置
sysctl net.ipv4.ip_forward                  # 复核取值

检查项与判读

检查项含义判读
ip_forwardIPv4 转发是否开启非网关主机应为 0
all.forwardingIPv6 转发开关与 IPv4 独立,需单独处理
Docker 的 sysctl 文件容器运行时写入的配置与主机策略冲突时显式协调
生效来源最终生效的是哪个文件用 sysctl 复核实际值
主机角色是否为网关或容器宿主决定该项该取 0 还是 1
容器宿主(Docker、Kubernetes)、VPN 网关与 NAT 服务器必须保持转发开启:这类主机改错会立即中断容器网络与转发业务。
Docker 启动时会自动把 ip_forward 置 1 并写入自己的 sysctl 配置文件,与主机加固策略冲突时要显式协调,别让两边反复覆盖。
IPv6 转发是独立开关 net.ipv6.conf.all.forwarding,只处理 IPv4 会留下另一半暴露面。
确实需要转发的主机(例如自建跳板或内网代理)不要把开关打开就算完:还要在防火墙上限定允许转发的来源与目标网段,否则它依然是一台可以被滥用的跳板。

易错点

  • 在容器宿主机上照抄基线把转发关掉,容器网络当场中断
  • 只改 IPv4 的 ip_forward,IPv6 转发仍然开启,相当于只关了一半
  • Docker 自动写入的 sysctl 配置与主机加固文件互相覆盖,取值随机变化,排查时要确认最终生效来源
  • 只改运行时值不写配置文件,重启后配置回退
  • 不确认主机角色就统一下发加固模板,把网关或 NAT 服务器的转发功能一起关掉

数据来源与参考

  • CIS Linux Benchmark:Ensure IP forwarding is disabled
  • Linux 内核文档:ip-sysctl

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌