NAT:网络地址转换如何工作

作者:Jeff Tyson  | 
Diagram of a NAT router directing traffic in between private and public networks.
网络地址转换通过重用 IP 地址帮助提高安全性。NAT 路由器转换进出专用网络的流量。查看更多计算机网络图片

如果您正在阅读本文,您很可能已连接到互联网并在 十万个为什么 网站上查看。因此,您现在很可能正在使用网络地址转换(NAT)。

互联网的规模已经超出了任何人的想象。虽然确切规模未知,但目前的估计是,互联网上活跃用户已超过 53.5亿。那么,互联网的规模与 NAT 有何关系?一切都有关!在本文中,您将了解 NAT 如何使您受益。但首先,让我们更深入地了解 NAT 及其确切功能...

广告

当全球IP地址池耗尽时

计算机若要与互联网上的其他计算机和Web 服务器通信,就必须拥有一个 IP 地址。IP 地址(IP 代表互联网协议)是一个唯一的 32 位数字,用于标识您的计算机在网络上的位置。它基本上就像您的街道地址一样——一种查找您确切位置并向您传递信息的方式。

当 IP 地址首次出现时,所有人都认为有足够的地址来满足任何需求。理论上,您可以拥有 4,294,967,296 个唯一地址 (232)。公共 IP 地址的实际数量较少(在 32 亿到 33 亿之间),原因在于地址被划分为不同的类别,以及某些地址被保留用于多播、测试或其他特殊用途。

广告

随着互联网的爆炸式增长以及家庭网络和商业网络的增加,可用的 IP 地址数量根本不足。显而易见的解决方案是重新设计公共 IP 地址格式,以允许更多可能的地址。这正在开发中(称为 IPv6),但需要数年时间才能实施,因为它需要修改整个互联网基础设施。

­ 这就是 NAT (RFC 1631) 发挥作用的地方。网络地址转换允许单个设备(例如路由器)充当互联网(或“公共网络”)和本地(或“专用”)网络之间的代理。这意味着只需一个唯一的 IP 地址即可代表一整组计算机。但公共 IP 地址的短缺只是使用 NAT 的一个原因。

广告

NAT 的作用是什么?

NAT 就像大型办公室里的接待员。假设您已经指示接待员,除非您要求,否则不要转接任何电话给您。后来,您致电一位潜在客户,并留言让该客户给您回电。您告诉接待员您正在等待这位客户的电话,并让她转接。

客户拨打您办公室的总机号码,这是客户知道的唯一号码。当客户告诉接待员她正在找您时,接待员会查看一个查找表,将您的姓名与您的分机号匹配起来。接待员知道您要求了这次通话,因此会将呼叫者转接到您的分机。

广告

网络地址转换由思科开发,通过介于内部网络和外部世界之间的设备(防火墙、路由器或计算机)使用。NAT 有多种形式,可以以多种方式工作

Diagram showing how IP addresses translate in static NAT.
在静态 NAT 中,IP 地址为 192.168.32.10 的计算机将始终转换为 213.18.123.110。
  • 静态 NAT - 将未注册的 IP 地址一对一地映射到已注册的 IP 地址。当设备需要从网络外部访问时特别有用。
Diagram showing how IP addresses translate in static NAT.
在动态 NAT 中,IP 地址为 192.168.32.10 的计算机将转换为 213.18.123.100 到 213.18.123.150 范围内第一个可用地址。
  • 动态 NAT - 将未注册的 IP 地址映射到一组已注册 IP 地址中的某个已注册 IP 地址。
  • 过载 (Overloading) - 动态 NAT 的一种形式,通过使用不同的端口将多个未注册 IP 地址映射到单个已注册 IP 地址。这也称为 PAT(端口地址转换)、单 IP 地址 NAT 或端口级多路复用 NAT。
