如果我为远程协助打开路由器(端口 3389)并将该流量指向我的 LAN 上的一个 IP 地址,那么我怎样才能从 LAN 上的其他机器之一通过互联网成功使用远程协助?
我的路由器出问题了吗?或者如果 3389 没有打开,远程协助是否会尝试通过其他端口?
答案1
好的,让我看看我是否理解正确。
您的 LAN 上有一台机器。您已将 3389 端口从防火墙转发到 LAN 上的这台机器。这允许 Internet 上的系统远程桌面连接到该机器。现在,您从 LAN 上的第二台机器尝试通过该防火墙通过 Internet 远程桌面连接到第三台机器(即:不在您的 LAN 上的机器)。您想知道为什么这样做有效。
(挑剔者请注意:这是一种简化。)
机器之间的连接有四个部分:
- 每一方都有一个 IP 地址;以及
- 每侧一个 TCP 端口。
因此系统之间的对话如下所示:
localIP:localPort <-> remoteIP:remotePort
(顺便说一下,这就是远程服务器跟踪多个并发客户端的方式。每个连接都有一个像这样的唯一表达式。)
当您连接到远程服务时,通常会为您预先选择端口。在远程桌面会话的情况下,远程组件将是:
remoteIP:3389
您的本地 IP 是您的机器的 IP。但不明显的是,localPort(通常)不必是特定端口。因此,对话的本地组件如下所示:
myIP:randomPort
...其中“randomPort”是未在其他情况下使用的端口号(并受制于一些其他规则,这些规则目前并不重要)。有些服务需要本地端口,但发起该对话的应用程序将负责获取该本地端口,如果无法获取,则会向您发出警报。
总而言之,您的远程桌面客户端不会使用端口 3389 进行对话,因为没有必要这样做。
现在您可能已经知道网络地址转换 (NAT),它通常用于将本地 LAN IP 转换为(通常)一个通用的可访问 Internet 的 IP 地址。您可能不知道的是,NAT 也适用于传出对话的端口号。这样,NAT 设备(通常是防火墙)就可以处理两个独立客户端使用相同随机端口进行传出连接的情况。
因此,您可以使用 Wireshark 来观察您与远程服务器之间的流量,您会看到如下连接
myIP:randomPort <-> remoteIP:3389
...如果你在远程端运行 wireshark,你可能会看到
myFirewallIP:randomPortThatIsProbablyDifferent <-> remoteIP:3389
..相反,它可以起作用是因为您的防火墙会根据需要进行转换myIP:randomPort
和myFirewallIP:randomPortThatIsProbablyDifferent
返回。