五、双向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.200

nat-policy
 rule name SNAT
  source-zone untrust
  destination-zone trust
  destination-address 192.168.100.1 mask 255.255.255.255
  action 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-policy
 rule name SNAT
  source-zone untrust
  destination-zone trust
  destination-address 192.168.100.1 mask 255.255.255.255
  action 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 1
 section 0 210.1.1.100 210.1.1.100                   公网私网都可以,只要不和私网服务器在同一网段
 
nat-policy
  rule name Policy
  source-zone untrust
  destination-zone trust
  destination-address 192.168.100.1 mask 255.255.255.255
  action 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可以起到简化网络配置、方便网络管理功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/186575.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NX二次开发UF_CURVE_ask_curve_struct 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_struct Defined in: uf_curve.h int UF_CURVE_ask_curve_struct(tag_t curve_id, UF_CURVE_struct_p_t * curve_struct ) overview 概述 Gets the structure p…

post请求参数全大写后台接不到参数

post请求参数全大写后台接不到参数 开发过程中,我们一般都习惯用驼峰命名法,但是特殊情况要求请求参数全大写(或者首字母大写),测试验证的时候发现,接收不到请求参数。 前端请求传递: 服务端接…

数字图像处理(实践篇)二 画出图像中目标的轮廓

目录 一 涉及的OpenCV函数 二 代码 三 效果图 一 涉及的OpenCV函数 contours, hierarchy cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) image:源图像。mode:轮廓的检索方式。cv2.RETR_EXTERNAL(只检测…

实现简单的操作服务器和客户端(上)

一、说明 描述:本教程介绍如何使用 simple_action_server 库创建斐波那契动作服务器。此示例操作服务器生成斐波那契序列,目标是序列的顺序,反馈是计算的序列,结果是最终序列。 内容 创建操作消息编写一个简单的服务器 代码

第五届全国高校计算机能力挑战赛-程序设计挑战赛(C语言模拟题)

1、已有定义“int a[10]{1,2},i0;”,下面语句中与“ a[i]a[i1],i;”等价的是()。 A. a[i]a[i1]; B. a[i]a[i]; C. a[i]a[i1]; D. i,a[i-1]a[i]; 2、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。 A. 7和5 …

常见树种(贵州省):015榧树、秋枫、滇合欢、锥栗、红豆树、刺槐、余甘子、黑荆、槐树、黄檀

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、榧树 …

tp8 使用rabbitMQ(3)发布/订阅

发布/订阅 当我们想把一个消息,发送给 多个消费者的时候,我们把这种模式叫做发布/订阅模式,比如我们做两个消费者,其中一个消费者把消息写入磁盘中,别一个消费者把消息结果输出到屏幕上,就要用到发布订阅模…

生物识别访问面临风险

安全公司 Blackwing Intelligence 发现了多个允许您绕过Windows Hello 身份验证的漏洞。 戴尔 Inspiron 灵越 15、联想 ThinkPad T14 和 Microsoft Surface Pro X笔记本电脑上会出现这种情况,原因是设备中集成了来自Goodix、Synaptics 和 ELAN的指纹传感器。 所有…

Windows核心编程 跨进程操作

目录 进程A拿到进程B句柄是否能用 句柄的权限 关于句柄表 跨进程使用句柄-继承 CreateProcess:bInheritHandles OpenProcess FindWinodw GetCurrentProcess 跨进程使用句柄-拷贝 跨进程操作内存 WriteProcessMemory VirtualProtectEx ReadProcessMemo…

情感对话机器人的任务体系

人类在处理对话中的情感时,需要先根据对话场景中的蛛丝马迹判断出对方的情感,继而根据对话的主题等信息思考自身用什么情感进行回复,最后结合推理出的情感形成恰当的回复。受人类处理情感对话的启发,情感对话机器人需要完成以下几…

npm pnpm yarn(包管理器)的安装及镜像切换

安装Node.js 要安装npm,你需要先安装Node.js。 从Node.js官方网站(https://nodejs.org)下载并安装Node.js。 根据你的需要选择相应的版本。 一路Next,直到Finish 打开CMD,输入命令来检查Node.js和npm是否成功安装 nod…

授时小课堂——北斗卫星信号和GPS卫星信号谁更强?

北斗卫星信号好还是GPS信号更胜一筹呢?下面小编带大家一起来比较一下看看吧。 1. 系统覆盖范围 北斗卫星导航系统是中国自主研发的授时定位系统,其覆盖范围包括全球各个地区。但在海外地区,主要还是东南亚、南亚、中亚等地区,北斗…

精通Nginx(18)-FastCGI/SCGI/uWSGI支持

最初用浏览器浏览的网页只能是静态html页面。随着社会发展,动态获取数据、操作数据需要变得日益强烈,CGI应运而生。CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与静态Web服务器交互的一个标准接口。它可以使外部程序处理浏览器送来的表单数据并对此作出…

NX二次开发UF_CURVE_ask_curve_struct_data 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_struct_data Defined in: uf_curve.h int UF_CURVE_ask_curve_struct_data(UF_CURVE_struct_p_t curve_struct, int * type, double * * curve_data ) overview…

数据结构与算法编程题20

统计二叉树的叶结点个数。 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 typedef struct BiNode {ElemType data;BiNode* lchild, * rchild; }BiNode,*BiTree;bool Create_tree(BiTre…

JWT和Token之间的区别

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

【点云surface】 凹包重构

1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析&#xff1a; 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…

模板初阶(1):函数模板,类模板

一、函数模板 1.1 概念 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型产生函数的特定类型版本。 格式&#xff1a; template <typename T>或template <class T> template <class T>…

一起学docker系列之九docker运行mysql 碰到的各种坑及解决方法

目录 前言1 Docker 运行mysql命令2 坑一&#xff1a;无法读取/etc/mysql/conf.d目录的问题3 坑二&#xff1a;/tmp/ibnr0mis 文件无法创建/写入的问题4 坑三&#xff1a;Navicat 连接错误&#xff08;1045-access denied&#xff09;5 坑四&#xff1a;MySQL 登录失败问题结语 …

micro_ros

原文链接Supported Hardware | micro-ROS Supported Hardware The main targets of micro-ROS are mid-range 32-bits microcontroller families. Usually, the minimum requirements for running micro-ROS in an embedded platform are memory constraints. Since memory u…