草庐IT

防火墙NAT策略

微笑的段嘉许 2023-03-28 原文

?博客主页: ​​微笑的段嘉许博客主页​

?欢迎关注?点赞?收藏⭐留言?

?本文由微笑的段嘉许原创!

?51CTO首发时间:?2022年9月30日?

✉️坚持和努力一定能换来诗与远方!

?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

⭐本文介绍⭐

人类对计算机网路的使用已经拓展到各个领域,而计算机网络的设计者在当时无法想象网络能有今天的规模。任何一个接入互联网的计算机、lpad、手机及安卓电视,要想在互联网中畅游,必须有一个合法的IP地址。而IP地址,曾经认为足以容纳全球的计算机,但是在今天看来,已经严重枯竭。IPv6的出现就是为了解决地址不足的问题。但在IPv6普及之前,需要有一个过渡技术——NAT。NAT的出现缓解了地址不够用的情况,它可以让同一局域网内60000多用户同时使用一个合法P地址访问互联网。NAT技术不是新技术,对于我们来说也并不陌生,文本重点介绍华为的NAT技术。


?理论讲解:

NAT概论:

NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术,绝大多数网络环境中在使用NAT技术。关于NAT技术的原理在之前的文章中已经有所提及,本文的重点放在华为相关的NAT知识和实验配置上。

NAT分类

在内外网的边界,流量有出、入两个方向,所以NAT技术源地址转换和目标地址转换两类。一般情况下,源地址转换主要用于解决内部局域网计算机访问Internet的场景;而目标地址转换主用于解决Internet用户访问局域网服务器的场景,目标地址通常被称为服务器地址映射。 华为支持的源地址转换方式有如下几类:

  • NAT No-PAT:类似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网IP地址,实际情况下使用较少,主要适用于需要上网的用户较少,而公网地址又足够的场景下。
  • NAPT (Network Address and Port Translation,网络地址和端口转换);类似于Cisco的PAT转换,NAPT既转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址。属于多对多或多对一转换,可以节约IP地址,使用场景较多,主要适用于内部大量用户需要上网,同时仅有少数几个公网P地址可用的场景下。
  • 出接口地址(Easy-IP):因其转换方式非常简单,所以也称为Easy-IP,和NAPT一样,既转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的P地址,属于多对一转换,可以节约IP地址,主要适用于没有额外的公网地址可用,内部上网用户非常多的场景下,直接通过外网接口本身的IP地址作为转换目标 。
  • Smart NAT(智能转换):通过预留一个公网地址进行NAPT转换,而其他的公网地址用来进行 NAT No-PAT 转换其主要用于平时上网用户比较少,而申请的公网地址基本可以满足这些少量用户进行NAT NO-PAT转换,但是偶尔会出现上网用户倍增的情况。
  • 三元组NAT:与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普通NAT中无法实现的问题。其主要用于外部用户访问局域网用户的一些P2P应用。

路由黑洞

NAT类型

描述

是否配置黑洞路由

NAT No-PAT

当公网用户访问转换后地址时产生环路或产生ARP报文


NAPT

当公网用户访问转换后地址时产生环路或产生ARP报文


出接口地址(Easy-IP)

转换后的地址就是外网接口地址、公网用户访问该地址被防火墙接收(策略允许)或丢弃(策略不允许),不产生环路


NAT Server(粗泛)

当公网用户访问映射后地址时直接转发给内部服务器


NAT Server(精细)

当公网用户访问映射后地址转换时产生环路或产生ARP报文


NAT对报文的处理流程

防火墙接口从收到一个报文到最终发送出去需要经历一系列处理流程,而NAT 只是其中的一项任务。NAT的配置受到路由及安全策略的影响,所以了解NAT对报文的处理流程对配置NAT 有非常大的帮助。NAT对报文的处理流程如图所示。

  • 防火墙收到报文后,首先检查报文是否匹配Server-map中的条目,如果是,则根据表项转换报文的目标地址,然后进行步骤(3)处理;否则进行步骤(2)处理。
  • 查找是否存在目标NAT的相关配置,如果是,并且符合NAT条件,则转换目标地址后进行步骤(3)处理;否则直接进行步骤(3)处理。
  • 根据报文的目标地址查找路由表,如果存在目标路由,则进行步骤(4)处理;否则丢弃报文
  • 依次匹配安全策略中的规则,如果策略允许报文通过,则进行步骤(5)处理;否则丢弃报文。
  • 查找是否存在源NAT的相关配置及是否符合NAT条件,如果是,则转换源地址后进行步骤(6)处理;否则直接进行步骤(6)处理。
  • 在发送报文之前创建会话,后续和返回的报文可以直接匹配会话表转发。
  • 防火墙发送报文。

?友情提示:

因为防火墙处理报文的顺序是目标地址转换→安全策略→源地址转换,所以在NAT环境中,安全策略的源地址应该是源地址转换之前的地址,目标地址应该是目标地址转换之后的地址。

