温馨提示×

centos防火墙为何连接慢

小樊
37
2026-10-08 18:22:49
栏目: 智能运维

在 CentOS 上出现“防火墙连接慢”(例如 SSH 连接慢、服务访问卡顿)通常不是防火墙本身处理慢,而是与 firewalld / iptables 规则、DNS 解析、连接跟踪(conntrack) 等有关。下面按最常见原因逐一说明。


一、最常见原因:DNS 反向解析导致慢(尤其 SSH)

现象

  • SSH 登录慢(输入密码前等很久)
  • 某些服务连接慢,但通了之后正常

原因

CentOS 默认开启:

  • sshd 的 UseDNS yes
  • 防火墙本身一般不解析 DNS,但 ssh / 服务会

解决

# 修改 ssh 配置
vi /etc/ssh/sshd_config

改为:

UseDNS no
GSSAPIAuthentication no

重启:

systemctl restart sshd

✅ 这是 90% 连接慢的根因


二、firewalld 使用 rich-rule / 大量规则

现象

  • 防火墙启动慢
  • 每次连接都明显延迟

原因

  • rich-rule 过多
  • 使用了 log 规则(非常慢)
  • 规则顺序混乱

检查

firewall-cmd --list-all
firewall-cmd --list-rich-rules

建议

  • 避免 firewall-cmd --add-rich-rule='... log ...'
  • 用 zone + service 替代复杂规则

三、conntrack(连接跟踪)表满

现象

  • 并发一高就慢
  • 新连接建立卡顿

查看

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=655360

永久:

echo "net.netfilter.nf_conntrack_max=655360" >> /etc/sysctl.conf
sysctl -p

四、firewalld 本身启动慢(不是连接慢)

原因

  • 系统启动时间长
  • D-Bus / NetworkManager 未就绪

检查

systemctl status firewalld
journalctl -u firewalld

五、使用了 nftables / iptables 混用

CentOS 8+:

  • firewalld 后端可能是 nftables
  • 老脚本直接用 iptables 会冲突

查看

firewall-cmd --backend

六、SELinux 间接影响(少见)

getenforce

如为 Enforcing,可临时测试:

setenforce 0

七、快速自查清单(推荐顺序)

  1. ✅ UseDNS no
  2. ✅ 无 log 规则
  3. ✅ conntrack 未满
  4. ✅ 规则数量合理
  5. ✅ 无 DNS 不通

八、如果你能补充这些信息,我可以精准判断

  • CentOS 版本(7 / 8 / Stream)
  • 防火墙类型(firewalld / iptables)
  • 慢的是哪类连接(SSH / HTTP / 数据库)
  • 是否只在第一次连接慢

我可以直接给你对应配置命令。

0 踩