在 Debian 上出现 iptables 相关连接慢(建立连接延迟、SSH/HTTP 访问卡顿),通常不是 iptables“本身慢”,而是规则或配置方式导致每个连接都要做额外处理。下面按常见原因逐一说明。
iptables -A 而不是 -I,规则顺序不对如果:
那么每个新连接都要逐条匹配,连接看起来就“慢”。
✅ 解决:
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
state / conntrack 但模块异常老规则常见:
-m state --state ESTABLISHED,RELATED
如果:
会导致:
✅ 检查:
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
典型现象:
✅ 检查:
iptables -L -n # 一定要加 -n
如果用了:
iptables -L
会做 反向 DNS,非常慢。
✅ SSH 优化:
/etc/ssh/sshd_config
UseDNS no
LOG 动作例如:
iptables -A INPUT -j LOG
LOG 会:
✅ 建议:
REJECT --reject-with 而不是 DROPREJECT 会:
✅ 对外网建议:
-j DROP
Debian 10+ 默认可能用 nftables,但你又在用 iptables。
✅ 检查:
iptables -V
# 显示 iptables-nft 就有问题
✅ 解决:
update-alternatives --config iptables
选 iptables-legacy
如:
-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我可以直接帮你指出哪一条规则导致慢。