Route53 IPv6 выходной резолвер не перенаправляет

Вопрос или проблема

Кажется, я не могу заставить Route53 корректно перенаправлять DNS-запросы на nat64.net при использовании IPv6. Хостом в этом случае является Ubuntu 22 (хотя я думаю, что это касается AWS).

Вот фон:

  • Я создал Route53 Outbound Resolver с интерфейсами в подсети только для IPv6. Тип конечной точки Resolver – IPV6.
  • Группа безопасности, связанная с интерфейсами, позволяет весь исходящий трафик и весь входящий трафик изнутри VPC.
  • Я создал правило Resolver для перенаправления запросов на ghcr.io на три IPv6-адреса, найденные на nat64.net.
  • Правило Resolver связано с VPC.
  • Я могу успешно выполнить запрос к одному из IPv6-адресов на nat64.net из экземпляра EC2 только для IPv6 в той же подсети, что и конечные точки Outbound Resolver. Другими словами, это работает:
$ nslookup ghcr.io 2a01:4f9:c010:3f02::1
Сервер:     2a01:4f9:c010:3f02::1
Адрес:      2a01:4f9:c010:3f02::1#53

Неавторитетный ответ:
Имя:   ghcr.io
Адрес: 140.82.121.34
Имя:   ghcr.io
Адрес: 2a01:4f9:c010:3f02:64:0:8c52:7922
Имя:   ghcr.io
Адрес: 2a01:4f8:c2c:123f:64:5:8c52:7922
Имя:   ghcr.io
Адрес: 2a00:1098:2b::1:8c52:7922

  • Это тоже работает (показывая, что DNS в целом работает нормально внутри VPC и что подсеть имеет доступ в Интернет через IGW):
$ nslookup google.com
Сервер:     127.0.0.53
Адрес:      127.0.0.53#53

Неавторитетный ответ:
Имя:   google.com
Адрес: 142.251.211.238
Имя:   google.com
Адрес: 2607:f8b0:400a:807::200e
  • Это не работает. Я думаю, это показывает, что правило разрешения работает, но что Outbound Resolver не связывается с адресами nat64.net.
$ nslookup ghcr.io
;; ошибка связи с 127.0.0.53#53: время ожидания
;; ошибка связи с 127.0.0.53#53: время ожидания
;; ошибка связи с 127.0.0.53#53: время ожидания
;; невозможно достичь серверов
  • Журналы потоков VPC не показывают никаких отклоненных соединений.
  • Анализатор доступности не работает с IPv6 (ссылка)

Я еще не нашел документации, утверждающей, что Резолверы не могут использовать Интернет. Мне было бы интересно услышать мысли сообщества по этому поводу!

Обновление 1

Я установил BIND9 на экземпляре EC2 внутри подсети только для IPv6 и создал правило Route53 для перенаправления запросов на ghcr.io на него, и это работает нормально—выходной резолвер, похоже, успешно разрешает, когда используется BIND9 в качестве прокси. Я еще не выяснил, почему конечные точки IPv6 выходного резолвера не могут напрямую подключиться к адресам IPv6 за пределами VPC, когда экземпляр EC2 в той же подсети может это сделать.

Как я понимаю этот документ AWS, трафик из выходных конечных точек не может проходить через Интернет-шлюз. Поэтому у меня есть трафик IPv4, проходящий через NAT-шлюз – но вы не можете сделать это для IPv6 – и это, похоже, не работает через шлюз только для исходящего интернет-трафика.

Поэтому я думаю, что вы наткнулись на единственное текущее решение для IPv6 – (то есть настройка «локального» резолвера в VPC).

Ответ или решение

Решение проблемы с пересылкой запросов по IPv6 в Route 53 Outbound Resolver

Проблема с пересылкой DNS-запросов через Route 53 Outbound Resolver в IPv6-среде, о которой вы упоминаете, может вызывать затруднения у многих специалистов в области IT. Рассмотрим вашу ситуацию более детально, проанализируем возможные причины и предложим несколько решений.

Ситуация

Вы настроили Route 53 Outbound Resolver с IPv6-адресами, используя интерфейсы в подсети только IPv6. Несмотря на то, что ваш EC2 экземпляр внутри этой же подсети может связываться с nat64.net, ваш Resolver не может выполнить запросы напрямую. Ошибка времени ожидания подтверждает, что связь с DNS-серверами за пределами вашей VPC не установлена.

Возможные причины

  1. Ограничения сетевого трафика: Как вы правильно заметили, трафик, исходящий из вашего Outbound Resolver, не может проходить через Internet Gateway. Это создает ограничения на работу с внешними IPv6-ресурсами.

  2. Отсутствие поддержки IPv6 в Reachability Analyzer: Это затрудняет диагностику, так как вы не можете проверить доступность других ресурсов.

  3. Настройка безопасности: Хотя ваш security group разрешает аварийное выполнение запросов, важно убедиться, что нет других правил, таких как Network ACL, которые могут блокировать трафик.

Решение проблем

  1. Использование локального резольвера: Как вы уже выяснили, установка BIND9 на другом экземпляре EC2 в той же подсети позволяет решить проблему. Это, вероятно, является рекомендуемым временным решением, пока AWS не внедрит поддержку для прямых запросов из Outbound Resolver в IPv6.

  2. Проверка настройки правил и шифрования: Убедитесь, что ваши Resolver Rules действительно настроены на пересылку запросов для нужного домена на правильный IP-адрес. Также важно проверить, поддерживают ли итоговые серверы DNS DNSSEC и как происходит шифрование данных.

  3. Настройка Network ACL: Убедитесь, что ваши Network Access Control Lists (ACL) не блокируют трафик к/из внешних IPv6-ресурсов. Нужно проверить как входящие, так и исходящие правила, чтобы гарантировать, что трафик разрешен.

  4. Проверьте настройки DNS: Убедитесь, что DNS-клиент на Ubuntu корректно настроен на использование IPv6 и проверяет правильность конфигурации системного файла resolv.conf (например, работающий DNS-сервер должен быть указан правильно).

  5. Альтернативные подходы: Рассмотрите возможность использования AWS PrivateLink или Transit Gateway, которые могут помочь в маршрутизации трафика для более сложных конфигураций и потребностей бизнеса.

Заключение

В вашей ситуации временное решение по установке локального резольвера выглядит оптимальным. Однако важно отслеживать обновления от AWS относительно поддержки прямых запросов Outbound Resolver для IPv6, чтобы в будущем упростить архитектуру. Понимание ограничений и возможностей ваших инструментов позволит вам легче управлять инфраструктурой в облаке.

Если у вас возникают дополнительные вопросы или потребуется помощь с дальнейшей настройкой, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...