在 Linux 中,iptables 是最常用的防火墙配置工具之一,用于设置、维护和检查 IPv4 数据包过滤规则。下面从 基本概念 → 常用命令 → 实战示例 → 注意事项 系统介绍 iptables 的使用。
iptables 有多个表,最常用的是:
| 表名 | 作用 |
|---|---|
filter |
默认表,负责数据包过滤(最常用) |
nat |
网络地址转换(端口映射、NAT) |
mangle |
修改数据包(如 TOS、TTL) |
每个表包含若干链:
filter 表常用链
INPUT:进入本机的数据包OUTPUT:从本机发出的数据包FORWARD:转发的数据包nat 表常用链
PREROUTING:路由前POSTROUTING:路由后OUTPUTiptables [-t 表名] 命令 链名 [匹配条件] [-j 动作]
| 命令 | 含义 |
|---|---|
-A |
追加规则 |
-I |
插入规则 |
-D |
删除规则 |
-L |
查看规则 |
-F |
清空规则 |
-P |
设置默认策略 |
| 动作 | 含义 |
|---|---|
ACCEPT |
允许 |
DROP |
丢弃(无响应) |
REJECT |
拒绝(返回错误) |
iptables -L
详细显示:
iptables -nvL
指定表:
iptables -t nat -nvL
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
⚠️ 注意:修改前一定要确保 SSH 端口允许,否则会被踢出服务器
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP
允许出站(通常):
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -s 192.168.1.100 -j DROP
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
⚠️ 会清空所有规则,远程服务器可能失联
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
默认重启会丢失,需要保存。
service iptables save
iptables-save > /etc/iptables/rules.v4
恢复:
iptables-restore < /etc/iptables/rules.v4
| 工具 | 说明 |
|---|---|
| iptables | 传统工具,兼容性好 |
| firewalld | RHEL/CentOS 7+ 默认 |
| nftables | 新一代防火墙(替代 iptables) |
如果你使用的是 CentOS 7+ / RHEL 7+ / Ubuntu 22+,建议了解 firewalld 或 nftables。
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
如果你愿意,我可以:
只要告诉我你的 Linux 发行版和使用场景即可。