Автоматическое Составление Имени Компьютера И Выдача Его По Dhcp

Недавно возникла задача установить дистрибутив Linux на парк из 15 машин.

Наиболее автоматизированным методом такой установки является сетевая установка.

Таким образом, этой задаче посвящено множество руководств; для этого есть инструменты, как специфичные для каждого дистрибутива (debian-installer, кикстарт), так и универсальные (CloneZilla, System Installer).

В этой статье я хочу написать о том, как при решении этой задачи обеспечить, чтобы каждой машине было присвоено имя компьютера в формате pcNN, где NN — числа в порядке от 01 до 99, в моем решении это будут два последних знака после запятой.

с IP-адресов.

Погуглив по этой теме, я не нашел готового ответа, поэтому покопавшись в мануале к DHCP-серверу, нашел решение и решил поделиться им с хабрасообществом.

На DHCP-сервере я использую ISC DHCP Server (dhcpd).

Для решения проблемы я воспользовался встроенной возможностью использования т.н.

выражения для установки каких-либо параметров.

Обычно имя компьютера можно указать в таком формате:

option host-name "example";

И привязать его, например, к конкретной машине по MAC-адресу.

Но мне было лень вручную прописывать имена хостов для каждой машины: а вдруг мне нужно установить не 15 машин, а 100? Поэтому мы выдадим имя компьютеру на основе IP, назначенного ему через DHCP. Строка конфигурации для этого выглядит следующим образом:

option host-name=concat("pc", suffix(binary-to-ascii(10,8, "", leased-address),2));

Используя знак «=", мы указываем, что опция будет указана с помощью выражения.

арендованный-адрес возвращает выданный IP-адрес в двоичном формате, с помощью функцииbinary-to-ascii преобразуем его в формат BCD без разделителей (например, 19216801), разделитель можно указать с помощью третьего операнда.

Наконец, мы берем только два последних символа адреса (01) и объединяем их со строкой «pc», в результате чего получается адрес pc01. Уникальность IP гарантирует уникальность имени компьютера.

А это полный файл конфигурации:

ddns-update-style none; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.101 192.168.0.199; option domain-name-servers 192.168.0.1; option host-name=concat("pc", suffix(binary-to-ascii(10,8, "", leased-address),2)); filename="pxelinux.0"; }

Как видите, я ограничил диапазон адресами 192.168.0.101-192.168.0.199, т.е.

от pc01 до pc99. Конечно, при таком алгоритме возникает проблема из-за того, что одному и тому же компьютеру может быть назначен разный IP, следовательно, имя компьютера каждый раз будет разным.

Но при использовании этой схемы для установки по сети включение и установка системы, как правило, происходит сразу, а имя, выдаваемое по DHCP, прописывается в конфигурацию каждой машины (по крайней мере, при установке с помощью debian-installer) , так что проблема не столь существенна.

Если вам нужно имя, строго привязанное к конкретной машине, вы можете составить его на основе MAC-адреса (например, его последнего байта), либо выдать сами IP-адреса на основе MAC-адреса.

Теги: #Системное администрирование #dhcp #dhcpd #имя хоста

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.