NAT转换表端口号

网络工程 通讯协议 纳特 协议理论 UDP 国际会议
2021-07-27 02:37:58

我有一个关于外部地址为 24.34.112.235、内部网络为 192.168.1/24 以及三个内部主机 .1、.2 和 .3 的启用 NAT 的路由器的练习问题。三台主机都打开了两个到 128.119.40.86 80 端口的连接。

路由器的 NAT 表给出为

    NAT Translation Table
      WAN Side                      LAN Side
    24.34.112.235, 4000          192.168.1.1, 3345
    24.34.112.235, 4001          192.168.1.1, 3346
    24.34.112.235, 4002          192.168.1.2, 3445
    24.34.112.235, 4003          192.168.1.2, 3446
    24.34.112.235, 4004          192.168.1.3, 3545
    24.34.112.235, 4005          192.168.1.3, 3546

我的问题是关于答案。我了解 IP 地址。但是,端口号是随机选择的还是3345、3346、3445等的顺序背后有某种逻辑?

这种情况对主机和路由器选择端口号有什么要求?

例如,WAN 端端口号不能是 6000 到 6005 有什么原因吗?或者LAN端的端口号是1234到1239?

2个回答

一般来说,传出端口号基本上是极其不可预测的。端口号仅严格适用于 TCP 和 UDP,但 ICMP“标识符”字段可以以与 NAT 相同的方式工作。

有一些协议必须从特定的端口号发出呼出呼叫,但最常见的操作系统的实现为此目的从一个范围中选择端口。

RFC 6335涵盖了这一点:

系统端口,也称为众所周知的端口,从0到1023(由IANA分配的),则用户端口,也被称为注册的端口,从1024-49151(由IANA分配的),则动态端口,也称为在私人或短周期端口,从49152到65535(从未指定)

一些操作系统从一个范围中随机选择端口,一些操作系统以线性顺序选择它们(就像你在你的例子中看到的那样)。有些人从一个范围内选择最低的可用数字。这完全取决于操作系统。某些操作系统允许您选择范围。(具有大量传出连接的系统,可能是 Web 代理、邮件网关或 NAT 设备,如果范围太小,可能会用完端口号。)

通俗的讲,很多人只是说一些随机的高端口号。

在您的情况下,WAN 端端口号由 NAT 设备选择。LAN 端端口号由三台主机 .1、.2 和 .3 选择,但请注意,三台主机为传出连接选择相同的两个端口号而没有强制执行它是非常不寻常的。(同步运行不太可能做到这一点——例如,重试的瞬时故障将“用尽”操作系统正在使用的任何顺序的端口号。)

正如埃迪所说:

许多 Cisco 路由器会依次选择 Source Ports。很多 F5 设备随机选择 Source 端口。每个供应商都可以按照自己的方式自由地做。

需要注意的一点是,如果您计划对端口号进行访问控制,您可能必须适应您的操作系统使用的任何内容。

如果出于某种原因您需要控制传出 NAT 的特定端口号,则您的 NAT 设备中需要“静态 PAT”。

这种情况对主机和路由器选择端口号有什么要求?

标准中没有定义设备如何为 NAPT 转换选择端口号。实际实施取决于设备制造商。有些厂商会使用顺序端口号,有些会使用随机端口号;如何实施完全取决于制造商。

作为最终用户,您将无法控制端口的动态分配,但是,根据设备,您可能能够实现端口转发。

理解可以使用 NAPT 的每个协议(TCP、UDP 和 ICMP)都有一个单独的转换表也很重要。ICMP 不像 TCP 和 UDP 那样使用端口(传输地址),虽然 TCP 和 UDP 使用相同数字范围内的端口号,但它们是不同的端口,即使端口号相同(TCP 端口 9876 是不是UDP 端口 9876,反之亦然)。ICMP 具有查询 ID 而不是端口。