无需公网 IP 即可访问 EC2 实例

无需公网 IP 即可访问 EC2 实例

我有两个 EC2 实例,一个具有公共 IPv4 公共 IP,另一个没有。我拥有这两个实例的密码,可以成功登录其中一个实例(具有 IPv4 公共 IP),但无法访问另一个实例。我假设没有 IPv4 公共 IP 的实例需要公共 IP,但看起来我无法创建一个。当我尝试通过 RDP 进入这台机器时,我收到错误消息:

未启用对服务器的远程访问。远程计算机已关闭。远程计算机在网络上不可用。

以下是我尝试远程控制这台机器的步骤:

  1. 我确实有此 EC2 的 VPC,并且我验证了它对端口 3389(RDP 端口)的所有外部访问开放。
  2. 我的客户端机器可以成功访问 RDP,因为它可以登录到其他 EC2 实例。
  3. 当我查看该实例时 - 我只是猜测这就是问题所在 - 这些与我可以访问的实例不同:

公共 DNS (IPv4)

IPv4 公有 IP[可访问的机器有此设置,不可访问的机器没有]

IPv6 IP

私人 DNS [详细信息已填写]

私有 IP [已填写详细信息]

  1. 我没有看到列出此计算机的 DNS 名称(作为 IP 的替代)。当我尝试通过单击实例、单击连接并下载 RDP 文件来启动它时,它尝试连接的 IP 地址是私有 IP。我还尝试连接到私有 DNS - RDP 抛出一个错误,说它找不到该计算机。
  2. 如果我单击实例,然后单击Actions并选择Manage IP Addresses,则不会看到任何列出的公共 IP。同样,另一台机器有一个。
  3. 我还验证了这里的一些步骤

在这种情况下,(a) 我如何通过 RDP 访问此 EC2 实例,以及 (b)(或者 - 如果这是唯一必要的)我如何在这种情况下分配公共 IP 地址。如果后者不可能,那么是否可以访问该机器 - AWS 允许某人创建他们无法访问的机器似乎很奇怪。

答案1

发生这种情况是因为它没有关联的弹性 IP,因此只能使用内部 IP 从 VPC 内部访问它。

我能想到三个解决这个问题的办法。

选项1:

为实例分配一个弹性 IP。

进入 EC2 仪表板,然后在网络和安全菜单中转到弹性 IP。

点击分配新地址。

右键单击新 IP 并选择关联地址。

将其与没有弹性 IP 的 EC2 实例关联。

现在您可以尝试再次连接到该实例,并且 RDP IP 将是弹性 IP 而不是 VPC 私有 IP。

选项 2:

如果您需要此 EC2 实例与互联网保持断开连接,则可以使用兼容 RDP 的软件通过私有 IP 从同一 VPC 内的另一个 EC2 实例进行连接。

选项 3:

转到 VPC 仪表板,然后转到 VPN 连接,创建 VPN 连接并连接到它,以便能够使用私有 IP 通过 RDP 进入 EC2 实例。

答案2

总结:为您的 EC 实例分配弹性 IP.免费且简单。

没有公共 IP 是完全合理的 - 并非所有服务器都需要连接到互联网。想象一下,一台服务器充当运行 PHP 的 Web 服务器和数据库之间的缓存,它不需要通过互联网访问。我甚至猜测,在 AWS 的所有服务器中,只有一小部分是公开可访问的。如果某些东西不需要连接到互联网,你就不要连接它,因为这是一种安全风险。您可以拥有一个完全没有互联网路由的私有 VPC,它可能充当虚拟数据中心,使用直接连接或 VPN 连接连接到企业网络。

通常在三层架构中,只有 Web 层可在互联网上使用,其主要工作是将请求传递回无法直接访问互联网的私有子网中的应用程序或数据库服务器。您的 Web 服务器位于非军事区保护您网络的其余部分。更常见的做法是在 EC2 实例前面放置一个弹性负载平衡器或云端,因为这可以防御许多第 4 层和第 7 层攻击(例如 DDOS)。

答案3

以下是您可以检查的事项

  1. 从 AWS 控制台检查是否已分配任何公共 IP,如果没有,则可以通过转到网络和安全>弹性 IP>分配新 IP 来分配公共 IP,并将其附加到实例

  2. 附加后,您需要检查服务器实例附加到哪个安全组,您可以单击实例>实例>您的实例,向下滚动到下面的安全组,您可以看到您的实例附加到的组

  3. 一旦你弄清楚了弹性 IP 和安全性,你需要编辑安全组并检查 Windows 的 RDP 端口是否启用

  4. 如果你尝试在 Ec2 实例内访问,那么你需要检查两台服务器是否都附加了相同的默认 VPC 安全组

  5. 检查您的 vpc 设置,查看是否创建了网关和 vpc

  6. 首先尝试 telnet 端口来测试连通性

相关内容