Cisco经典文档

当前位置: 首页Cisco经典文档NAT 如何工作


NAT 如何工作

 

 

                                                       文档下载:

切换至英文原版


内容

前言
前提条件
      需求
      使用的组件
      惯例
掩码工作原理
动态 NAT 和超载示例
      Flash 动画: 动态 NAT
安全和管理
多链路
 


前言

如果您正在阅读本内容,您很可能已经连接到 Internet,并且您现在就有可能在使用网络地址转换 (NAT)

Internet 的发展已经超出了所有人的想象。 虽然不知道确切的规模,但当前的估计是大约有 1 亿台主机和超过 3.5 亿的用户在使用 Internet。 这比美国的总人口还要多! 实际上,Internet 的用户规模每年都在以成倍的速率增长。

那么,Internet 的用户规模与 NAT 有什么关系呢? 一切! 一台计算机要与 Internet 上的其他计算机和 Web 服务器通信,必须要有 IP 地址。 IP 地址(IP 代表 Internet 协议)是在网络中标识计算机位置的唯一 32 位数字。 本质上而言,其工作方式与街道地址一样: 通过它可以确定您的确切位置并向您传送信息。

当 IP 编址最初问世时,所有人都认为会有足够的地址来满足任何需要。 理论上,您可能有4,294,967,296个唯一地址(2)32。 由于地址划分为多个类别以及用户需要预留部分地址以用于多播、测试或其他特定用途,因此可用地址的实际数量较小(大概介于 32 和 33 亿之间)。

在 Internet 不断发展壮大,家庭网络和企业网络不断增长的情况下,可用 IP 地址的数量显得供不应求。 有效的解决方案是重新设计地址格式以允许更多可能的地址。 此解决方案 (IPv6) 正处于开发阶段,并将需要几年时间才能实现,因为它需要对 Internet 的整个基础结构进行修改。

NAT 路由器用于对进入和离开专用网络的数据流进行转换:

 

 

/image/gif/paws/6450/nat-router.jpg

NAT (RFC 1631) 正好可以解决这一燃眉之急。leavingcisco.com 本质上而言,网络地址转换允许单个设备(如路由器)在 Internet(或“公共网络”)和本地(或“专用”)网络之间充当代理。 这意味着整个计算机组只需一个唯一的 IP 地址即可向其网络外部的任何设备表示该组。

IP 地址短缺是使用 NAT 的唯一原因。 另外两个具有说服力的原因是:

  • 安全

  • 管理

您将了解更多有关 NAT 好处的信息,但我们先详细了解一下 NAT,看看它有何功能。

前提条件

需求

本文档的读者应具备以下方面的知识:

  • IP 编址和路由概念

使用的组件

本文档不限于特定的软件和硬件版本。

惯例

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

掩码工作原理

NAT 就像大型办公室中的前台接待员。 假设您已指示接待员,没有您的请求不要将任何电话转接给您。 稍后,您呼叫一个潜在客户并给他们留言,让他们回电话。 您告诉接待员,您在等这个客户的呼叫,并让接待员在客户来电时将电话转接给您。

该客户呼叫办公室的总机,该号码是客户知道的唯一号码。 当客户告诉接待员他们想与谁通话时,接待员检查匹配人名和分机的查找表。 接待员知道您请求过此呼叫,因此接待员将呼叫人转到您的分机上。

