基本 NAT 后面的主机可以同时访问服务器上的两个服务吗?

网络工程 ip 纳特
2021-07-14 04:58:22

在阅读Behrouz A. Forouzan 的数据通信和网络(第 5 版)时,我对 NAT 的解释有困难。在第 546 页,该书描述了带有公共 IP 地址池的仅修改 IP NAT(又名基本 NAT;不是常用的修改 IP 和端口 NAT 或 NAPT)。它说“没有任何专网主机可以同时访问两个外部服务器程序(例如,HTTP 和 TELNET)”。但在我的理解中,它可以。这是我的论点:

假设私网主机的IP地址是10.1.1.1,其中一个NAT的公网IP地址是200.2.2.2(一个就够了,这种情况下一个pool就有点过分了),服务器的IP地址是30.3.3.3。

当主机访问服务器的HTTP服务时,主机发出的数据包为[10.1.1.1:1111 -> 30.3.3.3:80]。经过NAT后,数据包变为[200.2.2.2:1111 -> 30.3.3.3:80],即源IP地址被NAT替换为公网IP地址,其他内容不变。NAT 还在其转换表中创建一个新条目,将 30.3.3.3 映射到 10.1.1.1。当回复包[30.3.3.3:80 -> 200.2.2.2:1111]到达时,NAT在其转换表中查找源IP地址(30.3.3.3)并找到刚刚创建的映射项说真正的目的地是 10.1.1.1。因此,NAT 将回复数据包转换为 [30.3.3.3:80 -> 10.1.1.1:1111 ]。

如果同时主机在服务器上登录TELNET,则出包为[10.1.1.1:1112 -> 30.3.3.3:23],翻译为[200.2.2.2:1112 -> 30.3.3.3: 23] 由 NAT。请注意,这次没有创建新的映射条目,因为它将与前一个相同。回复包是[30.3.3.3:23 -> 200.2.2.2:1112],同样经过NAT转换为[30.3.3.3:23 -> 10.1.1.1:1112 ]。

因此,(翻译的)回复数据包都将到达(单个)正确的主机。并且由于它们的目的端口不同,它们都会被正确地传送到主机上的启动程序。完毕。

我错过了什么吗?谢谢你。

附录:这是数据通信和网络(第 4 版)供您参考。

1个回答

似乎您正在讨论的内容在 Cisco 世界(以及其他)中被称为Dynamic NAT基本上是这样工作的:

在此处输入图片说明

您问的是单个内部主机是否可以通过多个服务(端口)向单个外部主机发出请求。答案是肯定的您对如何填充转换表的断言和描述是正确的。

如果本书讨论的是通常称为静态 NAT 的内容……那么更重要的是,单个内部服务器绝对有可能从外部访问多个服务。

我无法访问这本书,因此无法推断作者是否有其他规定或让步。但仅根据您提供的内容,我可以确认您对 NAT 的理解是准确的。