iptables 的使用方法(简要版)

🧱 一、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-saveiptables-restore

iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules

🧪 八、测试建议

  • 修改规则前,最好保持一个 SSH 连接防止自己锁死

  • 尝试先添加允许规则,再设置默认策略

  • 可以结合 watch iptables -L -n -v 实时观察流量

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享