与 Google Compute Engine 虚拟机的 TCP 连接

与 Google Compute Engine 虚拟机的 TCP 连接

我无法与我在 Google Cloud Platform 的“Compute Engine”中创建的 Windows 虚拟机实例建立 TCP 连接。在 Windows 机器中,我尝试专门打开我正在使用的端口(135 和 445)。我甚至尝试完全禁用该机器上的防火墙,但没有任何效果。此外,我尝试了 VPC 网络中的几种防火墙规则配置。最近,我尝试设置防火墙规则以允许所有入口连接(目标:网络中的所有实例,源 IP 范围:0.0.0.0/0,允许所有协议和端口) 防火墙规则

奇怪的是,我可以通过 Windows RDP 客户端毫无问题地进行连接。但是,当我尝试在 C# 应用程序中使用以下代码进行连接时,出现以下异常:

“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应”

。 代码:

using (var client = new TcpClient())
                {
                    var result = client.BeginConnect(machine, port, null, null);
                    var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(60), true);

                    if (success)
                    { 
                        client.EndConnect(result);
                        return true;
                    }
                }
            }
            catch (Exception ex)
            {
                if (logWriter != null)
                {
                    logWriter.Debug(ex.Message + ". ");
                }
            }

异常是在“client.EndConnect(result)”行上引发的。我无法在防火墙日志中看到我尝试连接到端口 135。我看到成功的 RDP 连接和到端口 80 的连接(我没有明确尝试过)。我在代码中设置了一个断点,并确认“machine”变量解析为我的 VM 上的外部 IP,而我的“port”变量对应于端口 135。这几乎看起来像是防火墙之前有什么东西阻止了我的连接,但我不确定那是什么

答案1

这更多的是一个评论而不是一个答案(我在 ServerFault 上还没有声誉)但也许这个问题最好在 Stackoverflow 上提出。

答案2

发生这种情况的原因似乎是我的 ISP 默默阻止了我尝试连接到端口 445。我的本地开发机器和我的 GCP Windows VM 不在同一个 VPN 或网络上。我的尝试很可能被我的 ISP 阻止了,因为根据过去对该端口的漏洞,外部端口 445 连接看起来很可疑(请参阅https://www.grc.com/port_445.htm)。

在我最初的问题中,我专注于在 GCP 和 VM 中打开端口,但尝试似乎在那之前就被阻止了。在对该端口上的漏洞进行更多研究后,似乎在不在同一网络上的两台机器上尝试此操作并不是最好的方法。

相关内容