iptables 是 linux 中用于配置防火墙规则的经典工具,其核心结构为“表→链→规则”,常用表包括 filter、nat、mangle 和 raw,每个表包含 input、output、forward 等链以处理不同路径的数据包;基本语法为 iptables [-t table] command [chain] [匹配条件] [-j 动作],其中常用命令有 -a、-i、-l、-f、-p,匹配条件包括 -p、-s、-d、–dport 等,动作为 accept、drop、reject、log;典型配置包括设置默认策略、允许回环接口、放行已建立连接、开放 ssh/http/https 端口、限制特定 ip 访问、配置 dnat 和 masquerade 实现端口转发与共享上网;规则可通过 service iptables save 或 iptables-save 命令保存,使用 iptables-restore 恢复;需注意规则顺序匹配特性,避免误锁,建议结合 conntrack 状态模块和 ipset 提升安全性与性能,最终通过理解表链结构与实际应用掌握 iptables 的网络控制能力。

配置 Linux 防火墙规则时,
iptables
是一个经典且功能强大的工具。虽然现代系统逐渐转向
nftables
,但
iptables
仍在大量环境中使用。掌握其基础语法,有助于管理网络流量、提升系统安全性。以下是
iptables
的基础语法和常用配置方法。
一、iptables 的基本结构
iptables
命令基于“表(tables)→链(chains)→规则(rules)”的结构:
表(tables):定义防火墙的功能类别,常见有:
filter
:默认表,用于包过滤(最常用)
nat
:网络地址转换,用于修改源/目标IP或端口
mangle
:修改数据包头部信息(较少用)
raw
:用于配置连接追踪的例外
链(chains):每个表包含若干预定义的链,用于处理特定时机的数据包:
INPUT
:进入本机的数据包
OUTPUT
:从本机发出的数据包
FORWARD
:经过本机转发的数据包
PREROUTING
:数据包刚到达,路由前(常用于 nat)
POSTROUTING
:数据包即将发出,路由后(常用于 nat)
二、基本语法格式
iptables [-t table] COMMAND [chain] [匹配条件] [-j 动作]
常见命令(COMMAND):
-A
:追加规则到链末尾
-I
:插入规则(可指定位置)
-D
:删除规则
-L
:列出规则
-F
:清空规则
-P
:设置链的默认策略
常见匹配条件:
-P
:指定协议(如 tcp、udp、icmp)
-s
:源IP地址
-D
:目标IP地址
--sport
:源端口
--dport
:目标端口
-I
:输入接口(如 eth0)
-o
:输出接口
常见动作(-j target):
ACCEPT
:允许通过
DROP
:丢弃,不回复
REJECT
:拒绝,并返回错误信息
LOG
:记录日志(通常与其他规则配合)
三、常用配置示例
1. 查看当前规则
iptables -L -n -v
-L
:列出规则
-n
:以数字形式显示IP和端口
-v
:显示详细信息
2. 设置默认策略
iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT
建议先设置 OUTPUT 为 ACCEPT,避免断网。
3. 允许本地回环通信
iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT
4. 允许已建立的连接通过
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
conntrack
模块用于跟踪连接状态,这是允许响应包返回的关键。
5. 开放常用服务端口
# 允许SSH(端口22)iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许HTTP(80)和HTTPS(443)iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT
6. 限制来源IP访问
# 只允许特定IP访问SSHiptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j DROP
注意规则顺序:先允许,再拒绝。
Glean
Glean是一个专为企业团队设计的AI搜索和知识发现工具
117 查看详情
7. 配置端口转发(NAT)
# 启用IP转发echo 1 > /proc/sys/net/ipv4/ip_forward# 将外部访问本机8080端口转发到内网192.168.1.10:80iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80# 源地址转换,让内网主机能通过本机上网iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
四、保存和恢复规则
不同发行版保存方式不同:
CentOS/RHEL 6 或使用 iptables-services:
service iptables save
Ubuntu/Debian:
iptables-save > /etc/iptables/rules.v4
可配合
iptables-restore < /etc/iptables/rules.v4
恢复。
手动保存:
iptables-save > ~/firewall.rulesiptables-restore < ~/firewall.rules
五、注意事项
规则按顺序匹配,一旦匹配就执行动作,后续规则不再检查。使用
-I INPUT 1
可在第一条插入规则,避免把自己锁在外面。修改远程服务器防火墙时,建议先测试规则,或设置定时清空规则的备用命令(如
sleep 60; iptables -F
)。复杂环境建议配合
ipset
提高效率(如封禁大量IP)。
基本上就这些。掌握
iptables
的核心在于理解“表-链-规则”的逻辑,以及状态追踪(conntrack)和NAT的应用。虽然语法略显繁琐,但足够灵活,适合深入控制网络流量。
以上就是如何配置Linux防火墙规则 iptables基础语法指南的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/808288.html
微信扫一扫
支付宝扫一扫