Diagram showing how each computer is translated to the same IP address in NAT overloading.
在过载中,专用网络上的每台计算机都转换为相同的 IP 地址 (213.18.123.100),但分配了不同的端口号。
  • 重叠 (Overlapping) - 当您的内部网络上使用的 IP 地址是另一个网络上正在使用的已注册 IP 地址时,路由器必须维护这些地址的查找表,以便它可以拦截它们并用已注册的唯一 IP 地址替换它们。需要注意的是,NAT 路由器必须将“内部”地址转换为已注册的唯一地址,并且将“外部”已注册地址转换为专用网络唯一的地址。这可以通过静态 NAT 或使用 DNS 并实施动态 NAT 来完成。
Diagram of NAT router translating IP addresses.
内部 IP 范围 (237.16.32.xx) 也是另一个网络使用的已注册范围。因此,路由器正在转换地址,以避免与另一个网络发生潜在冲突。当信息发送到内部网络时,它还会将已注册的全局 IP 地址转换回未注册的本地 IP 地址。

内部网络通常是局域网 (LAN),通常称为末端域 (stub domain)。末端域是内部使用 IP 地址的局域网。末端域中的大多数网络流量都是本地的,因此不会流出内部网络。内部 IP 地址可以是注册的也可以是未注册的,并且末端域可以包含它。当然,任何使用未注册 IP 地址的计算机都必须使用 NAT 才能与外部世界通信。

在下一节中,我们将探讨 NAT 的不同配置方式。

广告

NAT 配置

Diagram of NAT router directing global and private IP networks.
IP 地址根据其是在专用网络(末端域)还是公共网络(互联网)上,以及流量是入站还是出站而有不同的名称。

NAT 可以通过多种方式配置。在以下示例中,NAT 路由器配置为将位于专用(内部)网络上的未注册(内部、本地)IP 地址转换为已注册的 IP 地址。这发生在内部设备具有未注册地址且需要与公共(外部)网络通信时。

  • ISP 为您的公司分配一系列 IP 地址。分配的地址块是已注册的唯一 IP 地址,称为内部全局地址。未注册的专用 IP 地址分为两组。一组是小型组(外部本地地址),将由 NAT 路由器使用。另一组更大的组,称为内部本地 IP 地址,将在末端域上使用。外部本地地址用于转换公共网络上设备的唯一 IP 地址,这些地址称为外部全局地址。
  • 末端域上的大多数计算机使用内部本地地址相互通信。
  • 末端域上的一些计算机与网络外部进行大量通信。这些计算机具有内部全局地址,这意味着它们不需要转换。
  • 当末端域上具有内部本地地址的计算机想要与网络外部通信时,数据包会发送到其中一个 NAT 路由器。
  • NAT 路由器检查路由表,查看是否有目标地址的条目。如果有,NAT 设备会转换数据包并在地址转换表中为其创建一个条目。如果目标地址不在路由表中,则数据包将被丢弃。
  • 路由器使用内部全局地址将数据包发送到其目的地。
  • 公共网络上的一台计算机向专用网络发送一个数据包。数据包上的源地址是一个外部全局地址。目标地址是一个内部全局地址。
  • NAT 路由器查看地址转换表,并确定目标 IP 地址在该表中,映射到末端域上的一台计算机。
  • NAT 路由器将数据包的内部全局地址转换为内部本地地址,并将其发送到目标计算机。

广告

NAT 过载的连接

NAT 过载利用了 TCP/IP 协议栈的多路复用特性,该特性允许计算机使用不同的 TCP 或 UDP 端口与远程计算机(或多台计算机)保持多个并发连接。IP 数据包有一个包含以下信息的报头

  • 源地址 - 原始计算机的 IP 地址,例如 201.3.83.132
  • 源端口 - 原始计算机为该数据包分配的 TCP 或 UDP 端口号,例如端口 1080
  • 目标地址 - 接收计算机的 IP 地址,例如 145.51.18.223
  • 目标端口 - 原始计算机要求接收计算机打开的 TCP 或 UDP 端口号,例如端口 3021

