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

Подключение к RDS из EC2 в том же VPC

У меня есть экземпляр RDS, работающий в одной подсети без NAT, и экземпляр EC2, работающий в другой подсети с настроенным интернет-шлюзом, оба расположены в одном VPC. Я настроил экземпляр RDS, чтобы он не был общедоступным.

Я использую следующую команду в моем удаленном EC2 (работающем во второй подсети) для подключения к экземпляру RDS:

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p

Я ввел правильный пароль, который установил при настройке RDS, но получаю следующую ошибку:

ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL на «XXX.eu-central-1.rds.amazonaws.com» (110)

Проверил, проблема не в разрешении имен. Ec2 преобразует конечную точку в правильный внутренний IP-адрес.


Вот мои настройки:

RDS

VPC: то же, что и EC2

ЗОНА ДОСТУПНОСТИ: eu-central-1b

ПОДСЕТЬ: на панели RDS я вижу все подсети, но я вижу, что в частной подсети зоны b на один доступный ip меньше

ГРУППА БЕЗОПАСНОСТИ: частная группа безопасности (без исходящих правил, а во входящем, одно правило с портом mysql и группой общественной безопасности в качестве источника)

ПУБЛИЧНЫЙ ДОСТУП: нет

MULTI AZ: нет

EC2

VPC: то же, что и RDS

ЗОНА ДОСТУПНОСТИ: eu-central-1b

ПОДСЕТЬ: публичная подсеть зоны b

ГРУППА БЕЗОПАСНОСТИ: группа общественной безопасности (все порты из любого источника в качестве правила для входящего трафика и порты ssh, http и https из любого источника в качестве правила для исходящего трафика)

Я могу получить доступ к экземпляру EC2, используя http и ssh. Работает как положено.

VPC

VPC: и RDS, и EC2 используют одно и то же

ПОДСЕТИ: по одной общедоступной и по одной частной для каждой АЗ, всего 4

DHCP: значение по умолчанию (domain-name = eu-central-1.compute.internal domain-name-servers = AmazonProvidedDNS)

ТАБЛИЦЫ МАРШРУТОВ: для общедоступных подсетей маршрут к local (автоматически) и в Интернет, для частных лиц только local (автоматически)

ACL: public: allow all как во входящем, так и в исходящем. частный: allow all только на входящем. Также есть строчка с id * с участием deny all, на обоих списках ACL, как на входящем, так и на исходящем, но я почти уверен, что он есть, я не могу его удалить.

Что я делаю не так? Я что-то упускаю?

Проверьте свои группы безопасности, это вероятная причина. Хосты внутри VPC, использующие DNS-имена, всегда будут использовать частный IP-адрес удаленного ресурса, поэтому часть NAT / IG не важна.

Вам необходимо убедиться, что ваша группа безопасности VPC / EC2 и NACL разрешают соответствующий доступ.

у меня есть руководство по настройке группы безопасности EC2 / RDS может оказаться полезным.

Вы также должны проверить с этот ответ на SO.