在 CentOS 上出现 iptables 相关连接慢(比如 SSH 登录慢、访问服务慢、curl 慢等),通常不是 iptables 本身“处理慢”,而是规则设计或系统配置导致额外延迟。常见原因如下:
很多服务在连接时会做 reverse DNS:
UseDNS yes)-j LOG 或某些模块如果 DNS 不通或慢,就会卡几秒。
✅ 检查 / 解决:
# SSH 登录慢
vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
systemctl restart sshd
iptables 是 顺序匹配,如果:
每个包都要遍历,造成延迟。
✅ 优化方式:
ipsetmultiport-j LOGCentOS 默认使用 state / ct 模块:
-m state --state ESTABLISHED,RELATED
如果:
nf_conntrack_max 太小会导致:
✅ 检查:
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
✅ 调优:
sysctl -w net.netfilter.nf_conntrack_max=524288
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=600
-j LOGLOG 会写内核日志:
✅ 建议:
LOG如:
limitstringownergeoip这些都会增加处理成本。
CentOS 7/8 默认是 firewalld → nftables / iptables
如果你:
会造成冲突和延迟。
✅ 检查:
systemctl status firewalld
✅ 排查:
ping -c 5 8.8.8.8
ping -c 5 www.baidu.com
-j LOGtcpdump 看卡在哪一步你可以贴出:
cat /etc/redhat-release)iptables -L -n -v我可以直接帮你指出是哪一条规则在拖慢连接。