Linux - iptables防火墙
目录
一、iptables概述
二、规则表与规则链结构(四表五链)
1.简述
2.四表(规则表)
3.五链(规则链)
三、数据链过滤的匹配流程
四、iptables命令行配置方法
1.命令格式
2.基本匹配条件
3.隐含匹配
3.1.端口匹配
3.2 TCP标志位匹配
3.2 ICMP类型匹配
3.3 显示匹配
3.3.1 多端口匹配:
3.3.2 IP范围匹配:
3.3.3 mac地址匹配
3.3.4 状态匹配
五、SNAT与DNAT
1.SNAT
2.DNAT
一、iptables概述
iptables防火墙是Linux系统防火墙的一种,实际上由两个组件netfilter和iptables组成。
netfilters与iptables的关系:
netfilter:属于“内核态”的防火墙功能体系。是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。
iptables:属于“用户态”的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables文件下。
netfilter/iptables后期简称为iptables。iptables是基于内核的防护墙,其中内置了raw、mangle、nat、filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。
二、规则表与规则链结构(四表五链)
1.简述
规则表(四表)的作用:容纳各种规则链。
规则链(五链)的作用:容纳各种防火墙规则。
总结:表中有链,链中有规则。

2.四表(规则表)
raw表:确定是否对该数据包进行状态跟踪。包含两个规则链 - OUTPUT、PREROUTING。
mangle表:修改数据包内容,用于流量整形,给数据包设置标记。包含五个规则链 - INPUT、OUTPUT、FORWARD、PREROUING、POSTROUTING。
nat表:负责网络地址转换,用来的修改数据包中的源、目标IP地址或端口。包含三个规则链 - OUTPUT、PREROUTING、POSTROUTING。
filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。
数据包到达防火墙时,数据表之间的优先顺序:
raw -> mangle -> nat -> filter
3.五链(规则链)
INPUT:处理入站数据包,匹配目标IP为本机的数据包。
OUTPUT:处理出战数据包,匹配从本机发出的数据包。
FORWARD:处理转发数据包,匹配流经本机的数据包。
PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNET。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTIING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。
三、数据链过滤的匹配流程
入站数据:PREROUTING -> INPUT -> 本机的应用程序
出站数据:本机的应用程序 -> OUTPUT -> POSTROUTING
转发数据:PREROUTING -> FORWARD -> POSTROUTING

