温馨提示×

Linux防火墙如何使用iptables命令

小樊
41
2026-06-30 17:41:42
栏目: 智能运维

在 Linux 中,iptables 是最常用的防火墙配置工具之一,用于设置、维护和检查 IPv4 数据包过滤规则。下面从 基本概念 → 常用命令 → 实战示例 → 注意事项 系统介绍 iptables 的使用。


一、iptables 基本概念

1. 表(Tables)

iptables 有多个表,最常用的是:

表名 作用
filter 默认表,负责数据包过滤(最常用)
nat 网络地址转换(端口映射、NAT)
mangle 修改数据包(如 TOS、TTL)

2. 链(Chains)

每个表包含若干链:

filter 表常用链

  • INPUT:进入本机的数据包
  • OUTPUT:从本机发出的数据包
  • FORWARD:转发的数据包

nat 表常用链

  • PREROUTING:路由前
  • POSTROUTING:路由后
  • OUTPUT

二、iptables 基本命令格式

iptables [-t 表名] 命令 链名 [匹配条件] [-j 动作]

常见命令

命令 含义
-A 追加规则
-I 插入规则
-D 删除规则
-L 查看规则
-F 清空规则
-P 设置默认策略

常见动作

动作 含义
ACCEPT 允许
DROP 丢弃(无响应)
REJECT 拒绝(返回错误)

三、查看 iptables 规则

iptables -L

详细显示:

iptables -nvL

指定表:

iptables -t nat -nvL

四、常用防火墙规则示例

1️⃣ 允许已建立的和相关的连接

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

2️⃣ 允许本地回环接口(lo)

iptables -A INPUT -i lo -j ACCEPT

3️⃣ 允许 SSH(22端口)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

⚠️ 注意:修改前一定要确保 SSH 端口允许,否则会被踢出服务器


4️⃣ 允许 HTTP / HTTPS

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

5️⃣ 拒绝所有其他入站流量

iptables -P INPUT DROP

允许出站(通常):

iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

6️⃣ 禁止某个 IP 访问

iptables -A INPUT -s 192.168.1.100 -j DROP

7️⃣ 开放指定端口范围

iptables -A INPUT -p tcp --dport 3000:4000 -j ACCEPT

五、删除规则

按规则编号删除

iptables -L --line-numbers
iptables -D INPUT 3

按规则内容删除

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

六、清空规则(慎用)

iptables -F
iptables -X
iptables -Z

⚠️ 会清空所有规则,远程服务器可能失联


七、NAT 配置示例(端口映射)

开启 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

SNAT(内网上网)

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

DNAT(端口转发)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

八、iptables 规则持久化

默认重启会丢失,需要保存。

CentOS / RHEL

service iptables save

Debian / Ubuntu

iptables-save > /etc/iptables/rules.v4

恢复:

iptables-restore < /etc/iptables/rules.v4

九、iptables vs firewalld / nftables

工具 说明
iptables 传统工具,兼容性好
firewalld RHEL/CentOS 7+ 默认
nftables 新一代防火墙(替代 iptables)

如果你使用的是 CentOS 7+ / RHEL 7+ / Ubuntu 22+,建议了解 firewalld 或 nftables。


十、典型安全规则模板(HTTP 服务器)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

如果你愿意,我可以:

  • ✅ 帮你写 服务器专用 iptables 规则
  • ✅ 对比 iptables vs firewalld
  • ✅ 排查 iptables 配置导致的网络问题
  • ✅ 教你 如何避免 SSH 被锁死

只要告诉我你的 Linux 发行版和使用场景即可。

0