🏡作者主页:点击!
🐧Linux基础知识(初学):点击!
🐧Linux高级管理防护和群集专栏:点击!
🔐Linux中firewalld防火墙:点击!
⏰️创作时间:2025年3月10日15点15分
还在为Linux防火墙配置头疼吗?被各种表、链、规则搞得晕头转向?别担心!这篇文章将用最通俗的语言,帮你理清iptables的来龙去脉。无论你是运维新手,还是想自己管理服务器的开发者,看完这篇文章,你一定能掌握iptables的精髓!
1. 表链关系总览
表名\链名 | PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING |
filter | ❌ | ✅ | ✅ | ✅ | ❌ |
nat | ✅ | ❌ | ❌ | ✅ | ✅ |
mangle | ✅ | ✅ | ✅ | ✅ | ✅ |
raw | ✅ | ❌ | ❌ | ✅ | ❌ |
2. 链的功能说明
链名 | 说明 | 应用场景 |
INPUT | 处理入站数据包 | 访问本机服务 |
OUTPUT | 处理出站数据包 | 本机对外访问 |
FORWARD | 处理转发数据包 | 路由器转发 |
PREROUTING | 路由前数据包处理 | 目的地址转换(DNAT) |
POSTROUTING | 路由后数据包处理 | 源地址转换(SNAT) |
3. 表的功能说明
表名 | 优先级 | 功能说明 |
raw | 最高 | 连接跟踪处理 |
mangle | 次高 | 数据包修改 |
nat | 次低 | 网络地址转换 |
filter | 最低 | 数据包过滤 |
4. 常见应用场景
应用类型 | 使用的表 | 使用的链 |
防火墙过滤 | filter | INPUT, FORWARD, OUTPUT |
地址转换(NAT) | nat | PREROUTING, POSTROUTING |
数据包修改 | mangle | 全部五链 |
关闭连接跟踪 | raw | PREROUTING, OUTPUT |
数据包处理流程
- 进入本机数据包:PREROUTING → INPUT
- 转发数据包:PREROUTING → FORWARD → POSTROUTING
- 本机发出数据包:OUTPUT → POSTROUTING
一、基础介绍
1. netfilter 与 iptables 的关系
- netfilter:Linux 内核中的包过滤框架(内核态)
- iptables:用户空间的防火墙管理工具(用户态)
2. 四表五链结构
四表优先级(从高到低):
raw → mangle → nat → filter
五链处理顺序:
入站:PREROUTING → INPUT
转发:PREROUTING → FORWARD → POSTROUTING
出站:OUTPUT → POSTROUTING
二、安装和基本配置
1. CentOS 7 安装步骤
# 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
2. 基本命令格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
三、常用管理选项
选项 | 说明 | 示例 |
-A | 在链末尾添加规则 |
|
-I | 在链开头插入规则 |
|
-D | 删除规则 |
|
-F | 清空规则 |
|
-L | 列出规则 |
|
-P | 设置默认策略 |
|
四.实验操作
利用iptables防火墙来完成下列操作:
- 允许SSH连接(端口22)
- 允许HTTP和HTTPS连接(端口80和443)
- 允许ping
- 拒绝其他所有入站连接
- 记录被拒绝的连接
本次实验
服务器: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有了清晰的认识!让我们回顾一下关键点:
- 🌟 四表五链不再神秘:就像快递分拣,每个包都有它的去处
- 🚀 常用配置其实很简单:
-
- 允许SSH登录(别把自己锁在门外)
- 开放网站端口(80/443)
- 允许ping检测
- 安全起见,默认拒绝其他连接
- 💡 规则管理也不难:增删改查,就像管理你的购物清单一样直观
记住:配置防火墙不是什么高深技术,重要的是理解它的工作方式。就像设置家里的安全门,只需要清楚谁能进,谁不能进就够了!
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子