#Признаки неисправности и область применимости
Внутри Virtual Private Cloud виртуальные машины неправильно разрешают приватные DNS-имена: один узел видит старый IP, другой получает NXDOMAIN, при этом прямое обращение к IP работает. Зона DNS, резолвер гостевой ОС и кеширование требуют раздельной проверки.
#Почему это происходит
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не та приватная зонаЧастная DNS-зона может быть связана не с той облачной сетью. | Имя открывается снаружи, но не в нужной сети | Проверьте сеть и зоны. |
| Гостевая ОС использует иной DNSDHCP, systemd-resolved или вручную заданные резолверы меняют цепочку разрешения. | Различаются ответы команды resolvectl и заданного сервера | Сравните DNS в конфигурации сети и ОС. |
| Старые ответы в кешеДанные могут сохраняться до истечения TTL на стороне клиента или промежуточного резолвера. | Через время проблема пропадает без изменений | Сравните текущий авторитетный ответ и кеш. |
#Пошаговая диагностика и устранение
- Запишите проверяемое имя и ожидаемый адресВыберите одно внутреннее полное доменное имя, запишите ожидаемый IPv4, сеть и каталог обеих ВМ. Уточните, используется ли Cloud DNS, собственный DNS-сервер или файловое сопоставление hosts. От этого зависит, где искать причину.
- Проверьте имя на проблемной ВМВ SSH-терминале проблемной Linux-ВМ выполните системный поиск адреса. Если возвращается несколько адресов, фиксируйте все; NXDOMAIN — отсутствие записи в выбранном DNS, а тайм-аут означает, что резолвер недоступен.
- Замените имя внутренним FQDNLinux · Терминал (Bash)КомандаЗамените имя внутренним FQDN. В Linux обычно доступно без администратора; вывод должен содержать ожидаемый IPv4.
getent ahostsv4 internal.example.test
- Сравните используемые резолверыПроверьте список DNS-серверов и домены поиска. На Linux с systemd-resolved используйте
resolvectl status, на других системах найдите настройки NetworkManager или DHCP. Не редактируйте напрямую /etc/resolv.conf, если им управляет другой компонент.Linux · Терминал (Bash)КомандаLinux с systemd-resolved. Если команда отсутствует, проверьтеcat /etc/resolv.confи настройки сетевого менеджера; вывод только для чтения.resolvectl status
- Посмотрите настройку приватной зоныВ консоли откройте Cloud DNS, найдите приватную зону с нужным суффиксом и проверьте привязанные сети VPC. Убедитесь, что A-запись относится именно к имени, которое запрашивает клиент, а не к похожему поддомену; проверьте правильность IP и TTL.
- Проверьте доступность собственного DNSЕсли используете собственный DNS-сервер, сравните маршруты и группы безопасности между ВМ и DNS-сервером. Для большинства обычных DNS-запросов нужен UDP 53, при больших ответах и передаче зоны может применяться TCP 53. Не открывайте эти порты в публичный интернет.
- Сравните ответы с другой ВМНа заведомо работающей ВМ в той же VPC выполните такой же
getentи сравните настройки резолверов. Если результат различается в одной сети, вероятнее проблема в гостевой конфигурации, кеше или локальной hosts-записи, а не в глобальной записи Cloud DNS.
- Устраните только подтверждённое расхождениеЕсли зона привязана не к той сети — исправьте привязку через консоль с резервной записью старой настройки. Если неправильный адрес в зоне — скорректируйте одну A-запись. Если отличается DNS-сервер гостевой ОС — исправьте его штатным сетевым менеджером в тестовое окно.
- Дождитесь TTL и перепроверьтеПовторите поиск имени с обеих ВМ после истечения указанного TTL. Не сбрасывайте кеш DNS целого кластера без необходимости: это создаст лавину запросов. Проверьте реальное подключение к нужному внутреннему сервису по FQDN.
#Как проверить, что проблема исправлена
Обе виртуальные машины в предназначенной сети получают одинаковый ожидаемый частный IP по полному имени, а приложение подключается по имени. При обращении из другой изолированной сети приватная запись не раскрывается, если это соответствует архитектуре.
#Если проблема осталась
Если адрес верный, а соединение не работает, проблема не в DNS: исследуйте маршруты, группы безопасности и порт службы. Если имя всё ещё неверно, укажите точный используемый резолвер и ответ для команды с одной ВМ в обращении к администратору DNS.