先确认firewalld是否运行:systemctl is-active firewalld返回active则需停用;再执行iptables -P INPUT DROP后用iptables -L INPUT -n验证Policy是否变为DROP,才是iptables真正接管生效。

iptables 不需要“安装”,它默认就存在于几乎所有 Linux 发行版的内核中;真正要做的,是确认它没被 firewalld 或 nftables 屏蔽,再按顺序加规则、设默认策略、保存。
怎么确认 iptables 正在生效而不是被 firewalld 占用
很多 CentOS/RHEL 7+ 或 Fedora 系统默认启用了 firewalld,它会接管 netfilter,导致你执行 iptables -L 看到空规则或旧规则——其实 iptables 命令本身还能用,但规则不走它那套逻辑。
- 先查
firewalld是否运行:systemctl is-active firewalld,若返回active,就得停用它:sudo systemctl stop firewalld && sudo systemctl disable firewalld - 再确认
nftables没在后台代理 iptables(某些新版 Debian/Ubuntu 默认启用):sudo lsmod | grep nf_tables,如果输出非空,且你明确想用传统 iptables,建议卸载nftables或改用iptables-nft兼容层 - 验证方式:执行
sudo iptables -P INPUT DROP后立刻sudo iptables -L INPUT -n,能看到 Policy 变成 DROP 才算真正接管成功
添加规则时为什么 telnet 或 curl 总连不通
不是端口没开,而是缺了三条基础链路保障,iptables -A INPUT -p tcp --dport 80 -j ACCEPT 这条单独存在几乎必然失败。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 必须先放行本地回环:
sudo iptables -A INPUT -i lo -j ACCEPT,否则本机curl localhost:80都被拦 - 必须允许已建立连接的返回包:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(注意:旧系统用state模块,新内核推荐conntrack) - INPUT 链默认策略如果是
DROP,而你的-A规则插在它后面,那所有新连接都匹配不到——用sudo iptables -L INPUT -n --line-numbers看顺序,必要时改用-I INPUT 1插到最前
规则重启就消失?保存不是可选项,是必做动作
iptables 规则是纯内存态的,关机、重启、甚至 service restart 都会清空。不同发行版保存机制完全不同,不能靠猜。
- CentOS/RHEL 6/7:
sudo service iptables save(前提是iptables-services包已安装) - Debian/Ubuntu:
sudo apt install iptables-persistent,然后执行sudo netfilter-persistent save - Arch Linux:用
iptables-save > /etc/iptables/iptables.rules配合 systemd 服务加载 - 验证是否真保存成功:重启后执行
sudo iptables -L INPUT -n,看关键规则还在不在
为什么 -m limit 和 -m recent 经常不生效
这类扩展模块依赖内核编译选项和模块加载状态,不是写上就自动可用。
- 先检查模块是否加载:
lsmod | grep ip_set(对应ipset)、lsmod | grep xt_limit(对应limit),没输出就得sudo modprobe xt_limit -
--limit-burst的初始值只在首次匹配时生效,后续超限会持续 drop,不是“每分钟重置”——别拿它当防暴力破解主力,应配合fail2ban或recent模块封 IP 段 -
recent模块默认只记录最近 100 个 IP,如需更大容量,得在/etc/modprobe.d/xt_recent.conf里加options xt_recent ip_list_tot=1000并重新加载模块
最易忽略的一点:INPUT 链的默认策略(Policy)和你加的规则是两个独立概念。很多人反复加 -A INPUT -j DROP,却忘了执行 sudo iptables -P INPUT DROP——前者只是多一条规则,后者才是真正设为兜底行为。顺序、模块、持久化,三者缺一不可。

















