「NAT」- 概念、术语

根据实现方式来分类

网络地址转换能够分为如下类别:

静态地址转换 | Static NAT

内网地址与公网地址是一对一的永久映射关系

1)对于某个公网地址,只会分配给某个固定的内网主机,绑定的公有地址不会给到其他设备进行使用;
2)支持双向互访:私有地址访问 Internet 经过出口设备 NAT 转换时,会被转换成对应的公有地址。同时,外部网络访问内部网络时,其报文中携带的公有地址(目的地址)也会被 NAT 设备转换成对应的私有地址;

动态地址转换 | Dynamic NAT

问题描述:静态 NAT 严格地一对一进行地址映射,这就导致即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态。为了避免地址浪费,动态 NAT 提出了地址池的概念:所有可用的公有地址组成地址池;

解决方案:Dynamic NAT,从公网地址池中,动态选择一个公网地址映射到内网地址。当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为“In Use”。当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”;

1)Dynamic NAT 基于地址池来实现私有地址和共有地址的转换;
2)地址与主机无固定的映射关系,
3)但与 Static NAT 相似,在某个时刻,同个地址只能被某个内网主机使用;

地址端口转换 | Network Address and Port Translation

问题描述:动态 NAT 选择地址池中的地址进行地址转换时不会转换端口号,即 No-PAT(No-Port Address Translation,非端口地址转换),公有地址与私有地址还是 1:1 的映射关系,无法提高公有地址利用率;

解决方案:NAPT,Network Address and Port Translation,网络地址端口转换,从地址池中选择地址进行地址转换时不仅转换 IP 地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的 1 : N 映射,可以有效提高公有地址利用率。其允许多个内网设备共享单个公网 IP 地址,通过不同的端口号来区分不同的连接。

Overload NAT,NAPT,PAT,该类术语通常都指该技术。

1)即把内网地址映射到相同公网地址,但是不同端口上,以使多个内网地址能够共享同个公网地址;
2)该方案也是从地址池中选择公网地址(当然,我们也能够设置地址池仅有 1 个地址);
3)这是最常用的方案;

NAPT 借助端口可以实现一个公有地址同时对应多个私有地址。该模式同时对 IP 地址和传输层端口进行转换,实现不同私有[源 IP、端口]映射到同一个[公有地址、不同源端口]上;

由于 TCP/UDP 的端口数量有限(0~65535),一个地址能够映射的私网会话有限,基于 NAT 地址池,NAPT 可以将私网会话随机映射到地址池中的一个地址,缓解私网会话过多的问题;

Q:ICMP 协议报文没有端口,那是如何关联的呢?
A:其使用 ICMP 报文的 Identification 字段进行区分,并且使用固定 IP 地址。我们猜测:NAT 内部有对特定协议的特定处理,“端口”是个概述。至少对于华为设备(eNSP),当开启 NAPT 之后,ping 包的出口网络地址是固定的;

应用

  • 家庭路由器、企业网络和 ISP 中最常见的 NAT 类型。

Easy IP | 特殊 NATP 技术

问题描述:对于 PPPoE 拨号,IP 地址经常变化,因此无法使用地址池进行配置;

解决方案:Easy IP,实现原理和 NAPT 相同,同时转换 IP 地址、传输层端口,区别在于 Easy IP 其无地址池的概念,使用接口地址作为 NAT 转换的公有地址。将多个内部地址映射到网关出接口地址上的不同端口,Easy-ip 是特殊的 NAPT,Easy-ip 将所有私网会话都映射到一个出口地址上,可以理解为 NAT 地址池只有一个地址的 NAPT。

1)在网络建立连接时(在进行 NAT 转换时),动态获取出取接口的网络地址,而非使用固定的网络地址池;
2)比如在 PPPoE 或 DHCP 中,无法预知网络地址,所以在进行 NAT 转换时,需要读取分配给网关接口的地址;
3)比 NAPT 的应用更加广泛:家用路由器通过 PPPoE 上网时,便是使用 Easy IP 模式;

补充说明:
1)多用于 PPPoE 拨号场景,此时应该到 Dialer 接口进行 NAT 配置(并选择 ACL 策略)

NAT Server

NAT Server,指定 [公有地址:端口] 与 [私有地址:端口] 的一对一映射关系,将内网服务器映射到公网。在公网地址上,映射某个特定端口,允许外部访问。

应用场景
当私有网络中的服务器需要对公网提供服务时使用,外网主机主动访问 [公有地址:端口] 实现对内网服务器的访问;

1)使外网用户能够访问内网服务器,但是仅能访问该服务器的特定端口;
2)其对 Static NAT 相比,Static NAT 则是将整个地址分配给特定主机,等同于开放内网主机所有端口;

网络地址转换的分类 | 根据方式分类

根据转换方式的不同,网络地址转换能够分为如下类别:

Source NAT,SNAT,源地址转换:目的地址不变,只替换源地址或源端口
1)Static NAT、Dynamic NAT、NAPT、Easy IP 都是对源地址转换,属于 SNAT 类型;
由于 NAPT/Easy-IP 只改变数据包源地址和端口,所以也被称为源 NAT;

Destination NAT,DNAT,目的地址转换:源地址保持不变,替换目的地址或目的端口
1)NAT Server 属于 DNAT 类型,即修改数据包的目的地址(使其为内网主机地址)

双向地址转换:同时使用 SNAT 和 DNAT 转换规则
1)当接收到网络包时,执行 DNAT,把目的地址转换为内网地址;
2)而在发送网络包时,执行 SNAT,把源地址替换为外部地址

关于 SNAT 缩写:
1)通常,SNAT 是 Source NAT 的缩写;
2)但是 stateful NAT、static NAT、secure NAT 也缩写为 SNAT,而它们是不同的技术,不能混为一谈;