Если система устанавливается на компьютер, включённый в корпоративную сеть, многие параметры сетевых настроек известны заранее. Более того, нежелательно, чтобы эти известные заранее настройки хозяин компьютера мог самостоятельно изменять. Наконец, необходим механизм автоматической передачи компьютерам-абонентам сети таких заранее определяемых системным администратором настроек, как сетевой адрес и маска, адрес маршрутизатора (шлюза), адрес сервера доменных имён (DNS) и некоторых других.
Следует понимать, что всей мощью сетевых протоколов TCP/IP
компьютер, не имеющий пока своего IP-адреса, воспользоваться не
может. Поэтому сервис удалённой настройки должен опираться на
информацию более низкого уровня
(интерфейсного уровня TCP/IP). В частности,
при использовании сети Ethernet, в качестве идентификатора
компьютера может выступать уникальный идентификатор его сетевого
интерфейса (т. н. MAC-адрес сетевой карты). MAC-адрес
шестибайтное число, традиционно представляемое в виде шести
шестнадцатеричных чисел, разделённых символом
:
; он содержится, например, в выдаче команды
ifconfig. Любые пакеты (фреймы), передаваемые в
Ethernet, содержат MAC-адрес в полях идентификатор
отправителя
и идентификатор
получателя
. Сетевая карта, получив пакет, сравнивает
MAC-адрес получателя со своим, и только в случае совпадения
передаёт в систему. Исключение — т. н.
широковещательный идентификатор получателя,
ff:ff:ff:ff:ff:ff
,
пакеты с которым передаются системе в любом случае.
Компьютер-абонент локальной сети при включении посылает специальный широковещательный Ethernet-пакет, который трактуется как запрос “настрой меня”. В сети должен находиться хотя бы один (и лучше, чтобы один) сервер, способный обрабатывать такой запрос, который, на основании MAC-адреса отправителя и некоторой собственной информации, формирует ответ, содержащий настроечные данные для абонента. Система абонента должна такой ответ обработать, выбрать оттуда интересующую её информацию и настроить сетевые параметры. Таким образом, автоматическая настройка требует наличия в сети сервера, который раздаёт параметры и следит за их употреблением, и клиента на абонентской машине, который эти параметры применяет.
Самый простой способ автоматической настройки
воспользоваться стандартной для семейства протоколов TCP/IP
службой преобразования адресов — RARP
(Reverse Address Resolution Protocol). Служба эта преобразует
низкоуровневые адреса (в случае Ethernet — MAC-адреса,
интерфейсный уровень) в высокоуровневые
(IP-адрес, сетевой уровень). (Протокол ARP,
преобразующий высокоуровневые адреса в низкоуровневые,
используется в TCP/IP сетях постоянно для определения MAC-адресов
абонентов локальной сети). В Linux
формированием RARP-запроса
занимается ядро. Сервер rarpd, отвечая
на RARP-запросы, пользуется простейшей таблицей соответствия
IP-адресов MAC-адресам в сети. Никакой другой информации по RARP
передать нельзя, поэтому сегодня он используется главным образом
для сетевой загрузки компьютеров (в этом
случае простой RARP-запрос формирует не система, а сама сетевая
карта, она же запоминает ответ, а система считывает этот ответ при
загрузке).
Более гибкий протокол удалённой настройки — DHCP
(Dynamic Host Configuration Protocol). Он позволяет передавать не
только IP-адрес, но и адреса маршрутизаторов, список DNS-серверов,
позволяет управлять удалённой загрузкой, и передавать вообще любые
данные, лишь бы они распознавались с клиентской стороны. Что не
менее важно, сервер dhcpd (из пакета
dhcp-server
║), может
настраивать компьютеры, MAC-адрес которых заранее неизвестен,
выделяя им IP-адреса из заданного диапазона (не навсегда, а на
время) и следя за тем, чтобы разным компьютерам выдавались разные
адреса. Более того, однажды выданный IP-адрес закрепляется за
определённым компьютером и выдаётся ему при повторных запросах
— до тех пор, пока адресов в диапазоне хватает для вновь
подключаемых абонентов DHCP. Если запас адресов всё же исчерпан,
очередному новому компьютеру будет выдан адрес, который дольше
всего не использовался.
Сетевая настройка клиента при этом сводится к запуску
клиентского демона dhcpcd, который
регулярно засылает в сеть DHCP-запросы и интерпретирует ответы.
dhcpcd умеет обновлять
/etc/resolv.conf
и некоторые другие
настроечные файлы, модифицируя поведение соответствующих служб
системы. Чтобы активизировать настройку по DHCP при начальной
загрузке системы, достаточно в файле, допустим,
/etc/sysconfig/network-scripts/ifcfg-eth0
,
указать строку BOOTPROTO=dhcp
и убрать строки
настройки IP-адреса и/или маршрутизатора.
Настройка сервера dhcpd, в общем случае, довольно проста. Прежде
всего следует убедиться в том, что ваш DHCP-сервер —
единственный в локальной сети, в противном случае следует
настраивать взаимодействие между серверами. Затем создать файл
настройки /etc/dhcp/dhcpd.conf
, в котором при помощи ключевого
слова subnet
должны быть описаны все сетевые подключения,
имеющиеся на вашем компьютере. В обязательном порядке надо сообщить,
какой стиль динамического обновления DNS будет использоваться (проще
всего его выключить). Наконец, хотя бы в одной из подсетей
необходимо выделить диапазон адресов для раздачи. После этого можно
запускать DHCP-демон.
Предположим, адрес вашего компьютера в Интернет (подключён
посредством интерфейса eth0) — 207.68.172.234
, а интерфейс
eth1
подключён к внутренней локальной
сети, адрес вашего компьютера в которой — 10.10.10.2
. Тогда файл настройки
примет вид
ddns-update-style none; subnet 207.68.172.0 255.255.255.0; subnet 10.10.10.0 netmask 255.255.255.0 { range 10.10.10.10 10.10.10.254; }
В нашем примере машинам из внутренней сети будут выдаваться адреса от
10.10.10.10
до
10.10.10.254
(точнее,
от 10.10.10.254
до
10.10.10.10
,
так как dhcpd начинает с наибольшего адреса).
Если необходимо, чтобы ваш компьютер выполнял функции маршрутизатора и
сервера имён для внутренней сети (домен internal.com
), то после
настройки соответствующих служб, в этот файл следует добавить
— по аналогии с range
— строки
option routers 10.10.10.2; option domain-name-servers 10.10.10.2; option domain-name "internal.com";
Чтобы постоянно выдавать определённый IP-адрес определённому
компьютеру, необходимо, как и в случае RARP, привязать IP-адрес к
идентификатору сетевого интерфейса этого компьютера. В случае сети
Ethernet в этой роли выступает MAC-адрес. Соответствующая запись в
/etc/dhcp/dhcpd.conf
может выглядеть, например, так:
host fixed { hardware ethernet 0:c0:c3:49:2b:57; fixed-address 10.10.10.11; }
Следует помнить, что сервис ║dhcpd║ использует технологию
chroot: его рабочий каталог —
/var/lib/dhcp/dhcpd
. В этом каталоге, помимо
прочего, в файле
/var/lib/dhcp/dhcpd/state/dhcpd.leases
хранится информация о когда-либо выданных адресах и сроках их
действия.
Более подробную информацию о работе с DHCP можно найти в руководствах, входящих в соответствующие пакеты.