Cisco 开发的网络地址转换供位于内部网络和世界其他地方之间的设备(如防火墙、路由器或计算机)使用。 NAT 有多种形式,可通过以下几种方式运行:

  • 静态 NAT – 按一对一的方式将未注册的 IP 地址映射到注册的 IP 地址。 在需要从网络外部访问设备时特别有用。

    在静态 NAT 中,IP 地址为 192.168.32.10 的计算机将总是转换为 213.18.123.110:

     

     

    /image/gif/paws/6450/nat-static.jpg

  • 动态 NAT – 将未注册的 IP 地址映射到一组注册 IP 地址中的一个注册 IP 地址。 动态 NAT 也在未注册和已注册的 IP 地址之间建立一对一的映射,但在进行通信时,映射可能因池中提供的注册地址不同而有差异。

    在动态 NAT 中,IP 地址为 192.168.32.10 的计算机将转换为从 213.18.123.100 到 213.18.123.150 范围内的第一个可用地址:

     

     

    /image/gif/paws/6450/nat-dynamic.jpg

  • 超载 – 是一种通过使用不同端口将多个未注册的 IP 地址映射到单个已注册 IP 地址的动态 NAT 形式。 也称为 PAT(端口地址转换),即单个地址 NAT 或端口级多路复用的 NAT。

    在超载中,专用网络中的每台计算机被转换为相同的 IP 地址 (213.18.123.100),但具有不同的端口号分配:

     

     

    /image/gif/paws/6450/nat-overload.jpg

  • 重叠 – 当您的内部网络中使用的 IP 地址是另一网络中使用的已注册 IP 地址时,路由器必须维护这些地址的查找表,以便可以拦截这些地址并将其替换为已注册的唯一 IP 地址。 值得注意的是,NAT 路由器必须将“内部”地址转换为注册的唯一地址,并且还必须将“外部”注册地址转换为专用网络的唯一地址。 这可以通过静态 NAT 实现,也可以使用 DNS 并实现动态 NAT。

    内部 IP 范围 (237.16.32.xx) 也是另一网络使用的注册范围。 因此,路由器将转换地址以避免与另一网络产生潜在的冲突。 向内部网络发送信息时,还会将注册的全局 IP 地址转换回未注册的本地 IP 地址:

     

     

    nat-overlap.jpg

内部网络通常是 LAN(局域网),通常称作残域。 残域是在内部使用 IP 地址的 LAN。 残域中的大多数网络流量都是本地流量,不在内部网络之外传输。 残域可以包括注册的和未注册的 IP 地址。 当然,使用未注册 IP 地址的所有计算机都必须使用网络地址转换才能与世界其他地方通信。

可通过多种方式配置 NAT。 在下例中,NAT 路由器被配置为将驻留在专用(内部)网络的未注册 IP 地址(在本地地址内部)转换为注册的 IP 地址。 每当内部网络中具有未注册地址的设备需要与公共(外部)网络通信时,就会发生这种情况。

  • ISP 向您的公司分配一个 IP 地址范围。 分配的地址块是注册的唯一 IP 地址,称为内部全局地址。 未注册的专用 IP 地址分为两组,小部分(外部本地地址)用于NAT 路由器;大部分是内部本地地址,用于残域。 外部本地地址用于转换公共网络设备的唯一 IP 地址,即外部全局地址。 有关本地和全局地址的定义的详细信息,请参阅 NAT: 本地和全局定义中找到。 NAT 只转换在内部和外部网络之间传输并指定要转换的数据流。 从不转换与转换标准不匹配或在路由器上其他接口之间转发的任何数据流,但这些数据流会被转发。

    根据是在专用网络(残域)还是在公共网络 (Internet),以及数据流是传入还是传出,IP 地址有不同的标识:

     

     

    nat-address.jpg

  • 残域上的多数计算机使用内部本地地址彼此通信。

  • 残域上的一些计算机在网络外部进行大量通信。 这些计算机具有内部全局地址,这表示它们不需要转换。

  • 当残域上具有内部本地地址的计算机要与网络外部通信时,数据包通过正常路由到默认网关的方式传入一个 NAT 路由器。

  • NAT 路由器检查路由表,查看它是否具有目标地址的对应条目。 如果目标地址不在路由表中,数据包将被丢弃。 如果条目可用,它会验证数据包是否从内部网络传输到外部网络,并且检查数据包是否与指定的转换标准匹配。 然后,路由器检查地址转换表,查找具有相应内部全局地址的内部本地地址是否存在条目。 如果找到条目,则通过使用内部全局地址转换数据包。 如果只配置了静态 NAT 并且没有找到任何条目,则无需转换即可发送数据包。

  • 使用内部全局地址,路由器可向其目标发送数据包。

  • 公共网络上的计算机向专用网络发送数据包。 数据包的源地址是外部全局地址。 目标地址是内部全局地址。

  • 当数据包到达外部网络时,NAT 路由器查看地址转换表并确定目标地址存在并映射到残域上的计算机。

  • NAT 路由器将数据包的内部全局地址转换为内部本地地址,然后检查路由表,再将其发送到目标计算机。 只要没有在转换表中找到地址的对应条目,就不进行转换,并继续验证路由表以确定目标地址。 如果在路由表中未找到到达目标的路由,数据包将被丢弃。

有关使用 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 和超载示例

Flash 动画: 动态 NAT

以下是动态 NAT 的工作原理:

