📜  网络地址转换 (NAT)

📅  最后修改于: 2022-05-13 01:57:02.334000             🧑  作者: Mango

网络地址转换 (NAT)

要访问 Internet,需要一个公共 IP 地址,但我们可以在私有网络中使用私有 IP 地址。 NAT 的想法是允许多个设备通过单个公共地址访问 Internet。为此,需要将私有 IP 地址转换为公共 IP 地址。网络地址转换 (NAT)是一个过程,其中一个或多个本地 IP 地址被转换为一个或多个全局 IP 地址,反之亦然,以便为本地主机提供 Internet 访问。此外,它还进行端口号的转换,即在将被路由到目的地的数据包中用另一个端口号屏蔽主机的端口号。然后在 NAT 表中生成对应的 IP 地址和端口号条目。 NAT 通常在路由器或防火墙上运行。

网络地址转换 (NAT) 工作 –
通常,边界路由器被配置为NAT,即在本地(内部)网络中具有一个接口,在全球(外部)网络中具有一个接口的路由器。当数据包在本地(内部)网络之外遍历时,NAT 会将本地(私有)IP 地址转换为全局(公共)IP 地址。当数据包进入本地网络时,全局(公共)IP 地址被转换为本地(私有)IP 地址。

如果 NAT 用完地址,即配置的池中没有地址,则数据包将被丢弃,并向目标发送一个 Internet 控制消息协议 (ICMP) 主机不可达数据包。

为什么要屏蔽端口号?
假设在一个网络中,两台主机 A 和 B 相连。现在,他们俩同时在主机端请求相同的目的地,相同的端口号,比如 1000。如果 NAT 只转换 IP 地址,那么当它们的数据包到达 NAT 时,它们的两个 IP 地址都会被网络的公共 IP 地址屏蔽并发送到目的地。目的地将向路由器的公共 IP 地址发送回复。因此,在收到回复时,NAT 将不清楚哪个回复属于哪个主机(因为 A 和 B 的源端口号相同)。因此,为了避免这样的问题,NAT 也屏蔽了源端口号,并在 NAT 表中创建了一个条目。

NAT 内部和外部地址 –
里面是指必须翻译的地址。外部是指不受组织控制的地址。这些是将在其中完成地址转换的网络地址。

  • 内部本地地址 –分配给内部(本地)网络上的主机的 IP 地址。该地址可能不是服务提供商分配的 IP 地址,即这些是私有 IP 地址。这是从内部网络看到的内部主机。
  • 内部全局地址 –表示一个或多个外部本地 IP 地址的 IP 地址。这是从外部网络看到的内部主机。
  • 外部本地地址——这是本地网络中目标主机在转换后的实际 IP 地址。
  • 外部全局地址——这是从外部网络看到的外部主机。它是转换前外部目标主机的 IP 地址。

网络地址转换 (NAT) 类型 –
有 3 种方式来配置 NAT:

  1. 静态 NAT——在这种情况下,一个未注册的(私有)IP 地址映射到一个合法注册的(公共)IP 地址,即本地地址和全局地址之间的一对一映射。这通常用于 Web 托管。这些在组织中不使用,因为有许多设备需要访问 Internet,并且要提供 Internet 访问,需要公共 IP 地址。

    假设,如果有 3000 台设备需要访问 Internet,则组织必须购买 3000 个公共地址,这将是非常昂贵的。

  2. 动态 NAT——在这种类型的 NAT 中,未注册的 IP 地址从公共 IP 地址池转换为已注册的(公共)IP 地址。如果池的 IP 地址不是空闲的,则数据包将被丢弃,因为只有固定数量的私有 IP 地址可以转换为公共地址。

    假设,如果有 2 个公共 IP 地址池,那么在给定时间只能转换 2 个私有 IP 地址。如果第三个私有 IP 地址想要访问 Internet,那么数据包将被丢弃,因此许多私有 IP 地址被映射到一个公共 IP 地址池。当希望访问 Internet 的用户数量固定时,使用 NAT。这也是非常昂贵的,因为组织必须购买许多全球 IP 地址来建立一个池。

  3. 端口地址转换 (PAT) –这也称为 NAT 过载。在这种情况下,许多本地(私有)IP 地址可以转换为单个注册 IP 地址。端口号用于区分流量,即哪些流量属于哪个IP 地址。这是最常用的,因为它具有成本效益,因为只需使用一个真实的全球(公共)IP 地址即可将数千名用户连接到 Internet。

NAT 的优势 –

  • NAT 保存合法注册的 IP 地址。
  • 它提供隐私,因为设备的 IP 地址、发送和接收流量将被隐藏。
  • 在网络演进时消除地址重新编号。

NAT的缺点——

  • 转换导致切换路径延迟。
  • 启用 NAT 时,某些应用程序将无法函数。
  • 使 IPsec 等隧道协议复杂化。
  • 此外,路由器作为网络层设备,不应篡改端口号(传输层),但由于 NAT,它必须这样做。