NAT - 内部全局地址

网络工程 纳特
2021-07-10 21:06:12

http://packetlife.net/blog/2010/jan/7/understanding-nat-address-types/

假设我有一堆主机连接到一个典型的路由器(实际上是一个交换机 + 路由器),它有一个由我的 ISP 分配的公共全局 IP。

主机使用不可路由地址的私有 IP,需要使用 NAT 将其转换为公共 IP,以便它可以与 Internet 的其余部分通信。

现在,我的路由器已连接到我的 ISP 网络。它在该网络中有一些 IP 地址,但该地址与我的公共 IP 地址不同,对吗?- 它来自上面链接的文章:

通过这个命令:

ip nat inside source static 192.168.0.10 192.0.2.10

它分配一个公网IP(换句话说,全球IP内)192.0.2.10到主机192.168.0.10这很奇怪,因为您通常为网络中的所有设备提供一个公共 IP,而不仅仅是一台主机。

如果内部全局IP地址确实是我的公网IP地址,我不能更改我的公网IP吗?我想它必须在我的家用路由器的 NAT 中进行配置。如果不可能,是否仅仅是因为路由器固件不提供更改该 IP 的方法?


基本上我见过两种做 NAT 的方法:

  1. 使用特殊端口号将我的主机的私有 IP 转换为我的路由器的公共 IP(允许在其他主机发送回复时反向转换回我的私有 IP)。

  2. 将我的主机的私有 IP 转换为与我的路由器的公共 IP不同的公共 IP。问题是 - 我的 NAT 路由器如何知道他用于转换的公共地址尚未被 Internet 上的其他主机使用?

这两种方法有不同的名称吗?

3个回答

您的问题所指的两种 NAT 可以归类为目标 NAT 和源 NAT。

目标 NAT 通常会将与路由器的连接从 ISP 方向更改为网络内的目标目标。它通常也称为端口转发。这使您可以公开通常在您的专用网络中无法访问的服务。

源 NAT 将通过您的路由器将连接从您的本地网络更改为路由器本身的源目标,从而允许多个主机使用单个公共地址。

NAT 可以执行其他转换,但除特殊情况外,几乎没有其他转换有用。尽管您的问题中有这样的措辞,但您描述的源 NAT 没有帮助。使用在路由器上不起作用的全局地址不会有什么好的效果。没有其他设备或协议会跟踪它,因此所有回复都将转发到应该具有该 IP 的设备,该设备对您的设置一无所知并立即删除它们。如果您想使用不同的 IP,请先在路由器上设置它并使其正常工作。

我们不打算讨论家庭路由器,因为家庭网络和消费级设备特别离题,ISP 最终用户的问题也是如此。

现在,我的路由器已连接到我的 ISP 的网络。它在该网络中有一些 IP 地址,但该地址与我的公共 IP 地址不同,对吗?

您的路由器将有一个由 ISP 分配的 IP 地址,除非 ISP 使用 CGN,否则该地址通常是(您的)公共 IP 地址。

这很奇怪,因为您通常为网络中的所有设备提供一个公共 IP,而不仅仅是一台主机。

您可能希望公开一个设备,如 Web 服务器(或一组服务器的负载平衡器)。

如果内部全局IP地址确实是我的公网IP地址,我不能更改我的公网IP吗?

您永远不应该使用不属于您的公共地址;你会发现自己与互联网断了联系。您可能会被分配一组公共 IP 地址,并且您可以以任何方式使用这些地址,但是使用未分配给您的公共 IP 地址可能会导致各种问题,而且您不会喜欢这样的结果。

如果不可能,是否仅仅是因为路由器固件不提供更改该 IP 的方法?

您可以在任何路由器接口上设置任何有效的 IP 地址(公共或私有),只要路由器接口上的网络不重叠或冲突。

基本上我见过两种做 NAT 的方法:

那么你还没有真正看到太多的 NAT。看到这个问题,思科路由器 NAT 配置中的这三个选项是什么意思?, 有关 NAT 的更多解释。

  1. 使用特殊端口号将我的主机的私有 IP 转换为我的路由器的公共 IP(允许在其他主机发送回复时反向转换回我的私有 IP)。
  2. 将我的主机的私有 IP 转换为与我的路由器的公共 IP 不同的公共 IP。问题是 - 我的 NAT 路由器如何知道他用于转换的公共地址尚未被 Internet 上的其他主机使用?

这两种方法有不同的名称吗?

您的数字 1 可能是 Inside Source 或 Inside Destination。你对此不是很清楚。

您的数字 2 可能是使用公共 IP 地址池的 Inside Source。

我将从 iptables nat table 的角度来回答这个问题。

第一种方法称为 MASQUERADING,在该方法中,您将所有私有 IP 地址与传出接口的公共 IP 地址(使用不同的源端口号进行反向转换)进行转换。

第二种方法是您所说的源 nat 或 SNAT。您有一个公共地址池,您的私有 IP 地址使用这些地址池进行转换。在这种情况下,当转换的连接数大于池大小时,也会发生 PAT。

我的 NAT 路由器如何知道他用于转换的公共地址尚未被 Internet 上的其他主机使用?

不要将任何未分配给您的公共地址用于 NAT 转换(否则,该连接的回复数据包将无法到达您)。