一篇不只是华为防火墙NAT策略,你所不知道的黑洞路由?

前言

人类对计算机网路的使用已经拓展到各个领域,而计算机网络的设计者在当时无法想象网络能有今天的规模。任何一个接入互联网的计算机、ipad、手机及安卓电视,要想在互联网中畅游,必须有一个合法的IP地址。而IP地址,曾经认为足以容纳全球的计算机,但是在今天看来,已经严重枯竭。IPv6的出现就是为了解决地址不足的问题,但在IPv6普及之前,需要有一个过渡技术NAT

NAT技术不是新技术,对于我们来说也并不陌生,主要介绍华为的NAT技术。

NAT分类

华为支持的源地址转换方式有如下几类:

nat分类 说明
NAT No-PAT 类似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网IP地址,实际情况下使用较少,主要适用于需要上网的用户较少,而公网地址又足够的场景下。
NAPT网络地址和端口转换 似于Cisco的PAT转换,既转换报文的源地址,又转换源端口,属于多对多或多对一转换,可以节约IP地址,使用场景较多,主要适用于内部大量用户需要上网,同时仅有少数几个公网IP地址可用的场景下。
出接口地址( Easy-IP ) 出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,可以节约IP地址,主要适用于没有额外的公网地址可用,内部上网用户非常多的场景下
Smart NAT 通过预留一个公网地址进行NAPT转换,而其他的公网地址用来进行NAT No-PAT`转换。其主要用于平时上网用户比较少
三元组NAT 源IP地址源端口协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普通NAT中无法实现的问题。

华为的目标地址转换技术主要是NAT Server,可以基于IP地址转换,也可以基于 “ IP+端口+协议 ” 进行转换。

黑洞路由

黑洞,顾名思义,把无关的路由吸入其中,有来无回的路由,解决源地址转换场景下的环路和无效ARP问题,以下图为例。
在防火墙上配置NAPT以解决内部员工访问互联网的问题,并且内部用户源地址转换为公网地址202.96.3.3。

在这里插入图片描述
在该案例中,内部地址被转换为公网地址202.96 . 3.3。需要特别注意的是,该地址和防火墙外接口的地址202.96.1.1并不在同一网段中。在实际环境中,公网地址是通过运营商分配的,当运营商分配给公司一个地址时( 202.96.3.3 ),会同时在互联网设备(R1)上增加该地址的路由。所以假设此时R1设备已经具备去往202.96,3.3的路由,并将下一跳指向202.96.1.1。当防火墙配置了安全策略、路由及NAT配置后,PC1访问PC2的数据包经过防火墙时,先检查路由表,再检查安全策略,最后查看是否匹配源NAT转换的条件,最终数据包将通过防火墙,但是在发送之前,防火墙会生成会话表(状态化信息),通过该会话表可以自动放行返回的流量,最终PC1可以访问PC2。

但是互联网用户主动访问202.96.3.3时会发生什么事情呢?

肯定是拒绝该流量。由互联网主动发起的数据包无法匹配之前创建的会话表,而安全策略也不会放行由互联网发起的流量,比这更槽糕的是如果此时在FW和PC1之间的链路上抓包会发现如图所示的奇怪现象。

在这里插入图片描述
抓包界面中出现了大量的ICMP报文,而且TTL值逐个减1,不难分析,网络中出现了环路,那么环路到底是如何产生的呢?PC2访问202.96.3.3的数据包发送给网关R1,R1查看路由表后,将数据从 G 0/0/0接口发出并到达FW,FW收到数据包后无法匹配会话表(这不是PC1发出的数据包的返回包),FW继续查找路由表( FW已经配置默认路由指向R1 )后,决定从G 1/0/0接口发出,又因为流量在同一个域间流动防火墙默认动作是放行,所以数据包又返回R1,R1继续查路由表后发送给FW,如此反复转发,直到TTL降为0。

如果将转换后的地址由202.96.3.3改为202.96.1.10,即使转换后的地址( 202.96.1.10 )和 防火墙外网接口地址(2 02.96.1.1 )配置为同一个网段,PC2访问202.96.1.10时在FW和R1之间抓包,结果如图所示。
在这里插入图片描述

  • PC2发给202.96.1.10的第一个数据包到达R1.查找路由表后发现数据包的目标地址是R1的直连网段,所以发起ARP请求目标IP地址对应的MAC地址。
  • 防火墙一旦开启NAT后,将会对转换后的地址开启ARP代理功能,所以尽管FW的外网接口并不是请求的ARP对应的IP地址,防火墙依然会响应该ARP请求,并发出ARP的回应,将防火墙自身的MAC地址发送给R1。
  • R1收到FW的回复后,将封装FW的MAC地址发出第一个ICMP报文。
  • 防火墙收到报文后,发现该数据包不能匹配自身的会话表( 这不是PC1发出的数据包的返回包 ),FW继续查找路由表,发现该数据包的目标地址是防火墙自己的直连网段,所以直接发送ARP请求解析目标IP( 202.96.1.10 )对应的MAC地址,因为网络中没有其他网络设备配置202.96.1.10地址(该地址是防火墙用于转换的IP地址),所以最终无法接收到任何回复,防火墙因无法封装MAC地址发送报文失败。
  • R1得知失败后,可以继续发送后续PC2发出的ICMP请求包,后续的包到达防火墙后,同理,因为无法封装MAC地址,将被丢弃

综上所述,

NAT类型 描述 是否配置黑洞路由
NAT No-PAT 当公网用户访问转换后地址时产生环路或产生ARP报文
NAPT 当公网用户访问转换后地址时产生环路或产生ARP报文
出接口地址(Easy-IP) 转换后的地址就是外网接口地址,公网用户访问该地址被防火墙接收(策略允许)或丢弃(策略不允许),不产生环路。

Server-map表

华为的防火墙基于状态化转发数据包,针对首个包严格执行策略筛查,一旦被策略允许,将生成会话表而同一个会话的后续包及返回包因为能够匹配会话表将直接通过防火墙,不需要额外的策略筛查,从而提高了转发效率,
但在有些情况下,仅仅依赖会话表不能转发某些特殊应用的流量,例如,FTP这种多通道多端口( 20,21 )协议,必须得去匹配server-map表
在这里插入图片描述
在进行控制连接交互PORT指令时,防火墙根据数据包的应用层的PORT信息.预先判断在接下来将要使用16354端口进行数据连接,所以提前创建Sever-map表,以匹配接下来的报文。

注意:

这里会设置端口映射的,12356 ===> 16354 ,再生成server-map表。

Server-map表记录应用层的关键数据信息,包括目标地址目标端口协议类型,和会话表一样,匹配了Server-map表的数据流也可以直接通过防火墙,Server-map表和会话表的区别如下:

  • 会话表记录的是连接信息,包括连接状态。
  • Server-map表记录的不是当前的连接信息,而是通过分析当前连接的报文后得到的信息,该信息可以解决接下来的数据流通过防火墙的问题。可以将 Server-map表的作用理解为通过未雨绸缪解决将来的问题。
[USG6000V1]display firewall server-map      //查看Server-map表
 Current Total Server-map : 2
Type: No-Pat Reverse, ANY -> 202.96.1.10[192.168.1.4],  Zone: untrust 
 Protocol: ANY, TTL:---, Left-Time:---,  Pool: 0, Section: 0
 Vpn: public
Type: No-Pat,  192.168.1.4[202.96.1.10] -> ANY,  Zone: untrust 
 Protocol: ANY, TTL:360, Left-Time:360,  Pool: 0, Section: 0
 Vpn: public

标识为 Reverse 的行表示反向条目,Type:No-Pat表示转换方式为 NAT No-PAT,[ 192.168.1.4 ]为转换后的IP地址。

NAT Server配置完成后,默认生成两个Server-map条目,分别是正向条目和反向条目,此时Server-map表的作用是:

  • 正向条目携带端口信息,用来使外部用户访问时直接通过 Server-map表进行目标地址转换。
  • 反向条目不携带端口信息,且目标地址是任意的,用来使服务器可以访问互联网,前提是必须是TCP协议.

NAT对报文的处理流程

防火墙接口从收到一个报文到最终发送出去需要经历一系列处理流程,而NAT只是其中的一项任务。NAT的配置受到路由及安全策略的影响
在这里插入图片描述
因为防火墙处理报文的顺序是目标地址转換 → 安全策略 → 源地址转换,所以在NAT环境中,安全策略的源地址应该是源地址转换之前的地址,目标地址应该是目标地址转换之后的地址。

下一篇:华为防火墙NAT策略配置

发布了39 篇原创文章 · 获赞 3 · 访问量 6443

猜你喜欢

转载自blog.csdn.net/weixin_43815140/article/details/105488198