在 NAT 后面的计算机上的端口上连接

网络工程 纳特
2022-02-21 21:12:12

我有一个关于 NAT 的问题,这个问题已经回答了大部分问题:NAT / PortForwarding / TCP/IP 如何工作?

我感到困惑的是问题的这一部分:

为什么这行得通?现在当一个数据包回来时,路由器只需检查目标端口号,并根据前面提到的映射更改目标IP地址和目标端口号,数据包就可以成功传递。

我的问题如下:如果随机计算机(计算机 A)尝试使用 NAT 在路由器后面的 LAN(计算机 B)上的计算机的随机端口上连接会发生什么?例如,如果计算机 A 想通过计算机 B 上端口 42534 上的 TCP 连接会发生什么?发送到 LAN 的数据包如下:

source_address:计算机A的公共地址

source_port:计算机A的端口

destination_address:局域网的公共地址

目的地端口:42534

路由器如何知道它应该将数据包发送到哪台计算机?是否有一个映射可以让路由器知道将它发送到 LAN 上的哪台计算机?

1个回答

是的。通常,可从公共端访问的设备具有静态映射。因此(公共)目标地址和端口被映射到 NAT 设备后面的私有地址。

如果没有预先设置静态映射,那么路由器将不知道如何处理数据包并将其丢弃。换句话说,除非管理员配置了 NAT 映射,否则不会发生转换。

根据配置的 NAT 类型,所有端口都将映射到一个专用地址。或者,可以将特定端口映射到单独的私有地址和端口。

例如,您可以使用单个公共 IP 并将其映射到不同的服务器。使用相同的公网 IP,mail (tcp 25) 可以映射到一个服务器,SSH (tcp 22) 可以映射到不同的服务器,web (tcp 80) 可以映射到第三个服务器。但它们都以一个地址的形式出现在公众面前。