如果我们可以只分配一个公共 IP 地址,为什么我们有 NAT?

Pau*_*und 7 networking nat

如果私有地址块只是用来让路由器决定数据包可以从哪里转发和不可以从哪里转发(因为私有地址在自己的网络上需要是唯一的,但可以在不同的网络上重复),那你为什么需要一个网络地址翻译服务?

如果主机需要连接到网络,为什么不完全跳过私有地址并分配一个公共地址?


多亏了大家,现在答案更清楚了。私有地址的推理已经让我无法理解,我很困惑,当通过分类寻址浪费了这么多 IP 地址时,为什么我们还需要它。我没有(现在仍然不太明白)为什么我们不能重新分配 IP 以更好地利用我们已有的地址。

Law*_*ceC 14

如果主机需要连接到网络,为什么不完全跳过私有地址并分配一个公共地址?

因为 IP 版本 4 中没有足够的公共地址来为每个可能的 Internet 连接设备提供唯一的地址。这就是 IP 版本 6 为地址范围使用更多位并拥有更多地址的原因。

私有地址块不应该通过公共 Internet 路由(这就是它们“私有”的原因)。由于只有 3 个私有区块,其中的地址数量相对较少,因此它们保证被任何拥有私有网络的人重复使用(私有地址只需要在私有网络内保持不变,但另一个私有网络可能重复使用相同的地址)。所以你不能只是把私有地址块放在“外面”——它们会与在别处使用相同块的其他人发生冲突。

所以这就是需要 NAT 的原因。

直接回答你的最后一句话,如果你有足够的公共地址可供你使用,那么你不需要 NAT 来发送和接收流量。如果您不想“保存”IP 地址,则不需要 NAT 出于这个原因。为了完整起见,我会这样说:出于安全原因,有些人依赖 NAT 的以下副作用,即使您确实有足够的公共 IP 地址,这也可能是选择使用它的原因:

  • NAT 后面的用户无法接收传入连接,除非传入流量由路由器明确转发给他们
  • 由于来自 NAT 的传出流量看起来像是来自路由器的 IP 的外部系统,这对外部系统隐藏了 NAT 后面的机器的详细信息,即有多少机器、它们的私有 IP 等。

(我个人不会依赖 NAT 来保证安全,如果我不需要它而是 YMMV)


web*_*rc2 8

NAT 存在的一个原因是,对于 IPv4,可用地址的数量非常有限(理论上的最大值约为 43 亿)。为此,在大多数住宅环境中,互联网服务提供商一次最多向订户提供一个公共 IP 地址。如果您想在多台机器上发送和接收数据包,则需要进行某种本地-公共转换,即 NAT。

IPv6 将改变这一切,因为地球表面每平方英尺应该有数千或数百万个 IP 地址。

  • ...这意味着我覆盖全球的纳米机器人网络将耗尽 IPv6 中的可用地址,并需要迁移到 IPv8 或 IPv9000 或之后的任何内容。 (3认同)