Как работает DHCP

Рассмотрим как работает DHCP начиная от того, как компы узнают друг о друге в сети заканчивая примером конфигурации ISC DHCPD.

Немного истории

Раньше, когда вместо компов использовали терминалы, которые еще называли бездисковыми рабочими станциями стояла задача автоматической раздачи IP-адресов этим устройствам. Тогда был разработан BOOT Protocol, который назначал IP-адреса терминалам при загрузке. В 90-х годах идея получила развитие и появился Dynamic Host Configuration Protocol.

Новичок

Когда комп только подключают к сети он начинает рассылать широковещательные пакеты т.е. не зная IP-адрес получателя отправлять прицельно пакеты нельзя, потому комп начинает бомбить сеть так называемыми ARP-пакетами (Address Resolution Protocol). В них заключается MAC и IP адреса, которые записываются в ARP таблицу, которую можно посмотреть командой arp -a. Если IP-адрес установлен автоматический, то DHCP клиент операционной системы начинает посылать широковещательный пакет DHCPDiscover с целью обнаружения DHCP сервера. Комп получив ответ от сервера посылает пакет DHCPRequest. Сервер получив пакет посылает широковещательный пакет DHCPOffer, в котором содержится информация о IP-адресе компа запросившего IP-адрес. Получив эту информацию комп отправляет пакет DHCPAcknowledge, после чего начинает настройку сетевого интерфейса согласно информации предоставленной DHCP сервером. Так устройства узнают о существовании друг друга в сети и уже могут посылать пакеты прицельно.

Опции DHCP

Опциями называются дополнительные параметры, которые надо передавать клиенту. Обычно таким образом передается информация о маршрутизаторе, DNS серверах и домене, но есть и другие. Например option 82 отвечает за перенаправление DHCP запросов и в коммутации обычно известен как DHCP Relay. Я в свою очередь использую option tftp-server-name для загрузки различных диагностических программ через PXE. Опций очень много потому детальнее можете ознакомиться здесь.

Пример конфигурации ISC DHCPD

authoritative;
ddns-update-style none;
default-lease-time 720000;
max-lease-time 720000;
log-facility local7;
option option-128 code 128 = string;
option option-128 code 129 = text;

###LEASE-TIME###
#2592000 - 30days
#720000 - 8days 8hours
#72000 - 20hours
#
#lease time calc http://pcexpress.theolddub.com/calculators/leasetime.htm
################

# SUBNET 192.168.0.x #
subnet 192.168.0.0 netmask 255.255.252.0 {
        interface "eth0";
        option routers 192.168.0.1;
        option domain-name-servers 192.168.0.9;
        option domain-name "myblog.ru";
        option domain-search "myblog.ru", "ad.myblog.ru";
        range 192.168.0.100 192.168.3.240;
        allow booting;
        allow bootp;
        next-server 192.168.0.6;
        option tftp-server-name "192.168.0.6";
        option bootfile-name "lpxelinux.0";
        group {
                host gw_vlan100 {
                        hardware ethernet 91:95:A4:82:18:23;
                        fixed-address 192.168.0.1;
                }
	}
}

Думаю особо пояснять конфиг не нужно. В глобальной секции прописаны основные настройки, которые будут применяться ко всем сетям. В секции subnet настройки, которые будут применяться только к виртуальной сети vlan100. Interface «eth0» без тега потому, что оно крутится на виртуальной машине типа HVM, а сам тег висит на бридже (не обращайте внимание). В секции group прописываются статические IP-адреса. Если используете firewall, то надо убедится, что открыты порты 67:68/UDP.

Ранее была статья «как работает DNS сервер«. Возможно заинтересует.