У меня три экземпляра в двух отдельных VPC. Я установил пиринг между VPC, оба VPC имеют разрешение DNS и DNS-имена хостов, в пиринговом соединении включен параметр «Разрешить DNS-разрешение от однорангового VPC [...]», а в таблицах маршрутизации для обоих VPC есть записи для маршрутизации через одноранговое соединение с адресным пространством другого VPC.
Назовем их экземпляром 1 (который находится в VPC A) и экземплярами 2 и 3 (которые находятся в VPC B) ...
При моих текущих настройках звоню nslookup ec2-[instance2].compute-1.amazonaws.com
на экземпляре 1 возвращается адрес 10.x.x.x для экземпляра 2, а имя хоста amazonaws.com для экземпляра 3 возвращает адрес 10.x.x.x для экземпляра 3. Это соответствует ожиданиям.
ОДНАКО, когда я звоню nslookup ec2-[instance1].compute-1.amazonaws.com
из экземпляра 2 или экземпляра 3 он возвращает публичный адрес 54.x.x.x для экземпляра 1 вместо своего адреса 10.x.x.x.
Что я упускаю или делаю не так? Я мог делать это раньше (много месяцев назад), я не понимаю, почему это не работает сейчас.
Консоль, похоже, не позволяет вам настраивать это на обеих сторонах соединения, когда одна и та же учетная запись AWS владеет VPC как «запрашивающий», так и «принимающий», поэтому одностороннее разрешение, похоже, единственное, что вы действительно можете настроить с консоли - разрешить можно только хосты VPC запрашивающей стороны.
Похоже, вы можете исправить это с помощью aws-cli.
aws ec2 modify-vpc-peering-connection-options \
--vpc-peering-connection-id 'pcx-xxxxxxxx" \
--requester-peering-connection-options '{"AllowDnsResolutionFromRemoteVpc":true}' \
--accepter-peering-connection-options '{"AllowDnsResolutionFromRemoteVpc":true}' \
--region us-east-1
Разрывы строк для ясности, укажите в регионе VPC --region
вариант и идентификатор вашего пирингового соединения с --vpc-peering-connection-id
.
Действительно, вышеизложенное изменяет значение, возвращаемое aws ec2 describe-vpc-peering-connections
, которое ранее показывало ложь с одной стороны и истину с другой после установки флажка в консоли.
Несколько необычно, но вполне вероятно, что возможности не включаются в консоль, а доступны только через API.