Конечная точка RDS всегда сопоставляется с внешним IP-адресом

Конечная точка RDS всегда сопоставляется с внешним IP-адресом

У меня запущен экземпляр RDS, и он доступен через Интернет.

Мне бы хотелось, чтобы экземпляры внутри VPC подключались к нему изнутри, а не через Интернет.

Согласно другому вопросу (https://stackoverflow.com/questions/21089582/amazon-rds-endpoint-internal) строка подключения хоста должна соответствовать внутреннему IP, если запрашивается изнутри VPC. Это не работает, я получаю внешний IP, несмотря ни на что.

  • У меня только один VPC, поэтому пиринг не используется.
  • У меня установлены пользовательские параметры DHCP, вероятно, проблема именно в этом.

Мой набор параметров DHCP VPC: domain-name = mysite.local;domain-name-servers = 10.10.51.254;

У меня такое чувство, что именно здесь что-то сломалось из-за моего пользовательского набора параметров DHCP. mysite.local— это локальный домен, а 10.10.51.254— локальный сервер Bind (не использующий Route53).

Нужно ли мне настроить какой-то прямой просмотр на us-east-1.rds.amazonaws.comмоем DNS-сервере или я где-то упускаю какую-то часть конфигурации? Я думал, что это должно быть "автоматически" в VPC, так что, похоже, я ошибаюсь.

решение1

Так что проблема здесь действительно в том, что я использую частный DNS-сервер, а не DNS, предоставленный Amazon. Не происходит никакой "магии автоматического VPC от Amazon", которая помогает поиску домена для этих сервисов AWS (что я как-то неправильно предполагал)

Секрет в том, что даже если вы не используете DNS, предоставляемый Amazon, вы можете выполнять поиск на DNS-сервере VPC.

Если VPC имеет DNS resolutionи DNS hostnamesустановлен наYESзатем вы можете выполнить поиск на DNS-сервере VPC, который находится по базовому адресу блоков CIDR VPC +2 (то есть, если ваш VPC — , 10.10.0.0/16то адрес поиска DNS — 10.10.0.2) — я нашел это в какой-то случайной записи в блоге, когда искал эту информацию, не уверен, есть ли она в официальной документации, так как все DNS-поиски, которые я выполняю через документацию Amazon, переполнены информацией о Route 53.

Итак, теперь, когда у нас есть работающий прямой поиск DNS, все, что нам нужно сделать, это добавить пересылку поиска в сервер привязки. Подвох здесь в том, что имя хоста экземпляра RDS на самом деле является поиском CNAME.

Например:

user@host:~$ nslookup mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com
Server:     10.10.51.254
Address:    10.10.51.254#53

Non-authoritative answer:
mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com    canonical name = ec2-34-204-131-19.compute-1.amazonaws.com.
Name:   ec2-34-204-141-206.compute-1.amazonaws.com
Address: 34.204.131.19

Фактически поиск представляет собой запись CNAME для , compute-1.amazonaws.comпоэтому для ОБОИХ требуется правило пересылки.

TL;DR:Учитывая, что CIDR моего VPC — 10.10.0.0/16, вот пример пересылаемых блоков, которые решили мою проблему и ответили на этот вопрос:

zone "mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com" {
    type forward;
    forward only;
    forwarders { 10.10.0.2; };
};

zone "compute-1.amazonaws.com" {
    type forward;
    forward only;
    forwarders { 10.10.0.2; };
};

Теперь все службы в локальном VPC могут искать частный IP-адрес экземпляра RDS, а публичное разрешение также по-прежнему работает из-за пределов VPC.

Связанный контент