iptables 本身不能直接阻止 ip 欺骗,但可通过启用 rp_filter 反向路径检查、禁用源路由、封禁非法私有源地址及合理配置 ip 转发协同防御。

iptables 本身不能直接阻止 IP 欺骗(spoofing),但可以配合内核参数和针对性规则,有效拒绝来自私有地址的伪造源 IP 包——前提是这些私有地址本不该出现在外部接口的入向流量中。
启用反向路径检查(rp_filter)
这是防 spoofing 最关键的底层机制。它让内核验证:收到的数据包,其源 IP 是否能通过接收该包的同一接口“原路返回”。不满足即丢弃,无需 iptables 参与。
- 设为宽松模式:`echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter`(推荐生产环境起步值)
- 设为严格模式:`echo 2 > /proc/sys/net/ipv4/conf/eth0/rp_filter`(仅适用于对称路由环境)
- 务必同时设置 `all` 和具体外网接口(如 eth0),避免局部失效
禁用源路由选项
攻击者常利用 IPv4 源路由绕过常规检测。内核层面直接丢弃含该选项的包,比任何 iptables 规则都早、更彻底。
- 执行:`echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route`
- 同样建议同步关闭具体接口:`echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route`
- 该参数默认通常已是 0,但必须显式确认,不可依赖默认
iptables 封禁非法私有源地址
在 INPUT 或 FORWARD 链中,针对**外网接口入向流量**添加 DROP 规则,过滤明显不可路由的私有网段。注意:只用于外部接口,切勿应用在内网卡上。
- `iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP`
- `iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP`
- `iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP`
- `iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP`
- 补充:`-s 0.0.0.0/8`、`-s 224.0.0.0/4`(组播)、`-s 240.0.0.0/5`(保留地址)也应一并拦截
确保 IP 转发与策略协同
若主机作为网关,需开启转发,但必须限制转发来源合法;若仅为终端服务器,则应保持 `net.ipv4.ip_forward = 0`,避免被用作跳板。
- 查看当前状态:`sysctl net.ipv4.ip_forward`
- 终端服务器建议显式关闭:`echo 0 > /proc/sys/net/ipv4/ip_forward`
- 网关服务器开启后,FORWARD 链也需叠加上述私有地址 DROP 规则,并限定仅允许特定网段转发











