iptables 规则集怎么看
iptables 是内核 netfilter 的用户态工具,规则按链(INPUT/OUTPUT/FORWARD)顺序匹配,命中即按目标动作处理,因此顺序比内容更重要。一份可用的主机防火墙规则集通常包含四类:放行回环、放行已建立连接的回包、按业务与来源放行必要端口、最后设默认策略。信创系统上 firewalld 与 iptables 服务二选一,混用会出现规则互相覆盖。
基本信息
| 适用平台 | RHEL/CentOS 6/7、openEuler、麒麟、UOS(内核 netfilter) |
|---|---|
| 查看规则 | iptables -L -n -v --line-numbers |
| 保存规则 | iptables-save,持久化见对应条目 |
| 与 firewalld 关系 | firewalld 是上层管理工具,二者不要同时启用 |
| 权限要求 | root 或 CAP_NET_ADMIN |
典型使用场景
- 最小化放行:服务器只开 SSH 与业务端口,其余默认拒绝
- 来源限制:管理端口只允许运维网段访问,公网不可达
- 限速与抗扫:ICMP 与新建连接做速率限制,减轻探测压力
- 临时加白:新增业务端口用 -I 插到链首快速生效,验证后再固化
- 故障定位:用规则计数器判断某个数据包是否被策略丢弃
典型规则集
典型规则集
iptables -A INPUT -i lo -j ACCEPT # 放行回环,本机通信必须
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 放行已建立连接的回包
iptables -A INPUT -p tcp --dport 22 -s 10.10.0.0/16 -j ACCEPT # 仅运维网段可 SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 放行 Web
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT # ICMP 限速
iptables -P INPUT DROP # 默认拒绝,务必最后设
iptables -P FORWARD DROP
iptables -L INPUT -n -v --line-numbers | head # 复核顺序与命中计数插入、删除与保存
插入、删除与保存
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT # 插到第 1 条,立即生效
iptables -L INPUT --line-numbers # 查行号
iptables -D INPUT 3 # 按行号删除
iptables-save > /etc/sysconfig/iptables # 保存(按发行版路径)
systemctl restart iptables # 部分系统需重载服务规则与计数读法
| 字段 | 含义 | 正常/异常 |
|---|---|---|
| num | 规则序号 | 决定匹配顺序,序号越小越先匹配 |
| pkts | 命中包数 | 长期为 0 说明策略没生效或流量走了别处 |
| target | 动作 | ACCEPT/DROP/REJECT,REJECT 会回错误包 |
| prot / dpt | 协议与目的端口 | dpt 非空表示按端口匹配 |
| source | 来源地址 | 为空表示任意来源 |
| policy | 链默认策略 | DROP 表示未匹配即丢弃,是收紧后的期望状态 |
设默认 DROP 前必须先放行 SSH 来源;远程机器上顺序错一步就会失联。操作前保留一份现网规则文件(iptables-save),并准备好带外控制台或定时回滚任务。
OUTPUT 链一般保持 ACCEPT,服务器主动连外部依赖(时间源、数据库、DNS)被拦时表现像业务故障,排查先看 OUTPUT 与 FORWARD 是否被你设成了 DROP。