产生背景

  • IPv4公网地址资源耗尽
  • IPv6普及遥遥无期
  • 子网划分杯水车薪

    定义

    网络地址转换
    通过把私有地址转换为公有地址,使私有IP地址主机可以访问互联网,来解决公网地址不够用的问题

    分类

    静态 NAT

    把公有地址一对一的静态映射给私有地址使用

    基本 NAT

    建立公有地址池,把地址池中的公有地址动态的映射给私有地址使用(本质上仍然是一对一的映射)

    NAPT

  • 把公有地址和端口动态的映射给私有地址和端口,实现一个公有地址可以供多个私有地址同时使用访问互联网

  • 转换源IP和源端口,数据回包还原目的IP和目的端口
  • SNAT(源地址转换)

    Easy IP

    NAPT的一种简易实现形式,适用于公网地址不固定的场景

  • NAT设备在做传统的源NAT时,需要用户配置额外的NAT地址池,地址池中的地址都是公网地址,在内部网络规模小、公网地址资源有限的情况下,如果直接使用NAT设备对外接口的公网IP地 址作为NAT的源地址,就可以节省公网地址资源。

  • Easy IP是一种特殊方式的NAPT。直接使用网关出接口的ip地址,不存在多个公网ip地址。
  • NAPT可以配置地址池。配置NAPT功能后,NAT转换时,首先将复用地址池中所选择的地址,端口达到能力极限后, 再选择另一个地址完成转换。对比单一的多对多地址转换,这可大大减少地址池中公有地址的数目。

例:一个公司网络中有50个私有IP地址,管理员使用NAT技术接入公网,且该公司仅有一个公网地址可用,哪种NAT转换符合要求?

为什么是ESAY-IP,不能是NAPT。

napt不能映射像拨号这种不固定IP的,获取IP地址的上网方式,所以出现了easy IP,但这题没有说公司的上网方式,如果这个公司有哪怕一个固定ip, napt都是可以的,这里没有说明公司的上网方式

NAT Server

  • 把公网IP的某个端口固定映射到私网IP的某个端口,让公网上的用户可以主动访问私网中的服务
  • 转换目的IP和目的端口,数据回包还原源IP和源端口
  • 也称端口映射,DNAT(目的地址转换)

下面来看下防火墙上的NAT Server是如何配置和实现的。

在防火墙上配置如下命令,就能将上图中服务器的私网地址10.1.1.2映射成公网地址1.1.1.1。
[FW] nat server global 1.1.1.1 inside 10.1.1.2
但是,如果一台服务器同时存在多种协议和端口的服务项,按照上述配置会将服务器上所有服务项都发布到公网,这无疑会带来很大的安全风险。华为防火墙支持配置指定协议的NAT Server,只将服务器上特定的服务项对公网发布,从而避免服务项全发布带来的风险。例如,我们可以按如下方式配置,将服务器上80端口的服务项映射为9980端口供公网用户访问。
[FW] nat server protocol tcp global 1.1.1.1 9980 inside 10.1.1.2 80
这里将80端口映射为9980端口而不是直接映射为80端口是因为,一些地区的运营商会阻断新增的80、8000、8080端口的业务,从而导致服务器无法访问。
小伙伴们是否还记得《安全策略篇ASPF:隐形通道》中提到的Server-map表,NAT server配置完成之后,也会生成Server-map表来保存映射关系。不过与ASPF Server-map表项的动态老化不同的是,NAT Server的Server-map表项是静态的,只有当NAT Server配置被删除时,对应的Server-map表项才会被删除。

上图就是NAT Server的Server-map表项。图中红框标注的字段就记录着服务器私网地址端口和公网地址端口的映射关系。[]内为服务器私网地址和端口、[]外为服务器公网地址和端口。我们将表项翻译成文字就是:任意客户端(any)向(->)1.1.1.1:9980发起访问时,报文的目的地址和端口都会被转换成10.1.1.2:80。具体的流程如下:
当客户端通过1.1.1.1:9980访问服务器时,防火墙收到报文的首包后,首先是查找并匹配到Server-map表项,将报文的目的地址和端口转换为10.1.1.2:80。然后根据目的地址判断出报文在哪两个安全区域间流动,报文通过域间安全策略检查后,防火墙会建立如下的会话表,并将报文转发到私网。

之后,服务器对客户端的请求做出响应。响应报文到达防火墙后匹配到上面的会话表,防火墙将报文的源地址和端口转换为1.1.1.1:9980,而后发送至公网。后续客户端继续发送给服务器的报文,防火墙都会直接根据会话表对其进行地址和端口转换,而不会再去查找Server-map表项了。
在防火墙的前后抓包,能很清楚地看到NAT Server的效果:
A、转换客户端发往服务器的报文的目的地址和端口。

B、转换服务器响应客户端的报文的源地址和端口。

常用命令

常用命令 功能
[h3c]nat address-group ‘group-number’ 创建 NAT 公网地址池
[h3c-address-group-1]address ‘start-ip’ ‘end-ip’ 设置地址池的地址范围
[h3c-GigabitEthernet0/0]nat outbound ‘acl-number’ address-group ‘group-number’ 在公网接口上配置 NAPT
[h3c-GigabitEthernet0/0]nat outbound ‘acl-number’ 在公网接口上配置 Easy IP
[h3c-GigabitEthernet0/0]nat server protocol ‘tcp/udp/icmp’ global ‘global-address’ ‘global-port’ inside ‘inside-address’ ‘inside-port’ 在公网接口上配置NAT Server
dis nat session verbose 查看nat转换关系