五、双向NAT
学习防火墙之前,对路由交换应要有一定的认识
- 双向NAT
- 1.1.基本原理
- 1.2.NAT Inbound + NAT Server
- 1.3.域内NAT+NAT Server
——————————————————————————————————————————————————
双向NAT
经过前面介绍,已经对源NAT和NAT Server有了相当的了解。NAT功能就像一个武林高手,可内可外,游刃有余,那么这一内一外能否配合使用呢?
如果需要同时改变报文的源地址和目的地址,就可以配置源NAT+NAT Server,我们称之为双向NAT。
双向NAT不是一个单独的功能,而是源NAT和NAT Server的组合,这里组合的含义是针对同一条流,在其经过防火墙时同时转换报文的源地址和目的地址。
千万不能理解为防火墙上同时配置了源NAT和NAT Server就是双向NAT了,这是不对的,因为源NAT和NAT Server可能是为不同流配置的。
——————————————————————————————————————————————————
1.1.基本原理
之前介绍源NAT时,为了便于理解,都是按照私网用户访问Internet的思路进行组网验证的。实际上,源NAT还可以根据报文在防火墙上的流动方向进行分类,包括域间NAT和域内NAT。
域间NAT
报文在两个不同的安全区域之间流动时对报文进行NAT转换,根据流动方向的不同,可以分为两类。
1、NAT Inbound
报文由低级别的区域向高级别区域方向流动时,对报文进行转换,一般这种情况是公网用户访问内部网络,不太常见。
2、NAT Outbound
报文由高级别的区域向低级别区域方向流动时,对报文进行转换,前面介绍的私网用户访问Internet场景使用的NAT都是Outbound。
域内NAT
报文在同一个安全区域之内流动时对报文进行NAT转换,一般来说,域内NAT都会和NAT Server配合使用,单独配置域内NAT的情况比较少见。
当域间NAT、域内NAT和NAT Server配合使用时,就实现了双向NAT。上述实现的前提是:合理设置安全区域安全级别,内网网络属于Trust高安全级别,私网服务器属于DMZ中安全级别,Internet属于Untrust低安全级别。
双向NAT从技术和实现原理来说并无特别之处,但是应用场景很有特色。究竟是什么时候需要配置双向NAT?有什么好处?不配置双向NAT行不行?
——————————————————————————————————————————————————
1.2.NAT Inbound + NAT Server
最常见的一个场景:公网用户访问私网服务器,这个场景也是NAT Server的典型场景。但是下面要讲的是如何在这个场景中应用双向NAT,以及这么做的好处。

接下来进行配置,NAT Server和源NAT。
配置NAT Server
nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80
NAT Server配置完会生成静态带正向-反向,Server-map表。

配置源NAT
nat address-group GW
section 192.168.100.200 192.168.100.200nat-policyrule name SNATsource-zone untrustdestination-zone trustdestination-address 192.168.100.1 mask 255.255.255.255action source-nat address-group GW
在配置源NAT策略时,destination-address:由于先进行NAT Server转换,再进行源NAT转换,所以此处的目的地址是NAT Server转换后的地址,即服务器的私网地址。
配置完成后,公网用户访问私网服务器,在防火墙上查看会话表,可以清楚的看到报文的源IP地址和目的IP地址都进行了转换。

在来看看转发过程:
1、公网用户访问私网服务器的报文到达防火墙时,目的地址210.1.1.1经过NAT Server (nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80)转换为私网地址192.168.100.1,然后源地址210.1.1.2,经过NAT Inbount(nat address-group GW)也转换为192.168.100.200私网地址,且和私网服务器属于同一网段。这样报文的源地址和目的地址就同时进行了转换,即完成了双向NAT。
简化来说:防火墙收到报文后,从NAT Server选择私网地址替换报文的目的地址。即192.168.100.1。判断安全策略,通过后从源NAT地址池选择一个私网IP替换报文源IP,即192.168.100.200。
2、当私网服务器的回应报文经过防火墙时,再次进行双向NAT地址转换,报文的源地址和目的地址均转换为公网地址。
简化来说:收到Web服务器报文后,会查找会话表之前建立的项,将报文源地址和目的地址替换成原先的地址,将源和目的端口替换为原始的端口号,发送至Internet。

