Как мой DHCP-сервер знает имя хоста моей машины, если я не определил его в dhclient.conf?

12

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

Рассматриваемый сервер - это виртуальная машина Xen, на которой работает Ubuntu 9.10 Server. Физический сервер Xen также находится в нашей сети, и когда я впервые загрузил виртуальную машину в Xen (я импортировал ее с локальной виртуальной машины Virtualbox, работающей на моей машине, где она работала в другой сети), он получил Арендуйте DHCP у нашей офисной сети и все было хорошо.

Я проверил dhclient.eth0.leasesфайл, чтобы увидеть, что было настроено, и увидел, что старая аренда DHCP из предыдущей сети, в которой находился компьютер, все еще была там, а также новая аренда DHCP для офисной сети, к которой она в данный момент подключена. Я сразу заметил две вещи:

  1. Информация об аренде старого DHCP из предыдущей сети не имеет options host-nameстроки, которая, как я понимаю, означает, что исходная версия виртуальной машины VirtualBox не отправляла эту опцию на сервер DHCP. Или это означает, что старый DHCP-сервер не поддерживал параметр имени хоста DHCP? В то время он использовал внутренний DHCP-сервер VirualBox ...

  2. Новая информация DHCP аренды делает есть options host-nameлиния, которая включает в себя правильное, текущее имя хоста для сервера ( «Фоззи»). Если я правильно понимаю, это означает, что сервер отправил свое имя хоста на DHCP-сервер в нашей сети.

Есть много вещей, которые я не понимаю во всем этом.

Во-первых , я не изменился dhclient.confдля сервера в любой момент; он использует конфигурацию по умолчанию. На самом деле он содержит следующую дословную строку:

send host-name "<hostname>"

Итак, мой первый вопрос: как, черт возьми, он узнал, чтобы отправить реальное имя хоста сервера, если конфигурация не настроена для его отправки?

Во-вторых , почему первая аренда DHCP (для старой сети) не включала option host-name, а вторая аренда DHCP (для новой сети) включала ее, если я не касался ни одного из файлов конфигурации?

Все, что я делал, это экспортировал исходную машину VirtualBox как OVF, а затем импортировал ее в XenServer, так как же он волшебным образом сконфигурировал мое имя хоста через DHCP, если он даже не настроен с фактическим именем хоста в dhclient.conf?

Третье : когда я запускаю hostname, сервер возвращается fozzie.our.domain, но dhclient.eth0.leasesговорит, что для параметра hostname установлено значение fozzie(без домена). Как он узнал, что нужно убрать домен?

Майк Спросс
источник

Ответы:

11

Хорошо, после долгого перебора интернета и попыток прочитать manстраницы, я в основном выяснил, что происходит:

Черт побери, он знал, отправлять ли реальное имя хоста сервера, если конфигурация не настроена для его отправки?

Очевидно, send host-name "<hostname>"и, более конкретно <hostname>, имеет особое значение для Ubuntu. Он говорит, dhclientчтобы отправить текущее имя хоста вашей машины на сервер DHCP. Обратите внимание, что это чувствительно к регистру (т. <HOSTNAME>Е. Если вы наберете, dhclient отправит литеральный текст <HOSTNAME>на сервер DHCP). Как сообщалось здесь и здесь , это работает на Ubuntu Feisty и выше, являясь частью патча, который (по иронии судьбы) исправляет проблему с dhclientне отправкой имени хоста машины по умолчанию.

[W] Почему первая аренда DHCP (для старой сети) не включала опцию hostname, но вторая аренда DHCP (в новой сети) включала ее, если я не касался ни одного из файлов конфигурации?

Это только потому, что не все DHCP-серверы возвращают имя хоста клиенту. Вчера мы все еще использовали маршрутизатор ClarkConnect на базе Linux в качестве нашего DHCP-сервера, который передавал имя хоста каждому клиенту. Сегодня мы отключили DHCP на этом сервере и переключились на использование встроенного DHCP-сервера на нашем основном контроллере домена. Наши аренды DHCP от PDC также не включают option host-name, но, похоже, это ни на что не влияет. Машины обновляются в DNS, и все они могут находить друг друга по имени хоста.

Когда я запускаю hostname, сервер возвращается fozzie.our.domain, но dhclient.eth0.leasesговорит, что для опции hostname было установлено значение fozzie(без домена). Как он узнал, что нужно убрать домен?

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

У кого-нибудь есть какие-либо исправления или разъяснения, чтобы добавить к этому ответу? Это все еще кажется немного "волнистым", поэтому я не приму его как есть.

Майк Спросс
источник