我理解的端口转发
创建端口转发规则时,路由器始终保持指定的外部端口打开,并简单地将该端口的所有入站流量转发到规则中给出的端点(私有 IP 和端口)。
例如,当我创建以下规则时...
外部端口:TCP 3478
IP地址:192.168.1.100
内部端口:TCP 3478
...路由器现在将外部端口 TCP 3478 上的所有入站流量转发到 192.168.1.100:3478 的端点。
据我了解,端口触发
对于端口触发,规则结构与端口转发相同(即内部端口、外部端口、IP 等),但我遇到的每个定义似乎都表明,只有当从规则中指定的内部端口发送出站请求时,这些端口才会“触发”。<=这就是我感到困惑的地方。
我认为服务(应该)使用从临时范围中随机选择的端口,因此实际源/内部端口不太可能是规则中配置的任何内部端口。因此,假设我对这一点的理解是正确的,端口触发实际上如何确定要打开的正确端口?
我仍在学习 TCP/IP、NAT 和网络方面的知识,因此请随时纠正我的术语和其他任何错误。
答案1
当一切设置好后,它的工作原理如下:
- 局域网中的计算机发起与某个服务器的连接。它使用服务器的地址和它希望服务器监听的某个端口。这是一个“固定”端口,即某个特定软件(守护程序、游戏服务器等)“始终”监听此端口、此地址;连接的这一端没有任何随机性。
- 本地端(在启动计算机上,在 NAT 之后的路由器上)使用一个随机的临时端口,但触发转发的是用于远端的连接。
- 现在,如果同一台服务器发起一个传入连接(否则该连接将被路由器拒绝,因为没有常规端口转发),那么路由器会将该连接转发到发起第一个(传出)连接的计算机。
所以规则就像
- 如果 LAN 中的 A 发起与特定/任何远程(WAN)服务器的端口 X 的连接,并且该服务器尝试在端口 Y 上发起另一个(传入)连接,则将后者的连接转发给 A。