端口地址转换

网络工程 纳特
2022-02-16 14:39:40

我正在从一本书中阅读不同类型的网络地址转换(NAT)技术,并且正在阅读一种称为端口地址转换的特殊类型的 NAT,并且众所周知,每当传入的数据包来自主机到路由器时( NAT)路由器通过自己的IP地址更改其源IP,并通过NAT设备任意生成的端口号删除其原始端口号(源),现在我的问题是为什么我们需要更改源端口号?nat路由器不能保持原始源端口不变而只更改源ip吗?

4个回答

通常,NAT 路由器为多个(私有地址)节点提供连接。由于这些节点不协调它们使用的源端口,它们可能同时使用相同的源端口号,甚至到相同的目的地。

由于该目的地将看到相同的源 IP 地址(NAT 路由器)和相同的源端口(顺便说一句),因此所有数据报都将被视为属于相同的 L4 连接(套接字)。对于作为传输层协议的 TCP,合并的套接字会产生大量的段错误,可能会终止连接。

此外,NAT 路由器将无法正确地将传入流量分离到原始节点,从而中断它们的连接。

因此,大多数 NA(P)T 路由器为它们转换的每个连接使用单独的源端口。这可确保连接能够可靠地工作并简化 NAT 连接管理。

假设路由器部署在网络中并配置 NAT 转换流量,并配置有源 NAT,它将内部网络上的任何 IP 地址转换为路由器 IP 出口接口上的公共 ip 配置。假设本地 IP 范围 10.230.10.0/24 到公共 IP 地址 146.56.78.8 。当出站流量从任何带有源 IP 的 pc 数据包的内部网络发起时,在数据包出去之前到达路由器,源 IP 被转换为公共 IP,路由器记下原始和在路由器的 NAT 表中翻译的数据包

为了清楚地理解假设PC1 PC2,每个发送一个数据包。他们每个人都使用自己唯一的私有 IP 地址作为源 IP 地址,并且每个人都随机选择一个源端口。

65500个端口号可供选择,两台不同的PC随机选择同一个源端口是完全可行的

但是,源 NAT 的配置不包括端口号。即使在路由器的配置中没有明确设置端口,这种转换仍然被归类为 PAT,因为端口是由 NAT 设备动态更改的,在收到数据包时,路由器将每个数据包的源 IP 地址转换为 146.56.78.8并为每个数据包随机选择一个新的、唯一的源端口号 6578、6543,路由器转换端口(PAT),路由器动态选择新的源端口每个源 ip 转换随机选择的端口映射存储在路由器 NAT 表中以供参考对于同一会话的反向流量。当同一会话的反向流量到达路由器时,路由器再次检查 NAT 表并以此方式将数据包发送到特定 PC,响应流量到达内部网络中的正确 PC。

如果源端口不是路由器在翻译数据包时随机分配的。响应流量不能注定要更正内部网络中的源 IP,从那里发起流量

假设您的私有范围是 192.168.0.0/24 并且您的公共 IP 地址是1.1.1.1您的路由器/调制解调器使用1.1.1.1对您的私有范围 IP 地址进行 NAT/PAT。根据您的问题,如果 PC-1, 192.168.0.1想要访问一个网站(HTTP - TCP 80),在这种情况下,您的路由器将使用1.1.1.1:80,那么当 PC- 时路由器将使用什么2、192.168.0.2,需要去一个网站(HTTP - TCP 80)?如果它使用相同的源端口,那么它将如何识别返回流量属于 PC-1 或 PC-2?

为了解决这个问题,路由器/调制解调器用唯一的端口号标记每个设备。在我的示例中,来自 PC-1 的请求将作为1.1.1.1:1111发送,来自 PC-2 的请求将作为1.1.1.1:2222 发送因此,在返回流量中,路由器查看目标端口并识别它属于 PC-1 还是 PC-2。

注:IP地址:端口号

在这篇文章中有你的问题的答案:

https://networkengineering.stackexchange.com/a/47522/3675

我将相关内容贴在这里:

您可能指的是动态 PAT——这是一种允许任意数量的内部主机共享一个或多个公共 IP 地址的转换类型:

动态 PAT 出站插图 - pracnet.net/nat

在上图中,请注意所有三台主机都启动了与 Internet 上的目标的连接。所有三台主机(A、B 和 C)都随机选择自己的源端口(分别为 2222、3333 和 3333)。当它们的数据包通过转换设备时,路由器会选择新的源端口(分别为 7777、8888、9999)。

这是至关重要的,因为源端口的重写是允许将返回流量转发回正确的启动主机的原因

动态 PAT 入站插图 - pracnet.net/nat

路由器记录了初始源端口和翻译后源端口之间的映射,并使用它来正确地将响应流量返回到正确的主机。

如果路由器没有重写源端口,主机 B 和主机 C 的返回数据包都将到达相同的目标端口:

动态 PAT - 没有重新随机化源端口 - pracnet.net/nat

当这些数据包返回路由器时,路由器将无法知道哪个数据包应该发送到主机 B 以及哪个数据包应该发送到主机 C。

因此,动态 PAT 设备也必须重写源端口,以确保返回流量能够成功返回到原始主机。

要了解更多关于动态 PAT 的操作,请查看网络地址转换文章系列中的动态 PAT文章