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