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

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

Я пытаюсь решить некоторые неприятные проблемы с 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 строка, которая включает правильное текущее имя хоста для сервера ("fozzie"). Если я правильно понимаю, это означает, что сервер отправил свое имя хоста на 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 говорит, что опция имени хоста была установлена ​​на fozzie (без домена). Как он узнал об отключении домена?

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

[Как] черт возьми, он знал, что нужно отправлять реальное имя хоста сервера, если конфигурация изначально не настроена на его отправку?

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

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

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

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

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

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