四、防火墙-NAT Server

news2024/11/15 21:44:33

学习防火墙之前,对路由交换应要有一定的认识

  • NAT Server
    • 1.1.基本原理
    • 1.2.多出口场景下的NAT Server
    • 1.3.源进源出

——————————————————————————————————————————————————

NAT Server

一般对用户提供一些可访问的服务,这些服务器的地址一般都是私网地址,公网用户是无法直接访问私网地址。源NAT是对私网用户访问公网的报文的源地址进行转换,而服务器对公网提供服务时,是公网用户向私网发起访问,方向正好反过来了。于是,NAT转换的目标也由报文的源地址变成目的地址。针对服务器地址转换,称为:NAT Server(服务器映射)。

——————————————————————————————————————————————————

1.1.基本原理

结合下图所示来看防火墙上的NAT Server是如何实现。

NAT Server也需要用到公网IP地址,与源NAT不同的是,NAT Server的公网IP地址不需要放到NAT地址池这个容器中,直接使用即可。这里假设公网IP:210.1.1.1。

在这里插入图片描述

配置的过程如下:

[USG6000V2]nat server global 210.1.1.1 inside 192.168.100.1

按照上述配置会将服务器上所有的服务项都发布到公网,会带来严重风险,华为防火墙支持配置指定协议的NAT Server,只将服务器上特定的服务项对公网发布,可以按照如下方式,将服务器上的80端口映射为9980端口供公网用户使用。

nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80

这里将80端口转换成9980端口,而不是转换成80端口,是因为一些地区的运营商默认会阻断80、8000、8080端口业务,而导致业务失败。

NAT Server配置完,也会生成server-map,但是是静态的,不需要报文来触发,只有配置被删除,server-map才会清除。

在这里插入图片描述

Server-map表项和之前一样,都存在正向和反向。不论是正向和反向,都仅只是实现地址转换。而不像ASPF的Server-map表项打开一个可以绕过安全策略检查的通道。所以无论公网用户要访问私网服务器还是私网服务器主动访问公网时,都需要配置安全策略。

这里有个经典的问题:NAT Server场景下,为了让公网用户能够访问私网服务器,配置安全策略时,策略的目的地址是服务器的私网地址还是公网地址?

当公网用户通过210.1.1.1:9980访问私网服务器时,防火墙收到报文的首包,首先查找匹配到Server-map表项,将报文的目的地址和端口转换为192.168.100.1:80。然后根据目的地址查找路由找到出接口。根据入接口和出接口所处的区域,判断报文在那两个安全区域流动,进行区域安全策略检查。

因此,配置安全策略,策略的目的地址应配置为服务器私网地址,而不是服务器对外映射的公网地址。

安全策略配置:

security-policy
 rule name Nat_Ser
  source-zone untrust
  destination-zone trust
  destination-address 192.168.100.0 mask 255.255.255.0
  service http
  action permit

报文通过安全检查后,会建立如下会话表,并将报文转发到私网服务器。

在这里插入图片描述

之后服务器对公网用户的请求做出响应,响应到达防火墙后匹配上面的会话表,防火墙将报文的源地址和源端口转换为210.1.1.1:9980,而后发送至公网。公网用户和私网服务器交互后续报文。防火墙都会直接根据会话表对其进行地址和端口转换,而不会再去查找Server-map表项。

配置黑洞路由
NAT Server也需要配置黑洞路由

ip route-static 210.1.1.1 32 NULL 0

——————————————————————————————————————————————————

1.2.多出口场景下的NAT Server

与源NAT相同,NAT Server也面临多出口问题。如图:通过ISP1和ISP2两条链路连接internet,将私网服务器提供给Internet上的用户访问。

在这里插入图片描述

防火墙作为出口网关,双出口、双ISP接入公网时,NAT Server配置通常需要一分为二,让一个私网服务器向两个ISP发布两个不同的公网地址供公网用户访问。一分为二方法有两种:

方法1:将接入不同ISP的公网接口规划在不同安全区域中,配置NAT Server时,带上Zone参数,使同一个服务器向不同安全区域发布不同的公网地址。

在这里插入图片描述

配置过程,假设私网服务器对ISP1发布公网地址:110.1.1.1,对ISP2发布的公网地址是210.1.1.1。