转到动态 NAT Flash 动画,单击其中一个绿色按钮,向残域发送或从残域接收成功的数据包。 /images/flash.gif 单击其中一个红色按钮,发送由于地址无效而被路由器丢弃的数据包。

  • 已为内部网络(残域)提供 IP 地址,这些地址并非由 IANA(Internet 地址分配机构)(分配 IP 地址的全球授权机构)专门分配给该公司。 由于这些地址不是唯一的,因此应将其视为不可路由。 这些是内部本地地址。

  • 公司设置启用了 NAT 的路由器。 该路由器具有一组由 IANA 为公司指定的唯一 IP 地址。 这些是内部全局地址。

  • 残域上的计算机尝试连接到网络外部的计算机,例如 Web 服务器。

  • 路由器从残域上的计算机接收数据包。

  • 在检查路由表并对转换进行验证后,路由器将计算机不可路由的 IP 地址保存到地址转换表中。 路由器用唯一 IP 地址范围外的第一个可用 IP 地址替换发送计算机的不可路由 IP 地址。 现在,转换表具有与一个唯一 IP 地址匹配的计算机不可路由 IP 地址的映射。

  • 当数据包从目标计算机返回时,路由器检查数据包的目标地址。 然后,路由器查找地址转换表,查看数据包属于残域的哪台计算机。 它将目标地址更改为地址转换表中保存的地址,并将其发送到该计算机。 如果没有在表中找到匹配项,将丢弃该数据包。

  • 只要计算机与外部系统进行通信,计算机就会从路由器接收数据包,并且重复该流程。

以下是超载的工作原理:

  • 已为内部网络(残域)提供不可路由的 IP 地址,这些地址不是由 IANA 专门分配给该公司。

  • 公司设置启用了 NAT 的路由器。 该路由器具有一个由 IANA 为公司指定的唯一 IP 地址。

  • 残域上的计算机尝试连接到网络外部的计算机,例如 Web 服务器。

  • 路由器从残域上的计算机接收数据包。

  • 在路由并验证用于转换的数据包之后,路由器将计算机不可路由的 IP 地址和端口号保存到地址转换表中。 路由器用路由器的 IP 地址替换发送计算机不可路由的 IP 地址。 路由器用与路由器保存在地址转换表中的发送计算机的地址信息匹配的端口号替换发送计算机的源端口。 现在,转换表具有计算机不可路由的 IP 地址、端口号以及路由器的 IP 地址的映射。

  • 当数据包从目标计算机返回时,路由器检查数据包的目标地址。 然后,路由器查找地址转换表,查看数据包属于残域的哪台计算机。 它将目标地址和目标端口更改为地址转换表中保存的地址和端口,并将其发送到该计算机。

  • 只要计算机与外部系统进行通信,计算机就会从路由器接收数据包,并且重复该流程。

  • 由于 NAT 路由器现在将计算机的源地址和源端口保存到地址转换表中,因此它将在连接期间继续使用该端口号。 每当路由器访问表中的条目时,都会重置计时器。 如果在计时器到期前没有再次访问该条目,该条目将从表中删除。

查找下表,查看残域上的计算机对任何外部网络的显示方式:

源计算机

源计算机的 IP 地址

源计算机的端口

NAT 路由器的 IP 地址

NAT 路由器的分配的端口号

A

192.168.32.10

400

215.37.32.203

1

B

192.168.32.13

50

215.37.32.203

2

C

192.168.32.15

3750

215.37.32.203

3

D

192.168.32.18

206

215.37.32.203

4

 

 

正如您所看到的,NAT 路由器在地址转换表中存储每台计算机的 IP 地址和端口号。 然后,它用自己的注册 IP 地址替换该 IP 地址,端口号与表中数据包的源计算机条目的位置对应。 因此,所有外部网络都看到 NAT 路由器的 IP 地址和路由器分配的端口号作为每个数据包的源计算机信息。

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

路由器支持的同步转换数量主要由它拥有的 DRAM(动态随机访问存储器)数量决定。 但由于地址转换表中的典型条目只需要 160 字节,因此从理论上讲,带 4 MB DRAM 的路由器可以同时处理 26,214 个转换! 这对于大多数应用程序足够了。