?实验配置与实现:

拓扑图

推荐步骤

路由器配置IP地址,将防火墙接口加入指定的区域配置IP地址,内网服务器配置为FTP和web服务器,外网服务器配置web服务器使用内网client1访问内网服务器是否正常,client2访问外网web服务器是否正常

防火墙访问外网使用默认路由,路由器访问内网使用静态路由,防火墙设置安全策略允许内网访问外网使用ping命令测试全网互通

防火墙配置Easy-IP的NAT将内网访问外网的流量映射到防火墙外网接口上查看会话表验证

防火墙配置Nat Server将web01服务器的80和21端口分别映射到外网IP地址192.168.100.3和192.168.100.4的80端口和21号端口外网客户端访问验证

实验步骤

一、路由器配置IP地址,将防火墙接口加入指定的区域配置IP地址,内网服务器配置为FTP和web服务器,外网服务器配置web服务器使用内网client1访问内网服务器是否正常,client2访问外网web服务器是否正常

1、将防火墙接口加入指定的区域

1)进入到Trust区域

2)接口加入到区域

3)配置IP地址

4)进入到untrust区域

5)接口加入到区域

6)配置IP地址

7)查看配置的IP地址

2、路由器配置IP地址

1)路由器配置IP地址

2)查看配置的IP

3、内网服务器配置为FTP和web服务器

1)配置web01服务器

2)配置ftp服务器

3)Client1配置IP 地址

4)PC1配置IP地址

5)web02 配置IP地址

6)PC2配置IP地址

7)client2配置IP地址

4、使用内网client1访问内网服务器是否正常

1)使用client1访问内网服务器

5、client2访问外网web服务器是否正常

1)使用client2访问外网服务器

二、防火墙访问外网使用默认路由,路由器访问内网使用静态路由,防火墙设置安全策略允许内网访问外网使用ping命令测试全网互通

1、防火墙访问外网使用默认路由,路由器访问内网使用静态路由

1)在防火墙上配置一条去外网的默认路由

2)R1配置一条去10.0网络的静态路由

2、防火墙设置安全策略允许内网访问外网防火墙设置安全策略允许内网访问外网

1)允许内外网络ping防火墙

2)设置安全策略

3、使用ping命令测试全网互通

1)测试全网互通

三、防火墙配置Easy-IP的NAT将内网访问外网的流量映射到防火墙外网接口上查看会话表验证

1、防火墙配置Easy-IP

1)配置NAT策略

2、验证

1)查看防火墙状态化连接表

四、防火墙配置NatServer将web01服务器的80和21端口分别映射到外网IP地址192.168.100.3和192.168.100.4的80端口和21号端口外网客户端访问验证

1、防火墙配置Nat Server发布web服务器

1)将内网服务器192.168.10.2的80端口映射到外网IP地址192.168.100.3的80端口

2)配置安全策略允许外网访问网站

3)外网接允许http协议访问

4)查看server-map

5)验证

2、防火墙配置NAT Server发布ftp服务器

1)将内部ftp服务器192.168.10.2的21号端口映射到192.168.100.4的21号端口

2)配置安全策略允许访问ftp

3)配置应用层检测

4)验证


?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

