在同一个 EC2 安全组内进行通信

Car*_*arl 8 amazon-ec2 amazon-web-services

我有几个实例在同一个安全组(比如:Group-A)中运行,它们需要相互通信,特别是端口 4369。

每个实例都有不同的弹性 IP。

安全组配置为允许通过 TCP:4369 的入站流量来源:sg-XXXXX (Group-A)

但是,实例只能通过内部 IP (10.xxx.xxx.xx) 或亚马逊公共 DNS 相互通信:ec2-ELASTIC-IP.compute-1.amazonaws.com(显然亚马逊会将其转换为内部 IP) .

如果我使用弹性 IP,它将不起作用。如果我使用自己的指向弹性 IP 的 FQDN,它将不起作用。

如果我将入站规则中的源从 sg-XXXXX (Group-A) 更改为 0.0.0.0,则它适用于我自己的 FQDN 和弹性 IP。但我们不会出于安全考虑使用它。如果我删除入站规则,则无效,甚至使用内部 IP。

那么如果我想使用自己的 FQDN 该怎么办呢?(worker-1.company.com -> Elastic IP),它更具可读性和更易于管理。

Mic*_*bot 7

您描述的行为是正常的,因为当通过弹性 IP 在实例之间进行通信时,安全组内机器的身份 - 出于依赖 sg-xxxxxxxx 源的安全组配置的目的 - 无法真正建立完整的信心,因为转换地址会通过中间硬件发送流量(大概),并且流量不再被视为直接来自实例。

解决方案是使用指向公共 DNS 记录的 CNAME 记录命名 DNS 中的主机,而不是指向特定 IP 地址的 A 记录。

在 company.com DNS 区域中:

worker-1   IN  CNAME  xx-xx-xx-xx.compute-1.amazonaws.com.
Run Code Online (Sandbox Code Playgroud)

现在,如果从内部查询,worker-1.company.com 将解析为私有 IP,从外部查询公共 IP。