interface GigabitEthernet1/0/1            
 ip address 110.1.1.1 255.255.255.0
interface GigabitEthernet1/0/0
 ip address 210.1.1.1 255.255.255.0
interface GigabitEthernet1/0/2
 ip address 192.168.10.254 255.255.255.0

firewall zone trust
 add interface GigabitEthernet1/0/2

firewall zone name ISP1
 set priority 10
 add interface GigabitEthernet1/0/1
firewall zone name ISP2 
 set priority 20
 add interface GigabitEthernet1/0/0

配置带有zone参数的NAT Server
 nat server  zone ISP1 protocol tcp global 110.1.1.1 9980 inside 192.168.10.2 80
 nat server  zone ISP2 protocol tcp global 220.1.1.1 9980 inside 192.168.10.2 80

基于不同域间关系配置两条安全策略
security-policy
 rule name ISP1
  source-zone ISP1
  destination-zone trust
  destination-address 192.168.10.2 mask 255.255.255.255
  action permit
 rule name ISP2
  source-zone ISP2
  destination-zone trust
  destination-address 192.168.10.2 mask 255.255.255.255
  action permit

黑洞路由
ip route-static 110.1.1.1 255.255.255.255 NULL0
ip route-static 210.1.1.1 255.255.255.255 NULL0

配置完成后,防火墙会生成如下Server-map表项

在这里插入图片描述
从Server-map表项可以看出,正向和反向表项都已生成,Internet用户通过正向Server-map表项就可以访问私网服务器。私网服务器通过反向Server-map也可以主动访问Internet。

推荐在网络规划时,把防火墙与ISP1和ISP2两个接口分别加入到不同的安全区域,然后规划带有ZONE参数的NAT SERVER功能。

如果两个接口在同一区域如Untrust,并且现实情况不允许调整,那么还有另外一种配置方法。

方法二:配置NAT Server时候带上No-revers参数,使同一个服务器向外发布两个不同的公网地址。

在这里插入图片描述

为了保证可以正常配置NAT Server功能,必须使用no-reverse参数。

nat server 0 protocol tcp global 110.1.1.1 9980 inside 192.168.10.2 www no-reverse
nat server 1 protocol tcp global 210.1.1.1 9980 inside 192.168.10.2 www no-reverse

配置完成后,防火墙生成如下Server-map表项

在这里插入图片描述

从会话看出,只生成了正向表项,Internet上的公网用户通过正向表项可以访问私网服务器。但是如果私网服务器想要主动访问Internet,因为没有了反向表项,就必须在Trunst------Untrust域间配置源NAT策略。

如果在同一区域,不带No-reverse参数直接配置两条NAT SERVER命令,压根就不能同时下发。

在这里插入图片描述
思考下,假如这两条命令能同时下发,分两次下发。

在这里插入图片描述
在这里插入图片描述

第一条,反向表,将报文源地址192.168.10.2转换为110.1.1.1,第二条,反向表,将源地址192.168.10.2,转换为210.1.1.1,如果同时下发后,防火墙既可以将报文源地址由192.168.10.2转换为110.1.1.1,又可以将源地址192.168.10.2,转换为210.1.1.1,于是,防护墙凌乱了。这就是命令不带No-reverse参数同时下发出现的问题。如果带上no-reverse参数,就不会生成反向Server-map表项。

总结:
多出口下,两个接口分别配置两个区域,配置NAT Server时,配置zone参数,生成静态server-map表项,包含正向和反向,能区分反向的区域。
多出口下,两个接口同时配置一个区域,配置NAT Server时,配置no-reverse参数,生成静态server-map表项,只包含正向,无法区分反向的区域。

——————————————————————————————————————————————————

1.3.源进源出

上面介绍了NAT Server一分为二的配置方法,根据防火墙与ISP1和ISP2相连的2个接口是否加入到不同的安全区域,选择带有ZONE参数或带有No-Reverse参数来配置NAT Server。除此之外,双出口环境中,还需要考虑两个ISP中的公网用户使用哪个公网地址访问私网服务器的问题。

在这里插入图片描述

