iptables本身不直接防范ip欺骗,需配合内核rp_filter(推荐设为1或2)实现反向路径检查,并辅以iptables规则封禁私有地址段(如10.0.0.0/8、172.16.0.0/12、192.168.0.0/16等)及连接限速,构成分层防御。

iptables 本身不直接“防范”伪造源 IP 的攻击,而是通过规则配置配合内核机制,实现对可疑流量的识别与拦截。真正起作用的是反向路径过滤(rpfilter)和显式匹配源地址合法性两类策略,而非单纯靠 NAT 或伪装功能。
启用反向路径过滤(推荐首选)
这是 Linux 内核原生支持的轻量级防护机制,能自动丢弃明显违背路由拓扑的入向包(即“非对称路径”包,常见于伪造源 IP 的扫描或反射攻击)。
- 临时启用:运行
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter - 永久生效:在
/etc/sysctl.conf中添加net.ipv4.conf.all.rp_filter = 1,再执行sysctl -p - 注意:若服务器有多网卡且路由不对称(如多出口、策略路由),建议设为
2(松散模式),即net.ipv4.conf.all.rp_filter = 2
用 iptables 显式拒绝私有地址/保留地址作为源
攻击者常伪造 RFC1918 私有网段(如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)或特殊地址(如 0.0.0.0、127.0.0.0/8、224.0.0.0/4)发起攻击。可在 INPUT 和 FORWARD 链中提前拦截:
iptables -A INPUT -s 10.0.0.0/8 -j DROPiptables -A INPUT -s 172.16.0.0/12 -j DROPiptables -A INPUT -s 192.168.0.0/16 -j DROPiptables -A INPUT -s 127.0.0.0/8 -j DROPiptables -A INPUT -s 0.0.0.0/8 -j DROPiptables -A INPUT -s 224.0.0.0/4 -j DROP
这些规则应放在通用 ACCEPT 规则之前,否则会被跳过。
限制新连接的源地址范围(适用于明确业务网段)
如果服务只面向特定子网(如办公网 192.168.10.0/24),可直接放行该段,其余全部拒绝:
iptables -A INPUT -p tcp --dport 22 -s 192.168.10.0/24 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j DROP
这样即使攻击者伪造了合法公网 IP,只要不在白名单内,也无法建立新连接。
结合 conntrack 识别异常连接行为
伪造源 IP 的 SYN Flood 攻击常表现为大量无状态的新连接请求。可通过限制单 IP 新建连接速率来缓解:
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j DROPiptables -A INPUT -p tcp --syn -m limit --limit 20/sec --limit-burst 50 -j ACCEPT
注意:这类限速需配合 conntrack 模块,确保内核已加载(lsmod | grep nf_conntrack)。
实际部署时,rp_filter 是基础防线,辅以源地址黑名单和连接速率控制,才能形成有效分层防御。单纯依赖 iptables 匹配源 IP 并不可靠——因为三层伪造包在到达本机前无法被验证,关键在于早拦截、少响应、不回包。











