У меня есть экземпляр 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-адрес.
VPC: то же, что и EC2
ЗОНА ДОСТУПНОСТИ: eu-central-1b
ПОДСЕТЬ: на панели RDS я вижу все подсети, но я вижу, что в частной подсети зоны b на один доступный ip меньше
ГРУППА БЕЗОПАСНОСТИ: частная группа безопасности (без исходящих правил, а во входящем, одно правило с портом mysql и группой общественной безопасности в качестве источника)
ПУБЛИЧНЫЙ ДОСТУП: нет
MULTI AZ: нет
VPC: то же, что и RDS
ЗОНА ДОСТУПНОСТИ: eu-central-1b
ПОДСЕТЬ: публичная подсеть зоны b
ГРУППА БЕЗОПАСНОСТИ: группа общественной безопасности (все порты из любого источника в качестве правила для входящего трафика и порты ssh, http и https из любого источника в качестве правила для исходящего трафика)
Я могу получить доступ к экземпляру EC2, используя http и ssh. Работает как положено.
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.