У нас есть одна виртуальная сеть с одним облачным сервером на Azure. Эта виртуальная сеть имеет несколько серверных узлов, включая машины Windows и несколько машин Linux. На одной из машин Windows размещен локальный DNS-сервер для разрешения имен в виртуальной сети. Все узлы были созданы с опцией DNS, так что локальный DNS зарегистрирован в узлах как их DNS. Кроме того, настройки виртуальной сети были обновлены для включения этого DNS-сервера (172.16.0.4) в качестве DNS для VN.
Мои машины с Windows работают нормально — при новой настройке или перезагрузке DNS автоматически обновляется, отражая новый IP-адрес этой машины, если таковой имеется.
Однако машины Linux вообще не зарегистрированы на этом локальном DNS. Узлы Linux могут разрешить IP-адрес узла Windows, используя локальный DNS (172.16.0.4), но они не могут достичь других узлов Linux через разрешение имен.
Я попробовал обновить файл resolvconf/resolvconf.d/tail, добавил запись "search" и перезапустил. Также попробовал указать FQDN в файле имени хоста сервера Linux. Я заметил, что в resolv.conf все еще есть строка "search reddog.microsoft.com". Это говорит о том, что используемый DNS-суффикс все еще старый, хотя в VN доступен новый локальный DNS-сервер. Resolv.conf выглядит следующим образом:
nameserver 172.16.0.4
search reddog.microsoft.com
Насколько я понимаю, основная причина этой проблемы в том, что сервер Azure DHCP должен отправлять запросы DDNS на этот локальный DNS (который был должным образом зарегистрирован как DNS уровня VN) для обновления записей для любого нового узла или перезапущенного узла, который попадает в этот VN. Но Azure DHCP, похоже, не отправляет эти запросы DDNS на DNS. Что я упускаю?
решение1
Мои первые мысли были бы о том, что это проблема с вашим DNS-сервером, принимающим регистрацию с сервера Linux, а не проблема с тем, что он туда направляется. Проверьте одну вещь: настроена ли ваша DNS-зона на прием небезопасных обновлений? Это необходимо, так как серверы Linux не смогут пройти аутентификацию для обновления DNS.
решение2
Вы можете изменить конфигурацию вашего DHCP-клиента, добавив следующие строки:
supersede domain-name "your.domainname.com";
supersede domain-search "your.domainname.com";
supersede search "your.domainname.com";
Обычно вы можете найти конфигурацию DHCP в /etc/dhcp/dhclient.conf
файле. Найдите dhclient
внутри, /etc/
чтобы найти нужную.
Другие возможные решения:https://superuser.com/questions/110808/how-can-i-add-additional-search-domains-to-the-resolv-conf-created-by-dhclient-i
решение3
Не говоря уже о том, что содержимое /etc/resolv.conf сбрасывается на значение по умолчанию Azure каждый раз при перезагрузке сервера. Так что даже если вы его измените, в следующий раз при перезагрузке он вернется с доменом поиска reddog.microsoft.com и любым другим сервером имен Azure по умолчанию.