四、iptables命令行配置方法
1.命令格式
iptables -t "表名" "管理选项" "链名" "匹配条件" -j "控制类型"
- 不指定表名时,默认指filter表
- 不指定链名时,默认值表内所有链
| 常用选项 | 解释 |
|---|---|
| -A | --apend 在指定表的末尾追加新规则 |
| -I | --insert 在指定链的开头插入一条新规则,不指定序号时默认在开头插入新规则 |
| -R | --replace 修改、替换指定链中某一条的规则,可指定序号或具体内容 |
| -P | --policy 设置指定链的默认策略 |
| -D | --delete 删除指定链中的某一条规则 |
| -F | --flush 清空指定链中的所有规则,若为指定链名,则清空表中所有链 |
| -L | --list 列出指定链中的所有规则,若为指定链名,则列出表中所有链 |
| -n | --numeric 使用数字形式输出结果,如显示IP地址而不是主机名 |
| -v | 显示详细信息,包括每条规则的匹配包数量和匹配字节数 |
| --line-numbers | 查看规则时,显示序号 |
| 常用控制类型 | 解释 |
|---|---|
| ACCEPT | 允许数据包通过 |
| DROP | 直接丢弃数据包,不给出任何回应信息 |
| REJECT | 拒绝数据包通过,会给数据发送端一个响应信息 |
| SNAT | 修改数据包的源地址 |
| DNAT | 修改数据包的目的地址 |
| REDIRECT | 重定向改变目的端口,将接受的包转发至本机的不同端口 |
| MASQUERADE | 伪装成一个非固定公网IP地址 |
| LOG | 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则 |
2.基本匹配条件
| 基本匹配条件 | 解释 |
|---|---|
| -p | 指定协议 |
| -s | 指定源地址 |
| -d | 指定目的地址 |
| -i | 指定入站网卡 |
| -o | 指定出站网卡 |
3.隐含匹配
需以特定的协议匹配作为前提。
3.1.端口匹配
| 匹配条件 | 解释 |
|---|---|
| --sport | 源端口 |
| --dport | 目的端口 |
例:
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
ps:--sport 和 --dport 必须配合-p "协议类型"使用
3.2 TCP标志位匹配
| 标志位 | 解释 |
|---|---|
| SYN | 同步位 |
| ACK | 确认位 |
| FIN | 结束位 |
| RST | 重置位 |
| URG | 紧急位 |
| PSH | 推送位 |
例:
iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT
拒绝来自22端口的SYN之外的tcp包(只接收SYN包)
3.2 ICMP类型匹配
| 类型 | 代码 | 解释 |
|---|---|---|
| Echo-Reques | 8 | 请求 |
| Echo-Reply | 0 | 回显 |
| Destination-Unreachable | 3 | 目标不可达 |
例:
iptables -A INPUT -p icmp --icmp-type 8 -j -DROP
#禁止其他主机ping本机
3.3 显示匹配
要求以“-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。
3.3.1 多端口匹配:
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
例:
iptables -A INPUT -p tcp -m multiport --dport 80,22,21 -j ACCEPT
3.3.2 IP范围匹配:
-m iprange --src-range 源ip范围
-m iprange --dst-range 目的ip范围
例:
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-19.2169.80.200
3.3.3 mac地址匹配
-m mace --mace-source "mac地址"
3.3.4 状态匹配
-m state --state "连接状态"
| 常见的状态连接 | 解释 |
|---|---|
| NEW | 与任何连接无关的,还没开始连接 |
| ESTABLISHED | 响应请求或者已建立连接的,连接态 |
| RELATED | 与已有连接有相关性的,衍生态,一般与ESTABLISHED 配合使用 |
| INVALID | 无效的封包,例如数据破损的封包状态 |
例:
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
五、SNAT与DNAT
均需网关开启IP路由转发:
临时打开 echo 1 > /proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip_forward=1
永久打开:
vim /etc/sysctl.conf....
net.ipv4.ip_forward=1 #将此行写入配置文件sysctl -p #载入配置
1.SNAT
SNAT用于在网络中修改数据包的源地址。
SNAT转换前提条件:
- 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
- Linux网关开启IP路由转发
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10
2.DNAT
DNAT用于在网络中修改数据包的目的地址,通常是为了保护内网服务器的安全。
DNAT转换前提条件:
- 局域网的服务器能够访问Internet
- 网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11
相关文章:
Linux - iptables防火墙
目录 一、iptables概述 二、规则表与规则链结构(四表五链) 1.简述 2.四表(规则表) 3.五链(规则链) 三、数据链过滤的匹配流程 四、iptables命令行配置方法 1.命令格式 2.基本匹配条件 3.隐含匹配 …...
【C语言零基础入门篇 - 3】:格式化输入输出、字符操作和sizeof运算符揭秘
文章目录 格式化输入与输出格式化输入输出演示基本格式化输入输出 字符的输入输出sizeof运算符 格式化输入与输出 什么是数据的输出? 计算机向输出设备输出数据 什么是数据的输入? 从输入设备向计算机输入数据 #include<stdio.h>:标准的输入输出库&#…...
JVM字节码与局部变量表
文章目录 局部变量表javap字节码指令分类 指令指令数据类型前缀加载和存储指令加载常量算术指令其他指令 字节码示例说明 局部变量表 每个线程的帧栈是独立的,每个线程中的方法调用会产生栈帧,栈帧中保存着方法执行的信息,例如局部变量表。 …...
Java许可政策再变,Oracle JDK 17 免费期将结束!
原文地址:https://www.infoworld.com/article/3478122/get-ready-for-more-java-licensing-changes.html Oracle JDK 17的许可协议将于9月变更回Oracle Technology Network License Agreement,这将迫使用户重新评估他们的使用策略。 有句老话说…...
网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
目录 一、理论基础 1.1 网页交互模拟的重要性 1.2 网页交互的基本原理 二、常用工具介绍 2.1 Selenium 2.2 Puppeteer 2.3 Cypress 2.4 TestCafe 三、实战案例 3.1 模拟用户输入 3.2 模拟用户点击 3.3 模拟用户选择 3.4 模拟滚动操作 四、最佳实践与优化 4.1 代…...
C sharp 学习 笔记
介绍 这篇文章是我学习C#语言的笔记 学的是哔哩哔哩刘铁锰老师2014年的课程 在学习C#之前已经学习过C语言了。看的是哔哩哔哩比特鹏哥的课程。他们讲的都很不错 正在更新, 大家可以在我的gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion中导入…...
文章资讯职场话题网站源码整站资源自带2000+数据
介绍: 数据有点多,数据资源包比较大,压缩后还有250m左右。值钱的是数据,网站上传后直接可用,爽飞了 环境:NGINX1.18 mysql5.6 php7.2 代码下载...
c++ templates常用函数
说明 c templates学习中会遇到大量的模版常用函数,书上不会详细介绍,查看一个之后要永久记录一段时间之后再看看,这里总结一下。 undeclared(); undeclared();//若undeclared();未定义,则在第一阶段编译时报错 undeclared(t);…...
【重学 MySQL】三十一、字符串函数
【重学 MySQL】三十一、字符串函数 函数名称用法描述ASCII(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数,与CHARACTER_LENGTH(s)相同LENGTH(s)返回字符串s的字节数,和字符集有关CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字…...
828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统
828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统 1. 部署环境说明2. 部署基础环境2.1. 操作系统基本配置2.2. 部署Nginx2.3. 部署MySQL2.4. 部署PHP 3. 部署GLPI资产管理系统 1. 部署环境说明 本次环境选择使用华为云Flexus云服务器X实例,因为其具有高…...
深入理解Go语言的面向对象编程、Git与GitHub的使用
Go语言以其简洁、高效和并发支持而广受欢迎。虽然Go不是一种传统的面向对象编程(OOP)语言,但它提供了一些特性,使我们能够模拟OOP的某些概念。在本文中,我们将深入探讨Go语言中的面向对象编程技巧,以及如何使用Git和GitHub进行版本控制。通过丰富的代码示例和详细的解释,…...
redis底层—通信协议RESP
...
JVM 调优篇6 可视化性能监控工具-JVisual VM
一 Visual VM 1.1 概述 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具。 它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat…...
C#学习笔记(三)Visual Studio安装与使用
博主刚开始接触C#,本系列为学习记录,如有错误欢迎各位大佬指正!期待互相交流! 上一篇文章中安装了Visual Studio Code来编写调试C#程序,但是博主的目标是编写带窗口的应用程序,了解之后发现需要安装Visual …...
element-plus的菜单组件el-menu
菜单是几乎是每个管理系统的软件系统中不可或缺的,element-plus提供的菜单组件可以快速完成大部分的菜单的需求开发, 该组件内置和vue-router的集成,使用起来很方便。 主要组件如下 el-menu 顶级菜单组件 主要属性 mode:决定菜单的展示模式…...
深入浅出通信原理
深入浅出通信原理 文章目录 深入浅出通信原理前言一、概述二、信号和频谱2.1 信号2.2 信号的分解与合成2.3 傅里叶变换的特性2.4 离散傅里叶变化 三 信道3.1 衰减和损耗3.2 多普勒效应 四 信源编码4.1 采样4.2 量化4.3 编码 五 基带信号的发送和接受5.1 脉冲成形5.2 眼图 六 频…...
Gitee Pipeline 从入门到实战【详细步骤】
文章目录 Gitee Pipeline 简介Gitee Pipeline 实战案例 1 - 前端部署输入源NPM 构建Docker 镜像构建Shell 命令执行案例 2 - 后端部署全局参数输入源Maven 构建Docker 镜像构建Shell 命令执行参考🚀 本文目标:快速了解 Gitee Pipeline,并实现前端及后端打包部署。 Gitee Pi…...
【贪心算法】贪心算法
贪心算法简介 1.什么是贪心算法2.贪心算法的特点3.学习贪心的方向 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.什么是贪心算法 与其说是…...
【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆式详解 , 建议收藏 !!!
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
Scratch教学案例 —— 制作生日蛋糕
小虎鲸Scratch资源站-免费少儿编程Scratch作品源码,素材,教程分享网站! 简介 在这个教学案例中,我们将使用Scratch制作一个简单而有趣的生日蛋糕动画。通过这个项目,学生可以学习到如何使用Scratch中的基本编程块进行角色控制、造型切换、舞台背景设置以…...
OpenClaw 连接阿里云百炼图文教程
OpenClaw 连接阿里云百炼图文教程 前置准备 已安装并可以正常打开 OpenClaw Windows。 OpenClaw 顶部 Gateway 状态保持在线。 已准备好可正常登录的阿里云账号。 可以正常访问阿里云百炼登录地址:https://bailian.console.aliyun.com/cn-beijing#/home 建议提…...
MAX78000移植Zephyr RTOS实战:从BSP创建到AI边缘设备开发
1. 项目概述与动机作为一名长期在嵌入式边缘AI和机器人领域摸爬滚打的开发者,我最近把目光投向了一块相当有潜力的板子:Maxim Integrated(现为ADI一部分)的MAX78000FTHR开发套件。这块板子的核心——MAX78000微控制器,…...
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝…...
全球无障碍宣传日:iOS 26 辅助功能大升级,这些实用小功能你用过吗?
辅助功能发展与升级很多人对辅助功能的印象还停留在 "小白点",但随着 iPhone 进入全面屏时代,它逐渐变得陌生。实际上,Apple 每年都会为其增添功能,方便身体有障人士使用 iPhone。而且,这些功能不仅惠及有障…...
【审计专栏】【财务领域】 第四十九篇 人在企业中的核心资产和核心利益01
编号 类型 企业 (行业/企业产品/企业利益链/生态位与层级) 业务领域 企业性质 企业中人的角色/岗位/利益矩阵 人在企业中的核心资产/附属资产 资产的业务-财务数学模型及数字/数值 关联知识 1 核心经营性资产(如IP、数据、品牌) 行业:人工智能 产品:工业视觉检…...
告别多头对接!DMXAPI 为企业打造国产大模型 “统一入口”
一、企业 AI 落地的普遍痛点:被接口和平台消耗的成本在企业数字化转型的浪潮中,AI 大模型已经成为标配,但很多企业在落地时,都会陷入一个共同的困境:为了满足不同业务场景的需求,需要同时对接 DeepSeek、阿…...
从NLP到RAG:AI标书生成系统的技术架构与落地路径深度剖析
引言2026年2月,国家发改委等八部门联合印发《关于加快招标投标领域人工智能推广应用的实施意见》,明确到2026年底招标文件检测、智能辅助评标、围串标识别等重点场景在部分省市实现全覆盖。同一时期,《招标投标法》修订草案经国务院常务会议原…...
PrivacyGuard实战:基于实证差分隐私的机器学习模型隐私审计框架
1. 项目概述与核心价值在过去的几年里,我亲眼见证了机器学习模型从实验室走向银行、医疗、社交网络等各个敏感领域的全过程。模型性能的每一次飞跃都令人兴奋,但随之而来的隐私泄露事件也一次次为我们敲响警钟。一个在医疗数据上训练出的诊断模型&#x…...
基于KS距离度量交通流分布偏移:提升DRL交通信号控制鲁棒性的工程实践
1. 项目概述与核心挑战在智能交通系统(ITS)领域,基于深度强化学习(DRL)的交通信号控制(Traffic Signal Control)正从研究走向实际部署。作为一名长期关注AI落地应用的从业者,我见过太…...
基于Atmega 1284P的16位复古计算器:硬件设计与软件实现全解析
1. 项目概述与核心思路最近在整理工作室时,翻出了一堆老旧的7段数码管和矩阵键盘,看着这些充满复古气息的元件,一个想法冒了出来:为什么不自己动手做一台复古风格的计算器呢?不是那种用液晶屏显示的现代计算器…...
