EC2 实例无法相互访问

Bra*_*Dre 4 amazon-web-services

我在同一个可用区和同一个账户上创建了两个 EC2 实例。他们使用不同的安全组。我希望实例 A 仅接受来自实例 B 的某个端口上的连接。

我不相信这些实例是VPC,但不知道如何确认。我无法更改安全组,这让我认为它们不是 VPC。

在安全组中,实例 AI 为端口添加了规则,并使用实例 B 的公共 IP /32 作为源。然后我尝试使用实例 A 的公共 IP 从实例 B 进行连接,但连接尝试立即失败。

我对每个实例的私有 IP 尝试了相同的步骤。我错过了什么?

这是一篇回答类似问题的文章,但涉及 VPC:无法连接到 VPC (Amazon AWS) 中的 EC2 实例

两个实例具有相同的 VPC ID 和子网 ID。

我还尝试将源设置为实例 B 的安全组,这也不起作用。

我正在用mysql尝试这个。在实例 B 上运行的 mysql 客户端立即失败并出现以下错误:

错误 2003 (HY000):无法连接到“54.xx.xx.xx”上的 MySQL 服务器 (113)

为了检查 mysqld 设置没有问题,我对 ICMP Echo Reply 进行了同样的尝试,但也没有奏效。

编辑 感谢最初的回答,我能够确认这两个实例正在 VPC 中运行(通过转到 VPC 控制台)。所以,我的问题与链接的文章非常相似。但是,在那种情况下,问题在于实例不是默认实例,因此没有创建正确的路由和子网。以下是我的 VPC 的设置方式: VPC 是默认的,并且有一个与之关联的路由表。路由表与与 VPC 关联的子网隐式关联。路由表中有一个路由,目标是“本地”。

这些都是默认创建的,据我所知,文档应该允许两个实例相互连接。我(仍然)缺少什么?

Bra*_*Dre 5

我在 AWS 技术支持的帮助下解决了这个问题。以下是像我这样的未来新手的信息:

问题是 iptables 在实例 B 上运行并且不允许任何流量。我了解到 EC2 实例有两个级别的防火墙:安全组(在 AWS 控制台管理)和 iptables(在主机上管理)。有使用iptables的理由,例如 https://wincent.com/wiki/Using_iptables_on_EC2_instances

大多数情况下,您在运行 Amazon EC2 时无需担心使用主机级防火墙(例如 iptables),因为 Amazon 允许您在“安全组”内运行实例,这实际上是您用来执行的防火墙策略指定应该允许来自外部世界的哪些连接到达实例。但是,这是一种“白名单”方法,将其用于正在运行的实例上的“黑名单”目的并不简单。

就我而言,我不需要主机级防火墙,因此关闭了 iptables:

sudo service chkconfig stop
sudo chkconfig iptables off
Run Code Online (Sandbox Code Playgroud)

以下是我在此问题上发表的评论中得到的一些结果:

  • 与私有 ip 连接工作
  • 与私有 DNS 名称连接有效
  • 与公共 ip 连接工作
  • 与公共 EIP 连接工作
  • 与公共 DNS 连接有效,但正如 Chad Smith 在他的回答中所说,DNS 返回此名称的私有IP

这在不同的实例上对我有用的原因是我在该实例中使用的图像没有运行 iptables——每个图像都是不同的。我在这种情况下使用的图像使用 iptables 来禁止除 SSH 之外的所有连接。


归档时间:

查看次数:

19893 次

最近记录:

9 年,4 月 前