Назад | Перейти на главную страницу

Общайтесь в одной группе безопасности EC2

У меня есть несколько экземпляров, работающих в одной группе безопасности (скажем: Group-A), которым нужно общаться друг с другом, в частности, порт 4369.

У каждого экземпляра свой эластичный IP-адрес.

Группа безопасности настроена для разрешения входящего трафика через TCP: 4369 Soruce: sg-XXXXX (Group-A)

Однако экземпляры могут общаться друг с другом только через внутренний IP-адрес (10.xxx.xxx.xx) или публичный DNS Amazon: ec2-ELASTIC-IP.compute-1.amazonaws.com (очевидно, Amazon переведет это на внутренний IP-адрес). .

Если я использую Elastic IP, это не сработает. Если я использую собственное полное доменное имя, указывающее на эластичный IP-адрес, это не сработает.

Если я изменю источник во входящем правиле с sg-XXXXX (Group-A) на 0.0.0.0, он будет работать с моим собственным FQDN и эластичным IP. Но мы не будем использовать это по соображениям безопасности. Если я удалю правило для входящих подключений, ничего не работает, даже если использовать внутренний IP.

Итак, что мне делать, если я хочу использовать свое полное доменное имя? (worker-1.company.com -> Elastic IP), который гораздо удобнее читать и легче управлять.

Поведение, которое вы описываете, является нормальным, поскольку при обмене данными между экземплярами через эластичный IP-адрес идентичность машины в группе безопасности - для целей конфигурации группы безопасности, основанной на источнике sg-xxxxxxxx - не может быть действительно установлена ​​с полным уверенность, потому что преобразование адресов отправляет трафик (предположительно) через промежуточное оборудование, и трафик больше не рассматривается как исходящий прямо из экземпляра.

Решение состоит в том, чтобы дать вашим хостам имена в DNS с записями CNAME, указывающими на общедоступную запись DNS, вместо записей A, указывающих на конкретный IP-адрес.

В зоне DNS company.com:

worker-1   IN  CNAME  xx-xx-xx-xx.compute-1.amazonaws.com.

Теперь worker-1.company.com разрешит частный IP-адрес при запросе изнутри и общедоступный IP-адрес извне.

Это не идеально, но вы можете добавить явные сопоставления от FQDN к частным IP-адресам в файле hosts каждого из экземпляров. Таким образом, ваш код будет использовать полное доменное имя, но сеть будет фактически использовать частную связь (что в любом случае более безопасно).

Это разумный вариант, если у вас небольшой относительно фиксированный набор экземпляров. Вам, вероятно, следует автоматизировать этот процесс, если это возможно.

Вы также можете использовать Route 53, DNS Amazon в качестве услуги. Сопоставьте свое полное доменное имя с общедоступным DNS-именем экземпляра. Внутри EC2 это будет отображаться на частный IP. Вам все равно нужно будет автоматизировать это с помощью API маршрута 53.