iptables 入门:放行端口、持久化与那条容易被忽略的 REJECT

Linux防火墙 发布于 2026-07-10 · 分类:Linux 运维 · 阅读 2,266

最常见的「我明明放行了端口为什么连不上」:规则被追加到了一条兜底 REJECT后面,而 iptables 是从上到下匹配、命中即停。

-I 与 -A 的区别

# -A:追加到链尾(可能落在 REJECT 之后,不生效!)
iptables -A INPUT -p tcp --dport 7890 -j ACCEPT

# -I:插入到链首(最先生效),推荐放行用这个
iptables -I INPUT 1 -p tcp --dport 7890 -j ACCEPT

查看带序号的规则:

iptables -L INPUT -n --line-numbers
# 或
iptables -S INPUT

典型误区链路:

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited   # 兜底
-A INPUT -p tcp --dport 7890 -j ACCEPT                  # 永远走不到!

持久化(CentOS 7)

iptables 命令改的是内存里的规则,重启就没了。用 iptables-services:

yum install -y iptables-services
service iptables save     # 保存到 /etc/sysconfig/iptables
systemctl enable iptables

建议

— 本文为个人运维笔记,如有疏漏欢迎指正。