Не удалось подключиться к экземпляру RDS извне VPC (ERROR 2003 (HY000) Не удается подключиться к MySQL Server)

Я создал VPC и внутри него экземпляр RDS. Экземпляр RDS общедоступный и его настройки следующие:

Настройки RDS

Группа безопасности, прикрепленная к экземпляру RDS, принимает весь трафик:

Настройки группы безопасности

Все мои ACL сети принимают все trafic. Однако я не могу получить доступ к моему экземпляру с компьютера за пределами моего VPC. Я получаю следующую ошибку:

    [email protected]:~# mysql -h mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com -P 3306 -u skullberry -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com' (110)

Если я запускаю ту же команду из EC2 внутри моего VPC, я могу подключиться. Я попытался подключиться к нескольким машинам, все они без брандмауэра (т. Е. Порт 3306 открыт).

Мне явно не хватает чего-то, но все, кажется, правильно настроено. В чем может быть проблема?

10 голосов | спросил hallaplay835 19 J000000Sunday15 2015, 00:52:42

2 ответа


17

Для экземпляра RDS в VPC для доступа к «общедоступным» (Интернет) все подсетей, к которым он присоединен, должны быть «общедоступными» - в отличие от «частных» - подсетей VPC.

Общественная подсеть по существу определяется как подсеть, которая имеет объект интернет-шлюза (igw-xxxxxxxx) в качестве маршрута к «Интернету» или, по крайней мере, к любым интернет-адресам, к которым вы должны получить доступ. Как правило, это адрес назначения 0.0.0.0/0. Публичные подсети должны использоваться для экземпляров (включая RDS), которые будут иметь связанный публичный IP-адрес, и не должны использоваться для экземпляров, которые не будут иметь общедоступных IP-адресов, поскольку частные адреса не работают через Интернет без перевода.

Частная подсеть, напротив, имеет свою таблицу маршрутизации, настроенную для доступа к интернет-адресам через другой экземпляр EC2, обычно экземпляр NAT. Это показано в таблице маршрутов VPC, связанной с этой подсети, как i-xxxxxxxx, а не «igw». Эта машина (которая сама по себе будет находиться в другой подсети, чем те, для которой она выступает в качестве адресата маршрута) служит в качестве переводчика, позволяя частным IP-экземплярам прозрачно выполнять исходящие интернет-запросы с использованием публичного устройства NAT IP для их потребностей в Интернете. Экземпляры с открытым IP-адресом не могут нормально взаимодействовать с Интернетом, если они подключены к частной подсети.

В конкретном случае здесь подсети, связанные с экземпляром RDS, на самом деле не были настроены как что-то, что можно было бы просто классифицировать как закрытую или общедоступную подсеть, поскольку в подсети не было никакого маршрута по умолчанию. Добавление маршрута по умолчанию через объект «igw» или, как это было в OP, добавление статического маршрута к IP-адресу Интернета, где требуется подключение, в таблицу маршрутов VPC для подсетей устраняет проблему с подключением.

Однако ... Если у вас возникла аналогичная проблема, вы не можете просто изменить таблицу маршрутов или построить новые таблицы маршрутов и связать с ними подсети, если только у вас нет ничего уже работающего правильно в подсетях, потому что изменение можно разумно ожидать, что они нарушат существующую связь. Правильный курс в этом случае состоял бы в том, чтобы предоставить экземплярам в разных подсетях правильные записи таблицы маршрутов на месте.

При настройке VPC идеально для четкого определения ролей подсети и полного обеспечения необходимых маршрутов при первом вводе VPC. Также важно помнить, что вся VPC «ЛВС» - это программно-определенная сеть. В отличие от физической сети, где маршрутизатор может стать узким местом, и часто бывает разумно размещать машины с интенсивным трафиком среди них в одной и той же подсети ... Подсети перехода трафика не имеют недостатка производительности для VPC. Машины должны быть размещены в подсетях, которые соответствуют потребностям IP-адресации устройства - общедоступный адрес, общедоступная подсеть; нет общего адреса, частной подсети.

Более подробное описание логистики частных /общественных подсетей в VPC можно найти в Почему нам нужна приватная подсеть в VPC (при переполнении стека).

ответил Michael - sqlbot 19 J000000Sunday15 2015, 21:52:07
0

Также проверьте, чтобы сеть, к которой вы подключены, не блокировала подключения к другому серверу на порту 3306. Это было для меня при подключении к моей корпоративной сети.

ответил gary69 26 Jpm1000000pmFri, 26 Jan 2018 23:13:25 +030018 2018, 23:13:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132