iptables 基本操作
iptables 基本操作
一、 基本概念
四表五链
四表
表名 | 作用 |
---|---|
filter | (默认) 过滤数据包 |
nat | 网络地址转换、 端口、地址映射 |
mangle | 用于对特定数据报的修改 |
rwa | 优先级最高,主要做连接追踪(一般不用) |
五链
链名 | 作用 |
---|---|
PREROUTING | 进入路由表之前 |
INPUT | 通过路由表后,目的为本机 |
FORWARD | 通过路由表后, 做转发 |
OUTPUT | 由本机向外出的数据 |
POSTROUTING | 出路由表后的 |
数据包走向
二、 命令操作
iptables [-t 表名] 命令选项 [链名] [规则号码] [条件匹配] [-j 目标动作]
例如:允许80端口通过防火墙
# iptables -t 表名 -I 链名 -p tcp协议 目的端口80 -j 动作 允许通过
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
# iptables 默认表 filter 可以省略
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
1 . 查看 防火墙规则
-t:后面接table
-L:列出目前的table的规则
-n:不进行IP与HOSTNAME的反查,显示信息速度回快很多。
-v:列出更多的信息,包括通过该规则的数据包总位数、相关的网络接口等
# 查看规则 iptables -nL iptables -t 某个表 -nL
2 . 添加规则
-I : 插入
-A : 追加
# iptables 默认表 filter 可以省略 iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 也可以写成这样, -m 模块(添加80端口) iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # (添加22端口) iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-j 后面跟动作 :
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
3 . 删除某条规则
-D : 删除规则
# 删除某条规则,分2种 一个按照序号, 一个详细信息 1、 按序号(需要先查看) iptables -nL --line # 查看 显示序号 iptables -D INPUT 2 # 删除序号2 iptables -t nat -D PREROUNTING 2 # 删除 nat 表 prerounting 链的第二条 2、 按详细信息(怎么添加的怎么删除) 把 -I 换成 -D iptables -D INPUT -p tcp --dport 80 -j ACCEPT
--line : 查看显示序号
4. 清空防火墙规则
iptables -F
iptables -t filter -F # 清空filter表的所有规则
5. 命令设置只是暂时- 永久保存
# 需要保存到配置文件中
iptables-save
6. 本地端口转发
# 外部访问 9999 端口,实际访问的是80 端口, 80端口不允许直接访问
iptables -t mangle -I PREROUTING -p tcp --dport 80 -j DROP
iptables -t nat -I PREROUTING -p tcp --dport 9999 -j REDIRECT --to-ports 80
# 防火墙允许端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 9999 -j ACCEPT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~