🧱 一、iptables 是什么?
iptables 是 Linux 下的一个命令行工具,用于设置内核的防火墙(netfilter),可以控制哪些网络流量可以进出你的计算机。
📊 二、iptables 的结构
1. 表(Tables)
每条规则存在于某张“表”中,不同的表处理不同类型的任务,最常用的是 filter 表(默认表):
| 表名 | 作用 |
|---|---|
| filter | 默认表,用来控制允许/拒绝流量(最常用) |
| nat | 网络地址转换(比如端口映射) |
| mangle | 修改数据包内容(如 TTL) |
| raw | 控制是否启用连接追踪(高级用法) |
2. 链(Chains)
每张表中包含一些“链”,链就像规则的容器,数据包会按顺序检查链中的规则。
| 链名 | 含义 |
|---|---|
| INPUT | 进入主机的数据(你本机收到的) |
| OUTPUT | 从本机发出去的数据 |
| FORWARD | 从一块网卡进来、另一块网卡出去的流量(转发) |
| PREROUTING | 数据包路由前处理(用于 NAT) |
| POSTROUTING | 路由后处理(用于 NAT) |
🧰 三、基本命令语法
iptables -[操作] [链] [匹配条件] -j [动作]
-
-A:添加规则(append) -
-D:删除规则(delete) -
-I:插入规则(insert) -
-L:列出规则(list) -
-F:清空规则(flush) -
-P:设置默认策略(policy) -
-j:指定动作(如 ACCEPT、DROP)
🔐 四、常用示例详解
✅ 1. 允许某个端口,比如 SSH 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
意思:
-
-A INPUT:添加到 INPUT 链(进来的流量) -
-p tcp:匹配 TCP 协议 -
--dport 22:目标端口是 22 -
-j ACCEPT:允许这个连接
⛔ 2. 拒绝某个端口,比如 HTTP 80 端口
iptables -A INPUT -p tcp --dport 80 -j DROP
🌐 3. 允许某个 IP 的所有流量
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
⛔ 4. 拒绝某个 IP
iptables -A INPUT -s 192.168.1.200 -j DROP
🔁 5. 开启 NAT 转发(端口转发)
假设你要把本地 8080 端口的请求转发到内网的 192.168.1.10:80:
# 启用转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 设置 PREROUTING 规则
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
# 设置 POSTROUTING 规则
iptables -t nat -A POSTROUTING -j MASQUERADE
👁️ 五、查看与删除规则
查看当前所有规则(推荐)
iptables -L -n -v --line-numbers
-
-n:不解析主机名(快) -
-v:显示包计数、字节数 -
--line-numbers:显示规则编号(方便删除)
删除第 3 条 INPUT 链规则
iptables -D INPUT 3
🧹 六、清空、防火墙默认策略
清空所有规则
iptables -F
设置默认策略为拒绝
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
说明:
-
默认拒绝进来的流量
-
默认允许出站流量
💾 七、保存和恢复规则
不同系统保存方式不同:
Ubuntu / Debian
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
CentOS / RHEL
service iptables save
也可以使用 iptables-save 和 iptables-restore:
iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules
🧪 八、测试建议
-
修改规则前,最好保持一个 SSH 连接防止自己锁死
-
尝试先添加允许规则,再设置默认策略
-
可以结合
watch iptables -L -n -v实时观察流量
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
