У нас есть единая виртуальная сеть с одним облачным сервером в 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, добавил запись «поиск» и перезапустил. Также попытался указать полное доменное имя в файле имени хоста сервера Linux. Я заметил, что в resolv.conf все еще есть строка «search reddog.microsoft.com». Это говорит о том, что используемый DNS-суффикс по-прежнему является более старым, хотя в VN доступен новый локальный DNS-сервер. Resolv.conf выглядит следующим образом:
nameserver 172.16.0.4
search reddog.microsoft.com
Насколько я понимаю, основная причина этой проблемы заключается в том, что DHCP-сервер Azure должен отправлять запросы DDNS на этот локальный DNS (который был должным образом зарегистрирован как DNS уровня VN) для обновления записей для любого нового узла или перезапущенного узла, который входит в этот локальный DNS-сервер. В.Н. Но похоже, что Azure DHCP не отправляет эти запросы DDNS в DNS. Что мне не хватает?
Мои первоначальные мысли заключаются в том, что это проблема с тем, что ваш DNS-сервер принимает регистрацию с сервера Linux, а не с его направлением туда. Стоит проверить, настроена ли ваша зона DNS для приема небезопасных обновлений? Это необходимо, поскольку серверы Linux не смогут пройти аутентификацию для обновления DNS.
Вы можете изменить конфигурацию своего 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
Не говоря уже о том, что содержимое /etc/resolv.conf сбрасывается до значения по умолчанию для Azure при каждой перезагрузке сервера. Таким образом, даже если вы все же измените его, при следующей перезагрузке он вернется с поисковым доменом reddog.microsoft.com и любым сервером имен Azure по умолчанию.