CentOS 下 iptables 变慢,通常不是“网络慢”,而是规则处理/查询慢或系统配置问题。下面按常见原因给你梳理,并给出排查和处理办法。
INPUT / FORWARD 链里几百、上千条规则-s / -d 单 IP 规则✅ 查看规则数量:
iptables -L -n -v | wc -l
✅ 优化方式:
multiportRETURN 提前退出✅ 建议:
ipset list
确认集合大小是否合理
✅ 查看:
dmesg | grep conntrack
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
✅ 优化:
sysctl -w net.netfilter.nf_conntrack_max=1000000
或在不需要跟踪的流量上:
iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
你执行:
iptables -L
很慢,但:
iptables -L -n
很快
✅ 原因:
✅ 解决:
iptables -L -n
CentOS 7+ 默认是 firewalld
firewalld 底层还是 iptables,但:
✅ 检查:
systemctl status firewalld
✅ 如果是纯服务器:
net.ipv4.ip_forward✅ 基础检查:
ethtool -k eth0
# 规则是否过多
iptables -L -n -v | wc -l
# 是否反向解析
iptables -L -n
# conntrack 是否满
dmesg | grep conntrack
# firewalld 是否在
systemctl status firewalld
你可以直接贴:
iptables -L -n | head -50
我帮你具体分析。