端口触发如何知道要打开哪些端口?

Cyb*_*ber 3 networking router port port-forwarding tcpip

我理解的端口转发

创建端口转发规则时,路由器始终保持指定的外部端口打开,并将该端口的所有入站流量转发到规则中指定的端点(私有 IP 和端口)。

例如,当我创建以下规则时...

外部端口: TCP 3478
IP: 192.168.1.100
内部端口: TCP 3478

...路由器现在会将外部端口 TCP 3478 上的所有入站流量转发到端点 192.168.1.100:3478。

我理解的端口触发

使用端口触发,规则结构与端口转发(即内部端口、外部端口、IP 等)相同,但我遇到的每个定义似乎都说这些端口仅在出站请求被“触发”时被“触发”从规则中指定的内部端口发送。<= 这就是我感到困惑的地方。

我认为服务(应该)使用从临时范围中随机选择的端口,因此实际的源/内部端口极不可能是规则中配置的任何内部端口。因此,假设我对这一点的理解是正确的,端口触发实际上如何确定要打开的正确端口?

我仍在学习 TCP/IP、NAT 和一般网络,因此请随时更正我的术语和我可能有错误的任何其他内容。

Kam*_*ski 6

当一切都设置好时,它是这样工作的:

  1. LAN 中的计算机启动与某些服务器的连接。它使用服务器的地址和它期望服务器侦听的某个端口。这是一个“固定”端口,即特定软件(守护进程、游戏服务器等)“始终”侦听此端口、此地址;连接的这一端没有任何东西是随机的。
  2. 在本地端(在发起计算机上,在 NAT 后的路由器上)使用随机(-ish)临时端口,但触发转发的是用于连接远程端的特定端口(可能还有地址).
  3. 现在,如果同一台服务器发起传入连接(否则会被路由器拒绝,因为没有常规端口转发),则路由器会将连接转发到发起第一个(传出)连接的计算机。

所以规则就像

  • 如果来自 LAN 的 A 启动到特定/任何远程 (WAN) 服务器的端口 X 的连接,并且服务器尝试在端口 Y 上启动另一个(传入)连接,则将后一个连接转发到 A。