Назад | Перейти на главную страницу

Обновление имени хоста с машины Debian с помощью DHCP на DNS-сервер Windows 2008

У меня есть установка XenServer с машинами Debian (lenny), которые создаются ежедневно с использованием сценария, который создает машину из шаблона и присваивает ей новое имя хоста.

В нашей сети есть устройство Fortinet 60B, которое выступает в качестве DHCP-сервера, и Microsoft Windows 2008 DC, который также служит в качестве DNS-сервера. Я хотел бы настроить шаблон виртуальной машины для отправки имени хоста на DNS-сервер, когда он получает арендованный IP-адрес от DHCP.

В настоящее время Fortinet назначает DC в качестве DNS-сервера вместе с арендой IP. Я попытался добавить строку "send host-name" my-host-name "в /etc/dhcp3/dhclient.conf, но в DC ничего не обновляется.

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

Итак, в основном вы хотите, чтобы ваш клиент отправлял свое имя хоста на ваш DNS-сервер?

Это отлично работает с клиентами Windows, но для машин Linux я бы пошел другим путем: настройте своих клиентов так, чтобы они запрашивали IP-адрес DHCP-сервера. и имя хоста. Используя опцию «request host-name», dhclient просит DHCP-сервер отправить имя хоста вместе с IP-адресом, а затем устанавливает имя хоста виртуальной машины.

Конечно, вам необходимо подготовить в своем DNS имя хоста для каждого IP-адреса в диапазоне DHCP.

Таким образом, у вас не будет проблемы с кешем DNS / задержкой распространения, и у вас может быть центральное место со всеми IP и именами хостов - ваш DNS-сервер.

Я не знаю, поддерживает ли DHCP-сервер вашего устройства отправку имен хостов - большинство поддерживает, но я думаю, что это самый простой способ для клиентов Linux.

Примечание: если вы настроили свой DHCP-сервер так, чтобы один и тот же компьютер всегда получал один и тот же IP-адрес (например, с использованием MAC-адреса), то он, очевидно, всегда будет получать одно и то же имя хоста. На некоторых DHCP-серверах вы можете напрямую использовать имя хоста вместо IP-адреса в файлах конфигурации.

Хм. Никогда не пробовал эту точную конфигурацию - я работал с клиентами Linux на DHCP-серверах Windows, но в этой настройке DHCP-сервер выполняет обновление. Не уверен, что коробка Fortinet делает то же самое.

Вы можете попробовать заставить клиента разговаривать с DNS-сервером напрямую; что-то вроде:

send fqdn.server-update off;
send fqdn.encoded on;
send fqdn.fqdn "hostname.example.com.";  

в /etc/dhcp3/dhclient.conf. Проверьте man dhclient.conf для получения дополнительной информации. Я должен был установить как минимум send fqdn.fqdn чтобы он работал в моей настройке.

Вам также придется включить небезопасные обновления для ваших зон DNS.

Я обнаружил две вещи, которые необходимы для регистрации машины, не присоединенной к домену, и обновления ее записей DNS на сервере Windows DC \ DNS:

  1. Настройте сервер DC \ DNS, чтобы разрешить как безопасные, так и незащищенные динамические обновления DNS.

  2. Настройте полное доменное имя узла, не присоединенного к домену, в соответствии с вашим именем AD \ DNS: как в host.domain.com

Это несколько похоже на мой собственный вопрос. Взгляните на мой последний комментарий к единственному ответу, который я получил, где я ссылаюсь на dhclient.conf.

Многие могут посчитать это очевидным, но обязательно укажите свою директиву запроса в dhclient.conf который не запрашивает имя хоста или доменное имя. По умолчанию в моем дистрибутиве было:

request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, host-name,
        netbios-name-servers, netbios-scope, interface-mtu;

Обратите внимание, что при этом запрашиваются имена хоста и домена с сервера, что обнуляет send host-name ... директива. Мои директивы request и send-host выглядят так:

send host-name "leaf.node.domain.com";
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name-servers,
        netbios-name-servers, netbios-scope, interface-mtu;