NAT(网络地址转换)是一种旨在延长 IPv4 寿命的方法。如果没有它,我们将在多年前(而不是最近发生的情况)完全耗尽 IPv4 地址。不幸的是,NAT 打破了端到端连接的 IP 模型,其中每个设备都有一个唯一的 IP 地址。
NAT 的核心是简单地将 IP 数据包上的源地址和目标地址中的一个或两个转换为不同的地址。NAT 有多种变体。用于允许具有私有地址的网络上的设备使用单个公共地址的常见版本称为 NAPT(网络地址端口转换)。
NAT 可用于不同的设备类型,但最方便的是在将专用网络连接到公共 Internet 的防火墙或路由器上运行 NAT 进程。运行 NAT 不是防火墙或路由器的要求,但这通常是运行它的合乎逻辑的位置。
NAPT 查看从内部到外部的数据包的源第 3 层和第 4 层地址,然后在 NAT 表中创建或更新一个条目,并在转发之前将源第 3 层和第 4 层地址替换为不同的地址。数据包。
当一个报文带着NAT设备的三层目的地址从外面进来时,NAPT查看目的三层和四层地址,在NAT表中查找,确定是哪三层和哪一层-4 address 用于替换目标地址,然后替换这些地址并将数据包转发到内部。NAT 丢弃任何有 NAT 表条目的数据包。
NAT 表条目将超时,或者在某些情况下使用 TCP,将在连接结束时清除。
NAPT 检查源地址和目标地址以创建特定对话的 NAT 表条目很重要。这有助于防止不属于对话的外部主机向内部主机发送不需要的数据包。
数据包上的源地址和目的地址都必须与 NAT 表条目匹配,然后才能允许数据包从外到内。这意味着只有内部主机才能发起对话,因为没有可供外部主机发起对话的 NAT 表条目。这带来了端口转发的概念,它本质上创建了一个永久的 NAT 表条目,以便允许外部主机与内部主机发起对话。
有关 NAT 的更多信息,您可以查看RFC 3022,传统 IP 网络地址转换器(传统 NAT)。