为什么我无法通过某个端口连接到 EC2 Windows 实例?

上次更新时间:2020 年 8 月 10 日

我无法通过某个特定的端口连接到 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例。如何确定该端口是否打开?

简短描述

以下问题可能会阻止通过特定的端口连接到 EC2 Windows 实例:

  • 使用该端口的服务未在该实例上运行。
  • Windows 防火墙阻止了到该端口的流量。
  • 某个安全组正在阻止流量。
  • 网络访问控制列表 (ACL) 正在阻止流量。
  • 路由表中的路由或本地 Windows 路由不正确。

解决方法

要识别连接问题的源头,请执行以下步骤:

1.    验证应用程序运行正常并且在正确的网络端口上侦听。如果应用程序已停止,则启动它。

要接受某个端口上的流量,EC2 Windows 实例必须托管一个在指定端口侦听的应用程序或服务。从托管该服务的 EC2 Windows 实例上运行 netstat 命令,从而显示活动的连接和端口。

2.    在实例上使用 Telnet 或 Test-NetConnection 执行本地端口测试,从而确认该端口是否在本地连接。

使用命令提示符输入以下命令:

telnet <Private IP> <port number>

使用 Windows PowerShell 输入以下命令:

tnc <Private IP> -port <port number>

如果端口测试失败,请检查在该实例上运行的防病毒和安全软件。在防病毒或安全软件上,将使用此端口的应用程序或服务加入允许列表中,然后再次测试。

3.    使用其他实例重复第 2 步。如果可能,选择同一子网中的实例。如果在另一个实例上的端口测试也失败了,问题可能在操作系统 (OS) 或 EC2 实例配置上。

排查操作系统问题

验证 Windows 防火墙以及在实例上运行的任何其他安全软件允许所需的端口。

排查 EC2 实例配置问题

  • 验证与该实例关联的安全组允许指定端口上的入站或出站流量。
  • 验证网络 ACL的规则允许指定端口上的入站或出站流量。
  • 检查路由表,确定是否存在来自源和目标 EC2 Windows 实例的路由。