温馨提示×

debian iptables为何连接慢

小樊
39
2026-10-19 08:33:36
栏目: 智能运维

在 Debian 上出现 iptables 相关连接慢(建立连接延迟、SSH/HTTP 访问卡顿),通常不是 iptables“本身慢”,而是规则或配置方式导致每个连接都要做额外处理。下面按常见原因逐一说明。


一、最常见原因

1️⃣ 使用了 iptables -A 而不是 -I,规则顺序不对

如果:

  • 前面有 DROP / REJECT
  • 或有大量规则
  • 实际允许规则在很后面

那么每个新连接都要逐条匹配,连接看起来就“慢”。

✅ 解决:

iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

2️⃣ 启用了 state / conntrack 但模块异常

老规则常见:

-m state --state ESTABLISHED,RELATED

如果:

  • nf_conntrack 模块未加载
  • conntrack 表满

会导致:

  • 新连接等待
  • SSH 登录慢
  • 网页第一次打开慢

✅ 检查:

lsmod | grep 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

3️⃣ DNS 反向解析导致“看起来慢”

典型现象:

  • SSH 登录慢(输入密码前卡几秒)
  • 其实是 iptables 日志或 SSH 在做 DNS

✅ 检查:

iptables -L -n   # 一定要加 -n

如果用了:

iptables -L

会做 反向 DNS,非常慢。

✅ SSH 优化:

/etc/ssh/sshd_config
UseDNS no

4️⃣ 规则中有 LOG 动作

例如:

iptables -A INPUT -j LOG

LOG 会:

  • 写内核日志
  • 同步阻塞
  • 高并发时明显变慢

✅ 建议:

  • 限制 LOG 频率
  • 或只在调试时使用

5️⃣ 使用了 REJECT --reject-with 而不是 DROP

REJECT 会:

  • 发送 ICMP
  • 等待响应
  • 比 DROP 慢

✅ 对外网建议:

-j DROP

二、Debian 特有注意点

6️⃣ nftables 与 iptables 混用

Debian 10+ 默认可能用 nftables,但你又在用 iptables。

✅ 检查:

iptables -V
# 显示 iptables-nft 就有问题

✅ 解决:

update-alternatives --config iptables

选 iptables-legacy


7️⃣ 每条规则都做限速/统计

如:

-m limit
-m hashlimit

配置不当会拖慢连接建立。


三、快速排查清单(建议按顺序)

# 1. 不要反向解析
iptables -L -n -v

# 2. 看是否有 conntrack 问题
dmesg | grep conntrack

# 3. 是否规则过多
iptables -L | wc -l

# 4. SSH 是否 DNS
grep UseDNS /etc/ssh/sshd_config

# 5. 是否 nftables 混用
iptables -V

四、如果你愿意

你可以贴出:

  • iptables -L -n -v
  • Debian 版本
  • 慢的具体场景(SSH / HTTP / 内网 / 外网)

我可以直接帮你指出哪一条规则导致慢。

0 踩