例如:ISP1网络中的公网用户如果通过防火墙发布了ISP2的公网地址来访问私网服务器,或者ISP1的公网用户访问服务器后,从ISP2回包的,基本就属于绕路了。而且有时候两个ISP之间由于利益冲突可能会存在无法互通的情况,就会导致访问过程很慢或干脆不通。

如第一种情况,要求我们向两个ISP中的公网用户告知公网地址时,避免两个ISP中的公网用户使用非本ISP的公网地址访问私网服务器。即对于ISP1的用户,就让其使用防火墙发布给ISP1的公网地址来访问私网服务器,对于ISP2的用户,就让使用防火墙发布的ISP2公网地址来访问。

第二种情况,就是上图情况,ISP1中的公网用户通过防火墙发布给ISP1的公网地址访问私网服务器,报文从防火墙G1/0/1进入,私网服务器回应报文到达防火墙后,虽然匹配了会话表并进行地址转换,但还是要根据目的地之查找路由来确定出接口。如果防火墙没有配置到该公网用户的明细路由,只配置了缺省路由,就可能会导致回应报文从连接ISP2的链路G1/0/0接口发出,该报文在ISP2的网络中传输时凶多吉少,有可能会变慢,也可能干脆就不能回到公网用户处,访问就会中断。

为了解决这个问题,可以在防火墙配置明细路由,让防火墙严格按照ISP1和ISP2各自的公网地址来选路。但ISP1和ISP2的公网地址数量很大,配置起来不太现实。为此,防火墙提供了源进源回(或源进源出)功能,即请求报文从某条路径进入,响应报文依然沿着同样的路径返回,而不用查找路由表来确定接口,保证了报文从一个接口进出。

源进源回功能在接口上配置,防火墙连接ISP1和ISP2的两个接口上都需要配置。假设,ISP1提供的下一跳接口是:110.1.1.254,ISP2提供的下一跳接口:210.1.1.254

interface GigabitEthernet1/0/1
redirect-reverse next-hop 110.1.1.254
interface GigabitEthernet1/0/0
redirect-reverse next-hop 210.1.1.254

其他根据版本不同所使用的命令:

reverse-route nexthop 110.1.1.254


gateway 110.1.1.254
reverse-route enable

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端学习网站推荐

1.菜鸟教程(程序员必备)菜鸟教程 - 学的不仅是技术,更是梦想! 2.npm库 npm | Home 3.uniapp学习官网 uni-app官网 4.vue官网 快速上手 | Vue.js 5.ECharts图表 Apache ECharts 6.ES6学习 ES6 入门教程 7.Three.js学习 Three.js…

数据结构——单链表(Singly Linked List)

1.链表介绍 链表是一种物理储存上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 对于上图,每一个结点都是一个结…

概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍

1 离散型随机变量 1.1 0-1分布 设随机变量X的所有可能取值为0与1两个值,其分布律为 若分布律如上所示,则称X服从以P为参数的(0-1)分布或两点分布。记作X~ B(1,p) 0-1分布的分布律利用表格法表示为: X01P1-PP 0-1分布的数学期望E(X) 0 *…

【前端】让列表像Excel单元格一样编辑

前言 领导说了一堆的话,最后总结一句就是客户很懒,客户的员工更加懒。 本着让别人节省时间的原则,提倡出了让列表和Excal的单元格一样,不仅看数据还可以随时更改数据。 查资料 根据 Jeecg-Vue3 源码介绍,从而知道是基于 Vben Admin 开源项目进行改造的。 因此在 Vben…

web前端之引入svg图片、html引入点svg文件、等比缩放、解决裁剪问题、命名空间、object标签、阿里巴巴尺量图、embed标签、iframe标签

MENU 前言直接在页面编写svg使用img标签引入通过css引入使用object标签引入其他标签参考资料 前言 web应用开发使用svg图片的方式,有如下几种方式 1、直接在页面编写svg 2、使用img标签引入 3、通过css引入 4、使用object标签引入 直接在页面编写svg 在html页面直接…

hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误,大家觉得应该怎么办?从哪方面入手呢? 1.百…

【CVE-2021-1675】Spoolsv打印机服务任意DLL加载漏洞分析

漏洞详情 简介 打印机服务提供了添加打印机的接口,该接口缺乏安全性校验,导致攻击者可以伪造打印机信息,在添加新的打印机时实现加载恶意DLL。这造成的后果就是以system权限执行任意代码。 影响版本 windows_10 20h2 windows_10 21h1 win…

