iptables核心是“表→链→规则”三层结构,命令先选表、再定操作、指定链与匹配条件、最后用-j指定动作;常用-A追加、-I插入、-D删除、-L查看、-F清空、-P设默认策略;匹配需结合-s、-p、--dport等精准控制;规则需保存至文件才能持久化。

iptables 的核心是“表→链→规则”三层结构,命令写法固定:先选表(可选),再定操作,接着指定链和匹配条件,最后用 -j 指定动作。掌握几个关键参数,就能完成绝大多数日常配置。
常用命令选项:增删查改的核心动作
这些是管理规则最频繁用到的操作符:
- -A:追加规则到链末尾,适合添加允许类规则(如开放端口)
- -I:插入规则到链开头,优先级最高,常用于紧急封禁或高优先级放行
-
-D:删除规则,支持按编号(
iptables -D INPUT 2)或按完整规则内容删除 - -L:列出规则,搭配 -n(不解析主机名、端口名)和 -v(显示包/字节计数)更实用
-
--line-numbers:配合
-L显示行号,是安全删规则的前提 -
-F:清空指定链(如
iptables -F INPUT),注意它不改变 -P 设置的默认策略 -
-P:设置链的默认策略,例如
iptables -P INPUT DROP表示未匹配任何规则时一律拒绝
关键匹配条件:精准控制流量流向
仅靠动作不够,必须用条件告诉 iptables “对谁、什么协议、哪个端口、从哪来”:
-
-s:指定源 IP 或网段,如
-s 192.168.5.0/24或-s 203.0.113.42 - -d:指定目标 IP,多用于 nat 表或 OUTPUT 链
-
-p:协议类型,常用
tcp、udp、icmp,必须与端口参数配合使用 -
--dport:目标端口,如
--dport 80,仅在-p tcp或-p udp后有效 - --sport:源端口,较少用,适用于限制特定客户端端口出向连接
-
-i:入站网卡,如
-i eth0,用于区分内外网接口 - -m state --state ESTABLISHED,RELATED:允许已建立连接及关联流量,是安全配置中必不可少的一环
典型规则组合:几条命令解决常见需求
实际配置不是孤立参数堆砌,而是逻辑组合:
- 允许本机回环通信:
iptables -A INPUT -i lo -j ACCEPT - 放行已有连接:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT - 只允许某 IP 访问 SSH:
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT,之后再加一条iptables -A INPUT -p tcp --dport 22 -j DROP - 封禁恶意 IP:
iptables -I INPUT -s 198.51.100.25 -j DROP(用 -I 确保立即生效) - 开放 Web 服务:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT,HTTPS 同理改端口为 443
保存与持久化:重启后规则不丢失
iptables 规则默认只存在于内存,重启即失效,必须手动保存:
- 通用方法:
iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)或iptables-save > /etc/sysconfig/iptables(CentOS/RHEL) - Debian 系统可安装
iptables-persistent,启用后自动加载:netfilter-persistent save - CentOS 7 及以前可用
service iptables save,本质也是调用iptables-save - 恢复规则:
iptables-restore

















