Linux防火墙如何使用iptables命令

在 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 发行版和使用场景即可。

相关推荐:

如何卸载Linux Compton

在Linux上卸载Compton(或它的常见继任者picom)取决于你当初是如何安装的。下面按常见情况分别说明。 一、先确认你装的是哪个 很多系统里“compton”实际是picom(compton已停止维护): whichcompton whichpicom 或者: compton--versio...

怎样优化Compton性能

Compton是Xorg下的轻量级合成管理器(现在多被picom取代),优化它的性能可以从配置、渲染后端、特效、硬件加速、系统环境等方面入手。下面按实用程度给你一套优化思路。 一、优先建议:使用picom而不是旧版Compton 旧版Compton已停止维护,picom是继任者,性能和兼容性更好: ...

linux hostname是什么

在Linux中,hostname(主机名)是用来标识一台计算机在网络中的名称。 一、hostname是什么? hostname是Linux系统的一个字符串标识 用于: 本地系统识别 网络通信(如SSH、局域网) 日志记录 通常是一个简短的名字,例如:myserver dev-machine loca...

Compton如何设置透明

在Compton(现在多指picom的前身)里设置透明,主要有几种方式,取决于你想让窗口透明还是桌面/背景透明。下面按常见场景说明。 一、确认你用的是Compton还是Picom 很多发行版已经用picom代替compton: whichcompton whichpicom 有picom→用pico...

linux hostname怎么设置

在Linux中设置hostname(主机名)有多种方式,取决于你用的是临时设置还是永久设置,以及发行版(systemd/非systemd)。下面按常见情况说明。 一、临时设置(重启后失效) sudohostname新主机名 示例: sudohostnamemyserver ⚠️只影响当前运行环境,重...

Compton能替代Picom吗

简短回答:可以替代,但要看你的使用场景和需求。 下面分情况说明: 1.Compton与Picom的关系 Compton是早期的一个X11合成管理器(compositor),现在已经基本停止维护。 Picom是Compton的一个活跃分支(fork),可以理解为: Picom=Compton的继任者 ...

linux hostname在哪查看

在Linux中,查看hostname(主机名)有以下几种常用方法: 1️⃣直接查看当前主机名 hostname 或 cat/etc/hostname 2️⃣使用hostnamectl(推荐,适用于systemd系统) hostnamectl 输出示例: Statichostname:myserver...

怎样解决Compton黑屏

Compton是Xorg下的一个老牌合成器(compositor),现在多数发行版已改用picom(Compton的分支)。出现“黑屏”通常不是显卡坏了,而是合成器参数、显卡驱动或OpenGL渲染方式不匹配。下面按最常见→较少见的顺序排查。 一、先确认你用的是Compton还是Picom which...