Я пытаюсь решить некоторые неприятные проблемы с DNS, связанные с DHCP в нашей сети (я подозреваю, что на данный момент у нас работает более одного DHCP-сервера), и, пытаясь понять это, я заметил что-то странное с новым сервером, который я просто настроить.
Рассматриваемый сервер - это виртуальная машина Xen, работающая под управлением Ubuntu 9.10 Server. Физический сервер Xen также находится в нашей сети, и когда я впервые загрузил виртуальную машину в Xen (я импортировал ее с локальной виртуальной машины Virtualbox, работающей на моем компьютере, где она работала в другой сети), он получил Аренда DHCP из нашей офисной сети и все было хорошо.
Я проверил dhclient.eth0.leases
файл, чтобы увидеть, что было настроено, и увидел, что старая аренда DHCP из предыдущей сети, в которой был компьютер, все еще была там, а также новая аренда DHCP для офисной сети, к которой он в настоящее время подключен. Я сразу заметил две вещи:
В старой информации об аренде DHCP из предыдущей сети нет options host-name
строка, которая, как я понимаю, означает, что исходная версия виртуальной машины VirtualBox не отправляла этот параметр на DHCP-сервер. Или это означает, что старый DHCP-сервер не поддерживал параметр имени хоста DHCP? В то время он использовал внутренний DHCP-сервер VirualBox ...
Новая информация об аренде 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-сервер был достаточно умен, чтобы удалить часть имени домена из имени хоста, отправленного клиентом.
У кого-нибудь есть исправления или уточнения, которые можно добавить к этому ответу? Он все еще кажется немного "волнистым", поэтому я не буду принимать его как есть.