防火墙G1/0/1,用户请求服务器,源IP:210.1.1.1使用随机端口49207,目的IP:210.1.1.1,端口9980。

防火墙G1/0/0,防火墙收到用户请求服务器的报文,转换后的源IP:192.168.10.200,端口:2055。目的IP:192.168.100.1,端口80。

回去的报文,源地址:192.168.100.1,端口80。目的IP:192.168.10.200,端口2055。

转换后的源IP:210.1.1.1,端口9980。目的IP:210.1.1.2,随机端口

到这里有点疑问,前面说过,只配置NAT Server不配置NAT Inbound,也不会影响公网用户访问私网服务器。答案是肯定不会影响,但是配置了有它本身的好处。秘密就在于私网服务器对回应报文的处理方式上。
把NAT地址池中的地址配置成和私网服务器在同一网段,当私网服务器回应公网用户的访问请求时,发现自己的地址和目的地址在同一网段,此时私网服务器就不会去查找路由,而是发送ARP广播报文询问目的地址对应的MAC。防火墙会及时挺身而出,将连接私网服务器接口的MAC地址发给私网服务器,告诉死亡服务器:把回应报文发送给我。所以私网服务器将回应报文发送至防火墙,防火墙再对其进行后续处理。

既然私网服务器上省去了查找路由环节,那就不用设置网关了,这就是配置双向NAT的好处。这里配置的源NAT,虽然叫源NAT,考虑的时候是反着来的。
安全策略配置
security-policyrule name SNATsource-zone untrustdestination-zone trustdestination-address 192.168.100.1 mask 255.255.255.255action permit
配置路由黑洞
ip route-static 192.168.100.1 32 NULL0
——————————————————————————————————————————————————
1.3.域内NAT+NAT Server
域内NAT+NAT Server的场景,管理员在规划网络时偷懒,将私网用户和私网服务器规划到同一网络,并将二者置于同一安全区域。