地址指定了两端的两台机器,而端口号确保两台计算机之间的连接具有唯一标识符。这四个端口号的组合定义了一个单一的 TCP/IP 连接。每个端口号使用 16 位,这意味着可能有 65,536 (216) 个值。实际上,由于不同制造商映射端口的方式略有不同,您可以预期大约有 4,000 个可用端口。

广告

动态网络地址转换

动态 NAT 的工作原理如下

  • 内部网络(末端域)已设置了 IP 地址,这些地址并非由 IANA(互联网号码分配局,负责分配 IP 地址的全球机构)专门分配给该公司。这些地址应被视为不可路由的,因为它们不是唯一的。
  • 该公司设置了一个启用 NAT 的路由器。该路由器拥有一系列由 IANA 分配给公司的唯一 IP 地址。
  • 末端域上的一台计算机尝试连接到网络外部的计算机,例如 Web 服务器。
  • 路由器从末端域上的计算机接收数据包。
  • 路由器将计算机的不可路由 IP 地址保存到地址转换表中。路由器将发送计算机的不可路由 IP 地址替换为唯一 IP 地址范围内的第一个可用 IP 地址。现在,转换表中有一个将计算机的不可路由 IP 地址与其中一个唯一 IP 地址匹配的映射。
  • 当数据包从目标计算机返回时,路由器检查数据包上的目标地址。然后它在地址转换表中查找该数据包属于末端域上的哪台计算机。它将目标地址更改为地址转换表中保存的地址,并将其发送到该计算机。如果它在表中未找到匹配项,则丢弃该数据包。
  • 计算机从路由器接收数据包。只要计算机与外部系统通信,此过程就会重复。

广告

NAT 过载的工作原理

过载的工作原理如下

  • 内部网络(末端域)已设置了不可路由的 IP 地址,这些地址并非由 IANA 专门分配给该公司。
  • 该公司设置了一个启用 NAT 的路由器。该路由器拥有一个由 IANA 分配给公司的唯一 IP 地址。
  • 末端域上的一台计算机尝试连接到网络外部的计算机,例如 Web 服务器。
  • 路由器从末端域上的计算机接收数据包。
  • 路由器将计算机的不可路由 IP 地址和端口号保存到地址转换表中。路由器将发送计算机的不可路由 IP 地址替换为路由器的 IP 地址。路由器将发送计算机的源端口替换为与路由器在地址转换表中保存发送计算机地址信息位置相匹配的端口号。现在,转换表中有一个将计算机的不可路由 IP 地址和端口号与路由器的 IP 地址匹配的映射。
  • 当数据包从目标计算机返回时,路由器检查数据包上的目标端口。然后它在地址转换表中查找该数据包属于末端域上的哪台计算机。它将目标地址和目标端口更改为地址转换表中保存的地址和端口,并将其发送到该计算机。
  • 计算机从路由器接收数据包。只要计算机与外部系统通信,此过程就会重复。
  • 由于 NAT 路由器现在已将计算机的源地址和源端口保存到地址转换表中,因此它将在连接期间继续使用相同的端口号。路由器每次访问表中的条目时,计时器都会重置。如果在计时器到期前未再次访问该条目,则该条目将从表中删除。

在下一节中,我们将介绍末端域的组织方式。

广告

末端域

请看下方,了解末端域上的计算机在外部网络中可能显示为何种形式。

源计算机 A

IP 地址:192.168.32.10

广告

计算机端口:400

NAT 路由器 IP 地址:215.37.32.203

NAT 路由器分配的端口号:1

源计算机 B

IP 地址:192.168.32.13

计算机端口:50

NAT 路由器 IP 地址:215.37.32.203

NAT 路由器分配的端口号:2

源计算机 C

IP 地址:192.168.32.15

计算机端口:3750

NAT 路由器 IP 地址:215.37.32.203

