![NAT 客户端和服务器以及端口关闭](https://linux22.com/image/1558783/NAT%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%A5%E5%8F%8A%E7%AB%AF%E5%8F%A3%E5%85%B3%E9%97%AD.png)
假设我有一个客户端和服务器。客户端位于 NAT 后面,而服务器是公共的。
客户希望拥有会议与服务器。
假设客户端位于 192.168.1.1,NAT 位于 192.168.1.2 私有 IP 地址。NAT 位于 50.0.0.1,服务器位于 50.0.0.2 公有 IP 地址。
客户端向服务器发送 UDP/IP(希望与 TCP/IP 类似)数据包。此数据包的源 IP 为 192.168.1.1,源端口为 1000(随机选择),目标端口为 50.0.0.2,目标端口为 2000,因为这是应用程序在服务器上运行的端口。
TCP/IP 数据包到达 NAT,它将源 IP 更改为 50.0.0.1 和端口,假设为 5000(随机选择)并路由到服务器。
服务器发送目标IP为50.0.0.1、端口为5000的响应数据包。
NAT 将数据包的目标 IP 更改为 192.168.1.1,目标端口更改为 1000。
现在,服务器是否可以向同一个 IP 50.0.0.1 和端口 5000 发送许多 UDP/IP 数据包,并且所有数据包都将被转发到客户端 192.168.1.1 端口 1000?
如果是,那么 NAT 公共端的端口 5000 会将数据包转发到上述客户端多长时间?
只有数据包源 IP 为 50.0.0.2,源端口为 2000会转发给客户吗?
答案1
答案:
- 是的。
- 这取决于设备的 NAT 实现。在 Linux 中,可以通过以下方式进行调整编辑 /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_*
- 是的 - 除非有被 NAT 识别的“相关”端口,在这种情况下会使用额外的 NAT 模块来计算出相关的端口(至少在 Linux 上)