如何找到不可公开访问的 EC2 实例

如何找到不可公开访问的 EC2 实例

我在 AWS 上有两个 EC2 实例。我有一个可供全球访问的应用程序服务器 ( ),我希望它通过内部网络app-server进行通信。因此,我的服务器基本上在运行:secret-serverapp-server

r = requests.get('http://10.1.2.3/stuff')

但是,secret-server每当我关闭/升级/进行其他操作时, 的私有 IP 都会发生变化。 应该如何app-server再次找到它? secret-server.us-east-1.elasticbeanstalk.com解析为公共 IP,该 IP 已通过安全组阻止。 私有 DNS 地址毫无帮助,ip-10.1.2.3.ec2.internal,当然,只要 IP 地址发生变化,它就会发生变化。

基本上,我希望能够配置静态私有 IP 地址,或者每当 EC2 实例发生更改并解析为私有 IP 时附加 DNS 名称。

如果重要的话,我正在使用 Elastic Beanstalk。

我看到的选项:

  • 将子网限制为一个 IP 地址,但这似乎不是最理想的。
  • 在部署中添加第二步,将 IP 地址设置为静态地址,希望 AWS 不会将其用于其他任何人。这似乎很脆弱,而且很容易被忘记。
  • 正如下面的评论所建议的,我尝试添加一个以secret-serverElastic Beanstalk 环境作为别名的 route53 路由,但域解析为公共 IP。

答案1

这就是安全组的用途,因此您不必担心 IP 寻址。在应用服务器安全中,仅在应用服务器需要与 Secret 服务器通信的端口上允许流量到 Secret 服务器的安全组。

现在,如果我们在应用程序中讨论,您可以配置一个内部负载均衡器并将秘密服务器放在它后面,这样您就可以引用负载均衡器的 DNS 名称,而不必担心秘密服务器的 IP。或者您可以按照其他人的建议,在 NIC 上创建一个私有 IP,并将其与新实例重新关联,但其扩展性不如内部 ELB。

https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-internal-load-balancer.html

答案2

搞清楚了。基本上答案就是你设置了一个内部负载均衡器,但这有点复杂,因为 Elastic Beanstalk 要求你以特定方式配置网络。

步骤如下:

  • 创建一个公共子网作为您的 DMZ。
  • 创建一个位于公共子网中的 NAT 网关。
  • 为您的公共子网创建一个路由表,将所有 VPC 内流量路由到 VPC 的 CIDR 块,并将 0.0.0.0/0 路由到您的互联网网关。
  • 为私有子网(您的 EB 应用程序将在其中运行)创建路由表,将 VPC 内部流量路由到 VPC 的 CIDR 块,并将 0.0.0.0/0 路由到 nat 地址。
  • 等待约 5 分钟以使您的更改生效。
  • 转到配置->扩展并选择您想要启用负载平衡。
  • 当它为您提供修改选项时:不要更改有关 ELB 和 EC2 实例子网的任何内容!我认为这是 UI 中的一个错误,但如果您单击任何复选框,它将只允许您拥有一个 ELB或者该可用区域子网中的 EC2 实例,但页面会出错,因为您需要每个实例各一个。最后,选择“内部”负载均衡器选项。
  • 选择保存并等待您的配置更新。

此时,secret-server.us-east-1.elasticbeanstalk.com将解析为私有 IP。

如果您启用私有负载均衡器但不设置 NAT 网关、路由和子网,secret-server.us-east-1.elasticbeanstalk.com则将解析为私有 IP。不幸的是,您的服务也将转换为严重降级并且没有可用的日志(除非您以不太可能的方式预先配置了网络)。这是因为 Elastic Beanstalk 在启动 EC2 实例时会从 S3 下载一些设置脚本。但是,您的负载均衡 Elastic Beanstalk EC2 实例将无法访问互联网,即使您没有在安全组中限制出站通信,因为它们没有公共 IP。

解决方案是设置一个 NAT 网关,所有私有子网都路由到该网关,以及一个托管网关并可以实际访问互联网的“DMZ”子网。亚马逊的文档有一个这样的例子:具有公有子网和私有子网的 VPC (NAT)

公有子网中的实例可以将出站流量直接发送到 Internet,而私有子网中的实例则不能。相反,私有子网中的实例可以使用位于公有子网中的网络地址转换 (NAT) 网关访问 Internet。

我真的觉得 Elastic Beanstalk 也许可以为你做一些这方面的事情,或者至少可以更好地记录它,但无论如何。至少它正在发挥作用。

相关内容