IANA 实际上留出了指定范围的 IP 地址以用作不可路由的内部网络地址。 这些地址被视为是未注册的,(有关详细信息,请查看 RFC 1918: 专用 Internet 地址分配 用于定义这些地址范围),这意味着没有公司或机构可以申请其所有权以及在公共计算机上使用它们。leavingcisco.com 由于那些网络用于专用目的,并且不需要广播,因此路由器不向未注册地址转发数据包。 这意味着来自具有未注册地址的计算机的数据包可以到达注册的目标计算机,但它到达的第一个路由器将丢弃答复。

三类 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 地址冲突的机会。

安全和管理

实现动态 NAT 会在内部网络和外部网络或 Internet 之间自动创建防火墙。 动态 NAT 仅允许源自残域内的连接。 基本上,这意味着外部网络中的计算机无法连接到您的计算机,除非您的计算机发起联系。 因此,您可以浏览 Internet 和连接到站点,甚至可以下载文件。 但其他人不能简单地得到您的 IP 地址和用它来连接到您的计算机上的端口。

静态 NAT(也称为入局映射)允许在特定情况下由外部设备发起到残域计算机的连接。 例如,您可能希望将一个内部全局地址映射到分配给 Web 服务器的特定内部本地地址。

静态 NAT(入局映射)允许残域的计算机与网络外部的设备通信时保持一个特定地址:

 

 

/image/gif/paws/6450/nat-static.jpg

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

网络地址转换与代理服务器有时会混淆,但有一定的差异。 NAT 对源和目标计算机是透明的。 两者都没有意识到正在处理第三个设备。 但代理服务器不是透明的。 源计算机知道它正在向代理服务器发起请求,并且必须进行配置才能完成此操作。 目标计算机认为代理服务器源计算机并且直接进行处理。 另外,代理服务器通常在 OSI 参考模型的第四层(传输)或更高层操作,而 NAT 是第三层(网络)协议。 大多数情况下,在更高层操作使代理服务器比 NAT 设备更慢。

NAT 在 OSI 参考模型的网络层(第三层)操作很合理,因为路由器也在该层工作:

 

 

/image/gif/paws/6450/nat-osi.jpg

NAT 的真正好处在网络管理中很明显。 例如,您可以将 Web 服务器或 FTP 服务器移到另一台主机计算机,而不必担心中断的链路。 只需用路由器的新内部本地地址更改入局映射即可反映新主机。 由于唯一的外部 IP 地址属于路由器或来自全局地址池,因此您还可以轻松地对内部网络进行更改。

NAT 和 DHCP 是一个天然组合,您可以为残域选择一组未注册的 IP 地址,然后让 DHCP 服务器根据需要进行分配。 随着需求的增长,扩展网络也更加容易。 您不必从 IANA 请求更多的 IP 地址。 只需增加在 DHCP 中配置的可用 IP 地址的范围,即可立即为网络上的其他计算机提供空间。

多链路

随着企业越来越多地依赖 Internet,拥有 Internet 的多点连接正在迅速成为网络策略不可缺少的一部分。 多个连接(称为多链路)可以在某个连接失败时降低潜在的灾难性关机的可能性。

除维护可靠的连接外,多链路还允许公司降低通过任何单个连接连接到 Internet 的计算机数目,从而执行负载平衡。 通过多个连接分配负载可优化性能,并会显著减少等待时间。

多链路网络经常连接到多个不同的 ISP(网络服务提供商)。 每个 ISP 向公司分配一个 IP 地址(或 IP 地址范围)。 路由器使用属于 TCP/IP 协议套件的 BGP(边界网关协议),以便在使用不同协议的网络之间路由。 在多链路网络中,路由器使用 EBGP(外部边界网关协议)和残域端上的 IBGP(内部边界网关协议)与其他路由器通信。 将 NAT 与多链路配合使用时,NAT 路由器用不同 ISP 分配的内部全局地址的多个地址池进行配置。 相同的内部本地地址应映射到已配置池中多个内部全局地址,具体取决于数据流通过哪个提供商路由到目标。 这称为按目标的 NAT。 有关详细信息,请参阅 NAT - 将路由映射用于静态转换的功能

如果与 ISP 的某个连接失败,多链路确实会起到至关重要的作用。 只要经分配以连接到该 ISP 的路由器确定连接发生故障,它就将通过其他路由器之一重路由所有数据。

NAT 可用于实现多链路的多提供商连接性的可扩展路由。


 

 

注:本人能力有限,如遇不足之处,还请指正!

China-CCIE  QQ交流群:106155045   点击与作者QQ交谈