如图上图:私网用户User访问服务器的报文,到达防火墙后,防火墙进行目的地址转换,私网服务器回应报文时发现目的地址和自己的地址在同一网段,回应报文经交换机直接转发到私网用户,不会经过防火墙转发。
如果希望提高内部网络安全性,使私网服务器的回应报文也经过防火墙处理,就需要配置域内NAT,将私网用户访问私网服务器的报文的源地址进行转换。转换后源地址可以是公网地址也可以是私网地址,只要不和私网服务器在同一网段即可。这样私网服务器的回应报文就会被发送到防火墙。
配置NAT SERVER
nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 www
配置域内NAT,几乎和域间NAT一样,只不过前者在域内进行NAT转换,后者在域间进行NAT转换。
nat address-group 1 1section 0 210.1.1.100 210.1.1.100 公网私网都可以,只要不和私网服务器在同一网段nat-policyrule name Policysource-zone untrustdestination-zone trustdestination-address 192.168.100.1 mask 255.255.255.255action source-nat address-group 1
没有配置安全策略,是因为缺省下防火墙对同一安全区域内流动的报文不做控制。记得配置黑洞路由
看下过程:
私网用户访问私网服务器报文:
源IP:192.168.100.50,目的IP:210.1.1.1
经过转换后,源IP:210.1.1.100,目的IP:192.168.100.1
私网用户回应的报文:
源IP:192.168.100.1,目的IP:210.1.1.100
经过转换后,源IP:210.1.1.1,目的IP:192.168.100.50
如果我们在这个网络环境下,将私网用户和私网服务器通过不同的接口连接到防火墙,此时私网用户和私网服务器交互的所有报文都需要经过防火墙转发,所以只配置NAT SERVER是可以的。
不要纠结转换后是公网地址还是私网地址。双向NAT并不是必配的功能。有时只配源NAT或NAT Server就可以达到同样的效果。但是灵活运用双向NAT可以起到简化网络配置、方便网络管理功能。
相关文章:
五、双向NAT
学习防火墙之前,对路由交换应要有一定的认识 双向NAT1.1.基本原理1.2.NAT Inbound NAT Server1.3.域内NATNAT Server —————————————————————————————————————————————————— 双向NAT 经过前面介绍,…...
P1028 [NOIP2001 普及组] 数的计算
时刻记住一句话:写递归,1画图,2大脑放空!!! 意思是,自己写递归题目,先用样例给的数据画图,然后想一个超级简单的思路,直接套上去就可以了。 上题干ÿ…...
浅析三相异步电动机控制的电气保护
安科瑞 华楠 摘 要:要求三相异步电动机的控制系统不仅要保证电机正常启动和运行,完成制动操作,还要通过相关保护措施维护电动机的安全使用。基于此,本文以电动机电气保护作为研究对象,结合三相异步电动机的机械特点&…...
Java设计模式系列:单例设计模式
Java设计模式系列:单例设计模式 介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 比如 Hiberna…...
开拓新天地:探讨数位行销对医药产业医病连结的影响
数字营销模式多元,主要围绕医生和患者。赛道各企业凭借各自优势(技术、学术、流量等)入局,提供各自差异化营销工具或服务。目前,围绕医生的数字营销旨在为医生提供全面学术解决方案从而提升对医药产品的认可࿰…...
[tsai.shen@mailfence.com].faust勒索病毒数据怎么处理|数据解密恢复
导言: [support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust勒索病毒是一种具有恶意目的的勒索软件,其主要特点包括对受害者文件进行强力加密,然后勒索受害者支付赎金以获取解密密钥。攻击者通常通…...
Peter算法小课堂—前缀和数组的应用
桶 相当于计数排序,看一个视频 桶排序 太戈编程1620题 算法解析 #include <bits/stdc.h> using namespace std; const int R11; int cnt[R];//cnt[t]代表第t天新增几人 int s[R];//s[]数组是cnt[]数组的前缀和数组 int n,t; int main(){cin>>n;for(…...
线性表之链式表
文章目录 主要内容一.单链表1.头插法建立单链表代码如下(示例): 2.尾插法建立单链表代码如下(示例): 3.按序号查找结点值代码如下(示例): 4.按值查找表结点代码如下(示例): 5.插入节…...
[Docker]十.Docker Swarm讲解
一.Dokcer Swarm集群介绍 1.Dokcer Swarm 简介 Docker Swarm 是 Docker 公司推出的用来管理 docker 集群的工具, 使用 Docker Swarm 可以快速方便的实现 高可用集群 ,Docker Compose 只能编排单节点上的容器, Docker Swarm 可以让我们在单一主机上操作来完成对 整…...
相机机模组需求示例
产品需求名称摄像头采集图片数据补充说明产品需求描述 As:用户 I want to:通过相机模组获取到自定义格式图片数据,要求包括: 1、支持多种场景,如:手持相机拍摄舌苔 2、支持图片分辨率至少达到1920X1080 3、…...
Uniapp 微信登录流程解析
本文将介绍在 Uniapp 应用中实现微信登录的流程,包括准备工作、授权登录、获取用户信息等步骤。 内容大纲: 介绍Uniapp和微信登录: 简要介绍 Uniapp 框架以及微信登录的重要性和流行程度。 准备工作: 注册微信开发者账号创建应用…...
红旗Asianux Server Linux V8 安装万里数据库(GreatSQL)
红旗Asianux Server Linux V8 安装万里数据库(GreatSQL) 红旗Asianux介绍: 红旗Asianux Server Linux 8.0是为云时代重新设计的操作系统,为云时代的到来引入了大量新功能,包括用于配置管理、快速迁移框架、编程语言和…...
一文2000字使用JMeter进行接口测试教程!(建议收藏)
安装 使用JMeter的前提需要安装JDK,需要JDK1.7以上版本目前在用的是JMeter5.2版本,大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin,双击jmeter.bat启动运行 启动后默认为英文版本,可通过Options – Cho…...
Spark---介绍及安装
一、Spark介绍 1、什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架,Spark拥有Hadoop MapReduce所具有的优点;但…...
uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值
一、效果展示 失败效果 成功效果 二、写入后端请求部分 分析 ①自定义一个模块common.js主要用于封装所有的请求函数 ②核心代码 function requestWithRetry(cmd, username, password, retryCount) {return new Promise((resolve, reject) > {uni.request({url: ip sys…...
数据结构-归并排序+计数排序
1.归并排序 基本思想: 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个…...
Qml使用cpp文件的信号槽
文章目录 一、C文件Demo二、使用步骤1. 初始化C文件和QML文件,并建立信号槽2.在qml中调用 一、C文件Demo Q_INVOKABLE是一个Qt元对象系统中的宏,用于将C函数暴露给QML引擎。具体来说,它使得在QML代码中可以直接调用C类中被标记为Q_INVOKABLE的…...
聚类笔记:HDBSCAN
1 算法介绍 DBSCAN/OPTICS层次聚类主要由以下几步组成 空间变换构建最小生成树构建聚类层次结构(聚类树)压缩聚类树提取簇 2 空间变换 用互达距离来表示两个样本点之间的距离 ——>密集区域的样本距离不受影响——>稀疏区域的样本点与其他样本点的距离被放大——>…...
【Python】批量将PDG合成PDF,以及根据SS号重命名秒传的文件
目录 说明批量zip2pdf批量zip2pdf下载SS号重命名源代码SS号重命名源代码下载附录,水文年鉴 说明 1、zip2pdf是一个开源软件,支持自动化解压压缩包成PDG,PDG合成PDF,笔者在其基础上做了部分修改,支持批量转换。 2、秒…...
2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术
# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…...
Word 自动保存失效、文档异常卡顿怎么办?一文解决 Cobra DocGuard 加载项干扰问题
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
IDEA项目.gitignore配置避坑指南:从创建项目到后期维护的全流程实践
IDEA项目.gitignore配置避坑指南:从创建项目到后期维护的全流程实践 在团队协作开发中,.gitignore文件就像代码仓库的"守门人",它决定了哪些文件应该被版本控制,哪些应该被拒之门外。但许多开发者往往在项目后期才发现.…...
告别迷茫!手把手教你用Keil uVision5为LPC1759创建第一个完整工程(附UART驱动避坑指南)
从零构建LPC1759工程:Keil uVision5实战指南与UART深度解析 当你第一次拿到LPC1759开发板时,面对Keil uVision5的复杂界面和芯片手册中密密麻麻的寄存器描述,是否感到无从下手?作为ARM Cortex-M3家族中的经典型号,LPC1…...
专业级DOCX转LaTeX终极指南:docx2tex的完整高效解决方案
专业级DOCX转LaTeX终极指南:docx2tex的完整高效解决方案 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 在学术写作和技术文档创作中,Microsoft Word和LaTeX代表了两种…...
LayerDivider:3个技巧彻底改变你的图像分层工作流
LayerDivider:3个技巧彻底改变你的图像分层工作流 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的插画分层而烦恼吗?…...
Realsense D435i多相机标定后,如何用Kalibr结果文件(camchain.yaml)做实际应用?
Realsense D435i多相机标定结果实战:从camchain.yaml到SLAM落地的完整指南 当你完成Kalibr标定并拿到camchain.yaml文件时,真正的挑战才刚刚开始。这份看似简单的YAML文件里藏着多相机系统的空间关系密码,但90%的用户只停留在"标定完成&…...
用STM32F103C8T6和HC-05做个遥控小车?从模块配置到代码联调的完整保姆级教程
从零打造蓝牙遥控小车:STM32F103C8T6与HC-05全流程实战指南 当你用手机轻轻一点,面前的迷你小车立刻响应指令开始移动——这种将虚拟控制转化为物理运动的成就感,正是嵌入式开发的魅力所在。本文将带你完整实现这个经典项目,不仅包…...
终极指南:解决AeroSpace多显示器分辨率闪烁问题的完整方案
终极指南:解决AeroSpace多显示器分辨率闪烁问题的完整方案 【免费下载链接】AeroSpace AeroSpace is an i3-like tiling window manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ae/AeroSpace AeroSpace作为一款类i3的macOS窗口管理器&…...
Harness Engineering(驾驭工程)落地硬件设备及价格参考
Harness Engineering(驾驭工程) 是一套AI智能体(Agent)的软件管控体系,核心是沙箱、监控、测试与反馈循环的软件层设计,本身不依赖专用硬件。但要在企业级场景落地,需要充足的通用算力、存储、网…...
VSCode车载适配生死线:CANoe/CANalyzer协同调试失效的3个隐藏配置错误(附Wireshark级通信日志注入方案)
更多请点击: https://intelliparadigm.com 第一章:VSCode车载适配生死线:CANoe/CANalyzer协同调试失效的3个隐藏配置错误(附Wireshark级通信日志注入方案) 当 VSCode 作为车载嵌入式开发主力编辑器接入 CANoe/CANalyz…...
