Сведения о документе

Автоматическая настройка сети (RARP и DHCP)


Если система устанавливается на компьютер, включённый в корпоративную сеть, многие параметры сетевых настроек известны заранее. Более того, нежелательно, чтобы эти известные заранее настройки хозяин компьютера мог самостоятельно изменять. Наконец, необходим механизм автоматической передачи компьютерам-абонентам сети таких заранее определяемых системным администратором настроек, как сетевой адрес и маска, адрес маршрутизатора (шлюза), адрес сервера доменных имён (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 можно найти в руководствах, входящих в соответствующие пакеты.

Сведения о документе