NAT 路由器分配的端口号:3

源计算机 D

IP 地址:192.168.32.18

计算机端口:206

NAT 路由器 IP 地址:215.37.32.203

NAT 路由器分配的端口号:4

如您所见,NAT 路由器存储每台计算机的 IP 地址和端口号。然后,它将其自身的注册 IP 地址和与该数据包源计算机在表中条目位置对应的端口号替换掉原 IP 地址。因此,任何外部网络都会将 NAT 路由器的 IP 地址和路由器分配的端口号视为每个数据包上的源计算机信息。

末端域上仍然可以有一些使用专用 IP 地址的计算机。您可以创建一个 IP 地址访问列表,告诉路由器网络上哪些计算机需要 NAT。所有其他 IP 地址将未经转换地通过。

路由器支持的并发转换数量主要取决于其拥有的 DRAM(动态随机存取存储器)量。但是,由于地址转换表中的典型条目仅占用约 160 字节,因此理论上,一个拥有 4 MB DRAM 的路由器可以处理 26,214 个并发转换,这对于大多数应用程序来说绰绰有余。

广告

IP 地址信息如何分类

IANA 已预留了特定范围的 IP 地址,用作不可路由的内部网络地址。这些地址被视为未注册地址(有关更多信息,请查阅RFC 1918:专用互联网地址分配,其中定义了这些地址范围)。任何公司或机构都不能声称拥有未注册地址的所有权,也不能在公共计算机上使用它们。

路由器的设计目的是丢弃(而非转发)未注册地址。这意味着来自具有未注册地址的计算机的数据包可能到达已注册的目标计算机,但回复将被其到达的第一个路由器丢弃。

广告

用于网络的每种 IP 地址类别都有一个范围

  • 范围 1:A 类 - 10.0.0.0 到 10.255.255.255
  • 范围 2:B 类 - 172.16.0.0 到 172.31.255.255
  • 范围 3:C 类 - 192.168.0.0 到 192.168.255.255

尽管每个范围都属于不同的类别,但您不被要求为您的内部网络使用任何特定范围。不过,这是一个很好的做法,因为它大大减少了 IP 地址冲突的可能性。

广告

安全与管理

Diagram showing Static NAT directing traffic toward a public network.
静态 NAT(入站映射)允许末端域上的计算机在与网络外部设备通信时保持特定地址。

实施动态 NAT 会在您的内部网络和外部网络之间,或在您的内部网络和互联网之间自动创建防火墙。NAT 只允许源自末端域内部的连接。

本质上,这意味着外部网络上的计算机无法连接到您的计算机,除非您的计算机已发起连接。您可以浏览互联网、连接到某个网站,甚至下载文件;但其他人无法锁定您的 IP 地址并使用它连接到您计算机上的某个端口。

广告

在特定情况下,静态 NAT(也称为入站映射)允许外部设备向末端域上的计算机发起连接。例如,如果您希望从一个内部全局 IP 地址访问分配给您的 Web 服务器的特定内部本地 IP 地址,静态 NAT 将启用该连接。

一些 NAT 路由器提供广泛的过滤和流量日志功能。过滤允许您的公司控制员工在网络上访问的网站类型,防止他们查看可疑材料。您可以使用流量日志创建访问网站的日志文件,并从中生成各种报告。

广告

关于代理服务器的说明

NAT 有时与代理服务器混淆,但它们之间存在明显的差异。NAT 对源计算机和目标计算机都是透明的。两者都未意识到它们正在与第三方设备打交道。但代理服务器不是透明的。

源计算机知道它正在向代理服务器发出请求,并且必须进行相应配置。目标计算机认为代理服务器就是源计算机,并直接与其交互。此外,代理服务器通常在 OSI 参考模型的第 4 层(传输层)或更高层工作,而 NAT 是第 3 层(网络层)协议。在更高层工作通常会使代理服务器比 NAT 设备更慢。

