还在为Linux防火墙配置头疼吗?被各种表、链、规则搞得晕头转向?别担心!这篇文章将用最通俗的语言,帮你理清iptables的来龙去脉。无论你是运维新手,还是想自己管理服务器的开发者,看完这篇文章,你一定能掌握iptables的精髓!
表名\链名 | PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING |
---|---|---|---|---|---|
filter | ❌ | ✅ | ✅ | ✅ | ❌ |
nat | ✅ | ❌ | ❌ | ✅ | ✅ |
mangle | ✅ | ✅ | ✅ | ✅ | ✅ |
raw | ✅ | ❌ | ❌ | ✅ | ❌ |
链名 | 说明 | 应用场景 |
---|---|---|
INPUT | 处理入站数据包 | 访问本机服务 |
OUTPUT | 处理出站数据包 | 本机对外访问 |
FORWARD | 处理转发数据包 | 路由器转发 |
PREROUTING | 路由前数据包处理 | 目的地址转换(DNAT) |
POSTROUTING | 路由后数据包处理 | 源地址转换(SNAT) |
表名 | 优先级 | 功能说明 |
---|---|---|
raw | 最高 | 连接跟踪处理 |
mangle | 次高 | 数据包修改 |
nat | 次低 | 网络地址转换 |
filter | 最低 | 数据包过滤 |
应用类型 | 使用的表 | 使用的链 |
---|---|---|
防火墙过滤 | filter | INPUT, FORWARD, OUTPUT |
地址转换(NAT) | nat | PREROUTING, POSTROUTING |
数据包修改 | mangle | 全部五链 |
关闭连接跟踪 | raw | PREROUTING, OUTPUT |
四表优先级(从高到低):
raw → mangle → nat → filter
五链处理顺序:
入站:PREROUTING → INPUT
转发:PREROUTING → FORWARD → POSTROUTING
出站:OUTPUT → POSTROUTING
# 1. 关闭 firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
# 2. 安装 iptables
yum -y install iptables iptables-services
# 3. 启动并设置开机启动
systemctl start iptables.service
systemctl enable iptables.service
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
选项 | 说明 | 示例 |
---|---|---|
-A | 在链末尾添加规则 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
-I | 在链开头插入规则 | iptables -I INPUT -p tcp --dport 22 -j ACCEPT |
-D | 删除规则 | iptables -D INPUT 1 |
-F | 清空规则 | iptables -F |
-L | 列出规则 | iptables -L -n -v |
-P | 设置默认策略 | iptables -P INPUT DROP |
利用iptables防火墙来完成下列操作:
本次实验
服务器:192.168.14.111 搭建了httpd服务
客户端:192.168.14.1112
默认规则设置
# 设置默认策略为DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
默认是开放的所有流量,关闭由外到内的所有流量,只允许出站
1v
规则设置
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许HTTPS连接
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping
iptables -A INPUT -p icmp -j ACCEPT
客户端访问测试
服务访问测试
ping测试
# 列出规则(带行号)
iptables -L --line-numbers
# 删除特定规则
iptables -D INPUT 1 # 删除INPUT链的第1条规则
# 插入规则
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT # 在INPUT链的第1位置插入规则
# 替换规则
iptables -R INPUT 1 -p tcp --dport 8080 -j ACCEPT # 替换INPUT链的第1条规则
# 保存规则
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
# 恢复规则
service iptables restart
# 或
iptables-restore < /etc/sysconfig/iptables
# 将80端口转发到8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
看到这里,相信你已经对iptables有了清晰的认识!让我们回顾一下关键点:
记住:配置防火墙不是什么高深技术,重要的是理解它的工作方式。就像设置家里的安全门,只需要清楚谁能进,谁不能进就够了!
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。