我在electron中集成了自己的ai大模型

同学们可以私信我加入学习群! 正文开始 前言一、大模型选择二、获取key三、调用api四、调用ai模型api时,解决跨域总结 前言 最近单位把gpt、文心一言、通义千问、星火等等等等你能想到的ai大模型都给禁掉了,简直丧心病狂。 不知道有多少感同…

【多线程】-- 01 线程创建之继承Thread多线程同步下载网络图片

多线程 1 简介 1.1 多任务、多线程 普通方法调用:只有主线程一条执行路径 多线程:多条执行路径,主线程和子线程并行交替执行 如下图所示: 1.2 程序.进程.线程 一个进程可以有多个线程,例如视频中同时听声音、看图…

unordered_map 与 unordered_set 的模拟实现

unordered_map 与 unordred_set 的模拟实现与 map 与 set 的模拟实现差不多。map 与 set 的模拟实现中,底层的数据结构是红黑树。unordered_map 与 unordered_set 的底层数据结构是哈希表。因此,在模拟实现 unordered_map 与 unordred_set 之前你必须确保…

Find My鼠标|苹果Find My技术与鼠标结合,智能防丢,全球定位

随着折叠屏、多屏幕、OLED 等新兴技术在个人计算机上的应用,产品更新换代大大加速,进一步推动了个人计算机需求的增长。根据 IDC 统计,2021 年全球 PC 市场出货量达到 3.49 亿台,同比增长 14.80%,随着个人计算机市场发…

【从浅识到熟知Linux】基本指定之zip、unzip和tar

🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:周五写博客更刺激了,想到明天可以晚起床半小时,瞬间精神抖擞。再写它10篇博客。 文章前言:本文介绍zip…

Tars-GO 开发

默认环境是安装好的 创建服务: tarsgo make App Server Servant GoModuleName Tars 实例的名称,有三个层级,分别是 App(应用)、Server(服务)、Servant(服务者,有时也称 Object&am…

什么是AWS CodeWhisperer?

AWS CodeWhisperer https://aws.amazon.com/cn/codewhisperer/ CodeWhisperer 经过数十亿行代码的训练,可以根据您的评论和现有代码实时生成从代码片段到全函数的代码建议。 ✔ 为您量身定制的实时 AI 代码生成器 ✔ 支持热门编程语言和 IDE ✔ 针对 AWS 服务的优…

前端大厂(腾讯、字节跳动、阿里......)校招面试真题解析,让你面试轻松无压力!

前言 校招很重要,应届生的身份很珍贵!在校招的时候与我们竞争的大部分都是没有工作经验的学生,而且校招企业对学生的包容度高,一般对企业来说,社招更看重实际工作经验,而校招更愿意“培养人”,校…

Linux(7):Vim 程序编辑器

vi 基本上 vi 共分为三种模式,分别是【一般指令模式】、【编辑模式】与【指令列命令模式】。 这三种模式的作用分别是: 一般指令模式(command mode) 以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模…

Rust UI开发(二):iced中如何为窗口添加icon图标

注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 想要了解如何构建简单窗口的可以看本系列的第一篇: Rust UI开发:使用iced构建UI时,如何在界面显示中文字符 本篇是系…

量子计算的发展

目录 一、量子力学的发展历程二、量子计算的发展历程三、量子计算机的发展历程四、量子信息科学的发展 一、量子力学的发展历程 量子力学是现代物理学的一个基本分支,它的发展始于20世纪初。以下是量子力学发展的几个重要阶段: 普朗克(1900&…

ubuntu环境删除qtcreator方法

文章目录 方法1方法2方法3参考不同的安装方法,对应不同的删除方法 方法1 apt-get或者dpkg 方法2 QtCreatorUninstaller 方法3 MaintenanceTool

机器学习【02】在 Pycharm 里使用 Jupyter Notebook

只有 Pycharm 的 Professional 版才支持 Jupyter Notebook 本教程结束只能在pycharm中使用,下载的库在pycharm选中的虚拟环境中 ssh -L localhost:9999:localhost:8888 usernameip这句话每次都要用 准备 1.服务器安装jupyter sudo snap install jupyter2.在 Jup…