Diagram of OSI reference model, showing NAT at layer 3 (the Network layer).
NAT 在 OSI 参考模型的网络层(第 3 层)运行——这是路由器工作的层面。

NAT 的一个真正好处在网络管理中显而易见。例如,您可以将您的 Web 服务器或 FTP 服务器移动到另一台主机计算机,而无需担心链接中断。只需更改路由器上的入站映射以反映新的主机即可。您还可以轻松地更改内部网络,因为唯一的外部 IP 地址要么属于路由器,要么来自一个全局地址池。

NAT 和 DHCP(动态主机配置协议)是天作之合。您可以为您的末端域选择一系列未注册的 IP 地址,并让 DHCP 服务器根据需要分配它们。这还使得随着您的需求增长,扩展您的网络变得容易得多。您无需向 IANA 请求更多 IP 地址。相反,您只需增加在 DHCP 中配置的可用 IP 地址范围,即可立即为网络中的额外计算机腾出空间。

多宿主

随着企业越来越依赖互联网,拥有多个互联网连接点正迅速成为其网络策略不可或缺的一部分。多连接,也称为多宿主,减少了如果其中一个连接失败可能导致灾难性中断的机会。

除了保持可靠的连接外,多宿主还允许公司通过减少通过单个连接连接到互联网的计算机数量来执行负载均衡。通过多个连接分配负载可以优化性能并显著减少等待时间。

多宿主网络通常连接到多个不同的 ISP(互联网服务提供商)。每个 ISP 会为公司分配一个 IP 地址(或一系列 IP 地址)。路由器使用 BGP(边界网关协议,TCP/IP 协议套件的一部分)在使用不同协议的网络之间路由。在多宿主网络中,路由器在末端域侧利用 IBGP(内部边界网关协议),并使用 EBGP(外部边界网关协议)与其他路由器通信。

如果连接到 ISP 的其中一个连接失败,多宿主确实能发挥作用。一旦分配给连接该 ISP 的路由器确定连接已断开,它将立即通过其他路由器之一重新路由所有数据。

NAT 可用于促进多宿主、多提供商连接的可扩展路由。有关多宿主的更多信息,请参阅思科:启用企业多宿主

有关 NAT 和相关主题的更多信息,请查看下一页的链接。

网络地址转换 (NAT) 常见问题

什么是网络地址转换?
网络地址转换(NAT)是一种为本地服务器和主机提供互联网连接的映射方法。在 NAT 中,您将多个本地 IP 映射到一个单一的全局 IP,以便通过路由设备传输信息。
NAT 会影响互联网速度吗?
NAT 对您的互联网速度影响很小。如果您使用合适的路由器进行 IP 转换,这种影响几乎察觉不到。
网络地址转换提供哪些好处?
启用 NAT 后,您可以更轻松地重用您的个人 IP 地址,并增加安全性。此外,NAT 允许您保持您的外部和内部 IP 地址的私密性和安全性。您还可以通过仅使用少量外部 IP 连接多个主机到互联网,从而节省您的 IP 地址内存。
NAT 和 PAT 有什么区别?
NAT 代表网络地址转换,而 PAT 代表端口地址转换。顾名思义,NAT 和 PAT 都用于将私有 IP 转换为公共 IP,以节省空间并连接多个设备。区别在于 PAT 使用端口号来映射 IP 地址,而 NAT 不使用。
NAT 有多少种类型?
NAT 有多种形式。静态 NAT 将未注册的 IP 地址一对一地映射到已注册的 IP 地址;动态 NAT 将未注册的 IP 地址映射到一组已注册 IP 地址中的某个已注册 IP 地址;过载 (Overloading) 通过使用不同的端口将多个未注册 IP 地址映射到单个已注册 IP 地址;重叠 (Overlapping) 发生在当一个网络上的设备被分配了一个与互联网或外部网络上另一个设备相同的子网 IP 地址时。

广告

加载中...