有关防火墙NAT策略的更多相关文章

  1. ruby-on-rails - 覆盖 Controller 中的 protect_from_forgery 策略 - 2

    我想使用两种不同的protect_from_forgery策略构建一个Rails应用程序:一种用于Web应用程序,一种用于API。在我的应用程序Controller中,我有这行代码:protect_from_forgerywith::exception为了防止CSRF攻击,它工作得很好。在我的API命名空间中,我创建了一个继承self的应用程序Controller的api_controller,它是API命名空间中所有其他Controller的父类,我将上面的代码更改为:protect_from_forgery:null_session.遗憾的是,我在尝试发出POST请求时遇到错误:“

  2. 阿里云Web应用防火墙-WAF - 2

    WAF可以对网站进行扫描,识别API漏洞。API安全如何设置API安全_Web应用防火墙-阿里云帮助中心API安全如何划分API业务用途?登录认证手机验证码认证数据保存数据查询数据导出数据分享数据更新数据删除数据增加下线注销信息发送信息认证邮件信息发送邮箱验证码认证账号密码认证账号注册API安全支持检测哪些敏感数据?敏感数据级别敏感数据类型非敏感数据(N)不涉及。特级敏感数据(L0)与一级敏感数据(L1)或二级敏感数据(L2)相同。单次响应中一级敏感数据(L1)较多时,升级为特级敏感数据(L0)。单次响应中二级敏感数据(L2)较多时,升级为一级敏感数据(L1)或特级敏感数据(L0)。一级敏感数

  3. 最强Http缓存策略之强缓存和协商缓存的详解与应用实例 - 2

    HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地,以便下次请求时能够直接从缓存中获取资源,从而减少网络请求次数,提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。一.强缓存强缓存是指浏览器直接从本地缓存中获取资源,而不需要向web服务器发出网络请求。这是因为浏览器在第一次请求资源时,服务器会在响应头中添加相关缓存的响应头,以表明该资源的缓存策略。常见的强缓存响应头如下所述:Cache-ControlCache-Control响应头是用于控制强制缓存和协商缓存的缓存策略。该响应头中的指令如下:max-age:指定该资源在本地缓存的最长有效时间,以秒为单位。例如:Ca

  4. ruby - 使用 Ruby Net 实现重新连接策略 - 2

    我正在开发一个将XML发布到某些网络服务的小型应用程序。这是使用Net::HTTP::Post::Post完成的。但是,服务提供商建议使用重新连接。类似于:第一个请求失败->2秒后重试第二个请求失败->5秒后重试第三次请求失败->10秒后重试...这样做的好方法是什么?简单地在循环中运行以下代码,捕获异常并在一定时间后再次运行?或者还有其他聪明的方法吗?也许Net包甚至有一些我不知道的内置功能?url=URI.parse("http://some.host")request=Net::HTTP::Post.new(url.path)request.body=xmlrequest.con

  5. 华为静态NAT、动态NAT、PAT端口复用 - 2

    一、网络环境及TOP1.1R1相当于内网的一台PC, IP:192.168.1.10 网关为 192.168.1.254[R1]iproute-static0.0.0.00192.168.1.254#R1配置默认路由(网关)1.2R2为出口路由器,分别连接内网R1及外网R31)R2 内网接口IP:192.168.1.2542)R2外网接口IP:100.1.1.102)R2NAT地址为:100.1.1.11-100.1.1.14二、静态NAT配置1.1静态NAT(一对一双向)R2配置静态NAT,将公网IP100.1.1.11映射到内网R1 192.168.1.10[R2]intg0/0/1[R2

  6. ruby - 从企业防火墙后面安装 gem - 2

    我怀疑公司防火墙阻止安装gem。我定义了HTTP_PROXY,我可以通过以下命令查看远程gem:jruby-Sgemlist-r但是当我去安装gem时,我得到一个404:jruby-Sgeminstallrails除了维护内部gem存储库之外,是否有解决此问题的良好解决方法? 最佳答案 对于ruby​​gems,将它放在我的gem.bat中这对我有用@"%~dp0ruby.exe""%~dpn0"%*--http-proxyhttp://domainname.ccc.com:8080对于jrubygems这有效@"%~dp0jrub

  7. ruby - 解释这个原始文本 - 一种策略? - 2

    我有这个原始文本:________________________________________________________________________________________________________________________________PosCarCompetitor/TeamDriverVehicleCapCLLapsRace.TimeFastest...Lap16JasonClementsJasonClementsBMWM33200109:48.571030:57.3228*242DavidSkillenderDavidSkillenderHo

  8. ruby-on-rails - 创建自定义设计策略 - 2

    现在已经为此奋斗了一段时间,不确定为什么它不起作用。要点是希望将Devise与LDAP结合使用。除了身份验证外,我不需要做任何事情,所以除了自定义策略外,我不需要使用任何东西。我根据https://github.com/plataformatec/devise/wiki/How-To:-Authenticate-via-LDAP创建了一个据我所知,一切都应该正常工作,除了每当我尝试运行服务器(或rake路由)时,我得到一个NameErrorlib/devise/models.rb:88:in`const_get':uninitializedconstantDevise::Models:

  9. ruby-on-rails - 葡萄错误处理策略? - 2

    我正在使用Grape和Rails创建RESTAPI。我有基本的架构,我正在寻找“清理”东西的地方。其中一个地方是错误处理/处理。我目前正在为整个API修复root.rb(GRAPE::API基类)文件中的错误。我格式化它们,然后通过rack_response发回错误。一切正常,但root.rb文件变得有点臃肿,所有错误都被修复,其中一些有需要完成的特殊解析。我想知道是否有人制定了一个好的错误处理策略,以便可以将其移出到它自己的模块中,并使root.rb(GRAPE::API基类)相当精简。我很想创建一个错误处理模块并为每种类型的错误定义方法,例如...moduleAPImoduleEr

  10. ruby-on-rails - Ruby on Rails 和 Twitter OAuth 的测试策略 - 2

    我正在开发一个利用twitteroauth的应用程序,但在试图弄清楚如何测试twitteroauth时遇到了障碍。特别是尝试使用Cucumber和Webrat/Selenium来测试功能——注册/登录过程中的某些步骤在用户是否授予对应用程序的oauth访问权限等方面表现不同。有没有人在他们的RubyonRailsCucumber功能(或与此相关的任何其他测试框架)中成功模拟或stub部分或全部TwitterOAuth系统?任何帮助将不胜感激。 最佳答案 OP已经一年多了,但我最近发现这篇关于使用TwitterAuth和Cucumbe

随机推荐