Linux 系统中,iptables 是一款功能强大的防火墙工具,用于控制网络数据包的流动,保障系统安全,本文将详细介绍在 Linux 系统中安装和配置 iptables 的步骤,帮助用户快速上手这一安全工具。

检查系统是否已安装 iptables
在开始安装前,需确认当前系统是否已安装 iptables,以常见的 Debian/Ubuntu 和 CentOS/RHEL 系统为例,可通过以下命令检查:
- 
Debian/Ubuntu 系统: sudo iptables --version 若显示版本信息,则表示已安装;若提示“command not found”,则需安装。 
- 
CentOS/RHEL 系统: sudo iptables -V 同样,根据返回结果判断是否需要安装。 
安装 iptables
不同 Linux 发行版的包管理器不同,安装命令也有所差异:

Debian/Ubuntu 系统
使用 apt 包管理器安装,执行以下命令:
sudo apt update # 更新软件包列表 sudo apt install iptables # 安装 iptables
安装完成后,可通过 sudo iptables --version 验证是否成功。  
CentOS/RHEL 系统
使用 yum 或 dnf 包管理器安装(CentOS 7 及以上版本推荐 dnf):
sudo yum install iptables # CentOS 6/7 # 或 sudo dnf install iptables # CentOS 8/RHEL 8
若系统使用 firewalld 作为默认防火墙(如 CentOS 7+),需先停止并禁用 firewalld,避免冲突:
sudo systemctl stop firewalld # 停止 firewalld sudo systemctl disable firewalld # 禁用 firewalld 开机自启
基本配置与使用
安装完成后,需了解 iptables 的基本规则操作,包括查看、添加、删除和保存规则。
查看 iptables 规则
sudo iptables -L -n -v # 查看所有链的规则(-n:以数字形式显示地址;-v:显示详细信息) sudo iptables -L INPUT -n # 仅查看 INPUT 链规则
添加基本规则
以下为常用规则示例,可根据需求调整:

- 允许本地回环通信:
sudo iptables -A INPUT -i lo -j ACCEPT # 允许环回接口所有流量 
- 允许已建立的连接:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
- 允许 SSH 连接(默认端口 22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
- 允许 HTTP(80)和 HTTPS(443)端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
- 默认拒绝所有输入流量(需谨慎操作,可能导致无法连接):
sudo iptables -P INPUT DROP # 设置 INPUT 链默认策略为 DROP 
删除规则
若需删除规则,可通过 -D 参数实现,例如删除 SSH 允许规则:  
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
保存 iptables 规则
重启后,iptables 规则会失效,需手动保存:
- Debian/Ubuntu 系统:
sudo apt install iptables-persistent # 安装 iptables-persistent sudo netfilter-persistent save # 保存规则 
- CentOS/RHEL 系统:
sudo service iptables save # 保存规则(CentOS 6/7) # 或 sudo iptables-save | sudo tee /etc/sysconfig/iptables # CentOS 8/RHEL 8 
常用 iptables 链与目标说明
iptables 通过“链”(Chain)和“目标”(Target)控制数据包流向,核心链及功能如下表所示:
| 链名称 | 功能说明 | 常用目标 | 含义 | 
|---|---|---|---|
| INPUT | 处理进入本机的数据包 | ACCEPT | 允许数据包通过 | 
| FORWARD | 处理经过本机但不进入本机的数据包(如路由转发) | DROP | 丢弃数据包 | 
| OUTPUT | 处理从本机发出的数据包 | REJECT | 拒绝数据包并返回错误信息 | 
| PREROUTING | 数据包进入路由前处理(如 DNAT 目标转换) | LOG | 记录日志 | 
| POSTROUTING | 数据包离开路由后处理(如 SNAT 源地址转换) | MASQUERADE | 动态源地址转换(NAT) | 
注意事项
- 规则顺序:iptables 按顺序匹配规则,一旦匹配即执行对应动作,建议将“允许已连接”规则置于前面。
- 默认策略:谨慎设置默认策略为 DROP,可能导致远程管理中断,建议先测试再应用。
- 防火墙协同:若使用 ufw(Ubuntu)或 firewalld(CentOS),需先禁用再配置 iptables,避免冲突。
通过以上步骤,用户可完成 iptables 的安装与基础配置,结合实际需求制定安全策略,有效提升系统网络安全性。




















