Настройка DHCP сервера в Linux

Протокол динамического отделения адресов (DHCP) — это сетевой сервис, который позволяет компьютерам в сети автоматически выходить настройки с сервера вместо того, чтобы настраивать каждый сетевой хост вручную. Пк, настроенные быть клиентами DHCP, не управляют тем, какие настройки они получат от DHCP сервера, и эта наладка совершенно незаметна для пользователя компьютера.

Обнаружение DHCP (DHCPDISCOVER)

На первом этапе, заказчик выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он пускает сообщение типа DHCPDISCOVER, при этом в качестве IP-адреса источника указывается 0.0.0.0 (так как пк ещё не имеет собственного IP-адреса), а в качестве адреса назначения — широковещательный адрес 255.255.255.255. Помимо IP источника и назначения, клиент в данном сообщении посылает: уникальный идентификатор запроса, собственный MAC, и, возможно, прошлый присвоенный IP.

Ответ DHCP — сервера (DHCPOFFER)

Получив сообщение от покупателя, сервера определяют требуемую конфигурацию клиента в соответствии со своими указанными в конфигурационном файле опциями. Все сервера, получившие запрос, формируют ответ (DHCPOFFER), содержащий конфигурацию клиента, и пускают его клиенту на MAC-адрес. В ответе содержится следующая информация: IP, назначенный хосту, и прочие характеристики (такие, как адреса маршрутизаторов и DNS-серверов). Клиент получает ответы от всех серверов DHCP, ходовых в сети, из них он должен выбрать тот, который его «устраивает» (а устраивает его скорее всего тот, который пришел первоначальным).

Читайте также:  Обзор Deepin Linux 15.2 – Элегантный и доработанный Linux-дистрибутив из Китая

Запрос DHCP-сервера (DHCPREQUEST)

Выбрав одну из конфигураций, предложенных DHCP-серверами, клиент пускает запрос DHCP (DHCPREQUEST). Он рассылается широковещательно. В сообщении содержится информация из сообщения DHCPDISCOVER + особая опция — идентификатор сервера — указывающая адрес DHCP-сервера. При этом, сервер, который не избран в качестве «устраивающего» тоже видит, что он не выбран.

Подтверждение от DHCP-сервера (DHCPACK)

Наконец, сервер подкрепляет запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить собственный сетевой интерфейс, используя предоставленные опции. При этом, кроме указанных сообщений, вероятны и другие.

Отказ от настроек, предоставленных DHCP-сервером (DHCPDECLINE)

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

Отмена от DHCP-сервера (DHCPNAK)

Если по каким-то причинам сервер не может предоставить покупателю запрошенный IP-адрес, или если аренда адреса удаляется администратором, сервер рассылает вещательное сообщение отмены DHCP (DHCPNAK). При получении такого сообщения соответствующий клиент обязан повторить процедуру получения адреса.

Читайте также:  Как настроить и изменить курсор терминала в Elementary OS для удобства работы

Освобождение адреса DHCP (DHCPRELEASE)

Клиент сможет явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобождения DHCP (DHCPRELEASE) этому серверу, который предоставил ему адрес в аренду.

Информация DHCP (DHCPINFORM)

Сообщение данных DHCP (DHCPINFORM) предназначено для определения дополнительных параметров TCP/IP (например, адреса (Почтовый адрес — условная кодификация места нахождения объекта в пространстве, применяемая для целей почтовой связи) маршрутизатора по умолчанию, DNS-серверов и т. п.) этими клиентами, которым не нужен динамический IP-адрес (то есть адрес которых настроен вручную). Серверы дают ответы на такой запрос сообщением подтверждения (DHCPACK) без выделения IP-адреса.

Клиент DHCP (dhclient) Linux

Для службы Linux в качестве DHCP-клиента необходимо установить пакет dhclient (в RedHat, возможно — dhcpcd). Этот клиент запрашивает у сервера параметры и применяет их к локальному хосту. dhclient использует конфигурационный файл /etc/dhclient.conf (время от времени /etc/dhcp/dhclient.conf или /etc/dhcp3/dhclient.conf). А так же, хранит информацию об арендованных метеопараметрах в файле /var/lib/dhcp/dhclient.leases. В общем случае, клиент (Клиент (от лат. cliens, множ. clientes) — в Древнем Риме свободный гражданин, отдавшийся под покровительство патрона и находящийся от него в зависимости) DHCP устанавливается разом с дистрибутивом ОС и создает файл конфигурации по умолчанию, который вполне работоспособен и не требует вмешательств. Для службы dhclient, необходимо в конфигурационных файлах сетевых интерфейсов вашего дистрибутива (на которых нужно получение сетевых параметров по DHCP), указать параметр BOOTPROTO=dhcp (для RedHat) и iface eth_№_ dhcp (для Deb).

Читайте также:  Изменить строку anystring1 на anystring2 в Linux

Сервер DHCP на Linux

Для службы сервера необходимо установить пакет dhcp-server (в более старых версиях — dhcpd, время от времени пакет имеет имя dhcp3-server). После установки, в системе появиться привидение бес — dhcpd. Данный демон должен быть разрешен для запуска на необходимых уровнях исполнения ОС (команда в RedHat — /sbin/chkconfig dhcpd on, в Debian — /usr/sbin/update-rc.d dhcpd defaults). Так же, нужно, чтобы один из интерфейсов был настроен на статический адрес из той подсети, которую будет делить клиентам, иначе демон не будет работать корректно. После установки демон попробует запуститься, но у него ничего не получиться, потому что конфиг неверен.

Установка и настройка DHCP в Ubuntu

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

Аппарат пакета DHCP-сервера

sudo apt-get install isc-dhcp-server

Редактирование файла /etc/default/isc-dhcp-server

$ INTERFACES="eth0"
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

cat > /etc/dhcp/dhcpd.conf <<-EOF
option domain-name "preciseserver.public";
option domain-name-servers ns1.preciseserver.public, ns2.preciseserver.public;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.20;
option domain-name-servers 208.67.222.222, 208.67.220.220;
option domain-name "serv.preciseserver.public";
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-lease-time 7200;
}
EOF

Перезапустите dhcp-сервер:

$ sudo service isc-dhcp-server restart