四、防火墙-NAT Server
学习防火墙之前,对路由交换应要有一定的认识
- 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-policyrule name Nat_Sersource-zone untrustdestination-zone trustdestination-address 192.168.100.0 mask 255.255.255.0service httpaction 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/0ip address 210.1.1.1 255.255.255.0
interface GigabitEthernet1/0/2ip address 192.168.10.254 255.255.255.0firewall zone trustadd interface GigabitEthernet1/0/2firewall zone name ISP1set priority 10add interface GigabitEthernet1/0/1
firewall zone name ISP2 set priority 20add interface GigabitEthernet1/0/0配置带有zone参数的NAT Servernat server zone ISP1 protocol tcp global 110.1.1.1 9980 inside 192.168.10.2 80nat server zone ISP2 protocol tcp global 220.1.1.1 9980 inside 192.168.10.2 80基于不同域间关系配置两条安全策略
security-policyrule name ISP1source-zone ISP1destination-zone trustdestination-address 192.168.10.2 mask 255.255.255.255action permitrule name ISP2source-zone ISP2destination-zone trustdestination-address 192.168.10.2 mask 255.255.255.255action 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.254gateway 110.1.1.254
reverse-route enable
相关文章:
四、防火墙-NAT Server
学习防火墙之前,对路由交换应要有一定的认识 NAT Server1.1.基本原理1.2.多出口场景下的NAT Server1.3.源进源出 —————————————————————————————————————————————————— NAT Server 一般对用户提供一些可访问的…...
Rust - cargo项目里多个二进制binary crate的编译运行
目录 foo - Cargo.toml - src - - main.rs - - bin - - - other-bin.rs将除默认入口文件外待作为二进制crate处理的文件放在src/bin目录下 方法一: 命令行增加配置项 --bin xxx cargo run --bin foo // 注意! 这里是包名,不是main cargo run --bin o…...
python爬虫教程:selenium常用API用法和浏览器控制
文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…...
2024年天津天狮学院专升本食品质量与安全专业《分析化学》考纲
2024年天津天狮学院食品质量与安全专业高职升本入学考试《分析化学》考试大纲 一、考试性质 《分析化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…...
2023年亚太地区数学建模大赛 C 题
我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源(非常规汽车燃料指汽油、柴油以外的燃料),将先进技术进行汽车动力控制和驱动相结合的汽车。新能源汽车主要包括四种类型:…...
TDlib readme
不同开发语言使用TDlib的连接入口:td/example/README.md at master tdlib/td (github.com) 如golang:td/example/README.md at master tdlib/td (github.com)...
紧急救援【Dijkstra】
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的…...
「Verilog学习笔记」数据累加输出
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 在data_out准备好,valid_b拉高时,如果下游的ready_b为低,表示下游此时不能接收本模块的数据,那么,将会拉低ready…...
typeof,instanceof
1.typeof typeof运算符返回的结果是以小写的字符串表示的变量的类型 2.instanceof instanceof运算符用于判断右边构造函数的原型对象是否在左边对象的原型链上 let arr[]let obj{}let datenew Dateconsole.log(arr instanceof Array)console.log(arr instanceof Object)conso…...
传统数仓和clickhouse对比
背景 传统数仓一般都是HiveSparkSql作为代表,不过也包括Kylin等,而clickhouse是实时OLAP的代表,我们简单看下他们的对比 传统数仓和clickhouse对比 HiveSparkSQL的传统数仓: 1.数据更新速度慢,由于传统数仓一般都是…...
burpsuite的大名早有耳闻,近日得见尊荣,倍感荣幸
问题: burpsuite中文乱码何解? burpsuite 与君初相识,犹如故人归。 burpsuite早有耳闻,近日得见真容,果然非同凡响。 Burp Suite is a comprehensive suite of tools for web application security testing. burp …...
Xshell连接VMware虚拟机中的CentOS
Xshell连接VMware虚拟机中的CentOShttps://www.cnblogs.com/niuben/p/13157291.html 步骤: 1. 检查Linux虚拟机的网络连接模式,确保它是NAT模式。(由于只在本机进行连接,所以没有选择桥接模式。当然,桥接模式的配置会…...
JVM类加载的过程和JVM垃圾回收机制
文章目录 一、JVM类加载的过程1.1类加载的基本流程1.1.1加载1.1.2验证1.1.3准备1.1.4解析1.1.5初始化 1.2双亲委派模型 二、JVM垃圾回收机制2.1找到垃圾2.1.1引用计数(比如Python,PHP中用到)2.1.2可达性分析(比如Java中用到) 2.2释放垃圾2.2.1标记清除2.2.2复制算法…...
【git error|SourceTree】error: bad signature 0x00000000 fatal: index file corrupt
报错 error: bad signature 0x00000000 fatal: index file corrupt 场景 在使用git add . 提交代码到缓冲区时或使用SourceTree时电脑宕机,重启后再次提交代码会出现该提示 原因分析 .git目录下的index文件损坏 解决方式 //删除索引文件 rm -f .git/index //回…...
读书笔记:《宽客人生:依曼纽尔·德曼》
金融工程,也叫数量金融,洞察了证券价值与不确定性之间的关系。 布莱克-斯科尔斯模型可以告诉我们如何利用标的股票来复制期权,以及复制期权的成本,做市商利用此来复制期权,以规避无法从其他人那里购买合适价格的期权的…...
车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景)
车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是…...
单例模式与多线程
目录 前言 正文 1.立即加载/饿汉模式 2.延迟加载/懒汉模式 1.延迟加载/懒汉模式解析 2.延迟加载/懒汉模式的缺点 3.延迟加载/懒汉模式的解决方案 (1)声明 synchronized 关键字 (2)尝试同步代码块 (3&am…...
Kafka系列 - Kafka一篇入门
Kafka是一个分布式流式处理平台。很多分布式处理系统,例如Spark,Flink等都支持与Kafka集成。 Kafka使用场景 消息系统:Kafka实现了消息顺序性保证和回溯消费。存储系统:Kafka把消息持久化到磁盘,相比于其他基于内存的…...
百度 文心一言 sdk 试用
JMaven Central: com.baidu.aip:java-sdk (sonatype.com) Java sdk地址如上: 文心一言开发者 文心一言 (baidu.com) ERNIE Bot SDK https://yiyan.baidu.com/developer/doc#Fllzznonw ERNIE Bot SDK提供便捷易用的接口,可以调用文心一言的能力&#…...
SQLite 和 SQLiteDatabase 的使用
实验七:SQLite 和 SQLiteDatabase 的使用 7.1 实验目的 本次实验的目的是让大家熟悉 Android 中对数据库进行操作的相关的接口、类等。SQLiteDatabase 这个是在 android 中数据库操作使用最频繁的一个类。通过它可以实现数据库的创建或打开、创建表、插入数据、删…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
