После загрузки подключенный к сети клиент (на котором настроено использование DHCP) отправляет DHCP-серверу пакет DHCPDISCOVER.
Получив пакет запроса DHCPDISCOVER, DHCP-сервер отвечает пакетом DHCPOFFER.
Клиент принимает пакет DHCPOFFER и отправляет серверу пакет DHCPREQUEST, подтверждая готовность принять сетевую конфигурацию, предоставленную в пакете.
Получив от клиента пакет DHCPREQUEST, сервер отправляет пакет DHCPACK, который разрешает клиенту использование выделенного IP-адреса.
Для установки пакета DCHP-сервера, нужно выполнить следующую команду:
$ sudo apt-get install isc-dhcp-server
После завершения установки отредактируйте файл /etc/default/isc-dhcp-server для определения интерфейсов, которые будет использовать DHCPD для обработки DHCP-запросов, при помощи опции INTERFACES.
Например, если вам нужно, чтобы демон DHCPD прослушивал eth0, задайте следующее значение:
INTERFACES="eth0"
Если нужна работа DHCPD на интерфейсе wlan0 и eth0.3
INTERFACES="wlan0 eth0.3"
Для сетевого интерфейса на котором будет работать DHCP сервер, должен быть настроить статический IP-адрес.
Основной файл конфигурации DHCP — /etc/dhcp/dhcpd.conf, в него нужно внести всю информацию, отправляемую клиентам. В файле конфигурации DHCP есть два типа данных:
параметры – указывают, как выполнять задание (например, на какое время выделять адрес), выполнять ли его вообще (например, выделять ли адреса неизвестным клиентам) или какие параметры сетевой конфигурации отправлять DHCP-клиенту.
декларации – определяют топологию сети, описывают клиентов и предоставляемые им адреса, или применяют группу параметров к группе деклараций.
Все строки параметров в файле конфигурации dhcp заканчиваются точкой с запятой (;). Некоторые параметры могут иметь не одно значение, например, domain-name-servers, у которого два IP-адреса, разделенные запятой. Строки, начинающиеся с ‘#’, являются комментариями и не обрабатываются сервером dhcp.
В начале файла указываются глобальные параметры, которые будут действовать для всех указанных ниже деклараций. Это имя домена domain-name, имена DNS-серверов domain-name-servers, время аренды по умолчанию в секундах default-lease-time (если клиент не запросил его сам), максимальное время аренды в секундах max-lease-time и параметр authoritative, означающий «авторитетность» сервера в сегменте сети. Данный параметр нужен на тот случай, если клиент запросит неправильный IP-адрес — в этом случае сервер ответит ему отказом и предложит получить новый адрес.
ddns-update-style none; option domain-name "babana"; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.100 192.168.100.200; option routers 192.168.100.1; option broadcast-address 192.168.100.255; } subnet 192.168.101.0 netmask 255.255.255.0 { range 192.168.101.100 192.168.101.200; option routers 192.168.101.1; option broadcast-address 192.168.101.255; }
Перед некоторыми параметрами указано слово option, а перед некоторыми — нет. Это слово задает параметры, которые передаются клиенту в сетевой конфигурации.
Для выделения конкретным клиентам фиксированного (статического) IP-адреса нужно добавить в файл конфигурации секции следующего вида, где явно указаны MAC-адрес и статически выделяемый IP-адрес:
host centos-node { hardware ethernet 00:f0:m4:6y:89:0g; fixed-address 192.168.10.105; } host fedora-node { hardware ethernet 00:4g:8h:13:8h:3a; fixed-address 192.168.10.106; }
Запуск службы DHCP
$ sudo /etc/init.d/isc-dhcp-server start
———— SystemD ————
$ sudo systemctl start isc-dhcp-server.service
———— SysVinit ————
$ sudo service isc-dhcp-server start
Установка автоматического запуска DHCP при загрузке:
$sudo update-rc.d isc-dhcp-server defaults
———— SystemD ————
$ sudo systemctl enable isc-dhcp-server.service
———— SysVinit ————
$ sudo service isc-dhcp-server enable
Отключение автоматического запуска DHCP при загрузке:
$sudo update-rc.d isc-dhcp-server disable
———— SystemD ————
$ sudo systemctl disable isc-dhcp-server.service
———— SysVinit ————
$ sudo service isc-dhcp-server disable
Команда для перезапуска DHCP
$ sudo /etc/init.d/isc-dhcp-server restart
———— SystemD ————
$ sudo systemctl restart isc-dhcp-server.service
———— SysVinit ————
$ sudo service isc-dhcp-server restart
Создание правила для службы DHCP в брандмауэре (Демон DHCPD прослушивает UDP-порт 67):
$ sudo ufw allow 67/udp $ sudo ufw reload $ sudo ufw show
Отредактируйте файл конфигурации интерфейса Ethernet на клиентской машине (обратите внимание на имя/номер интерфейса):
$ sudo vi /etc/network/interfaces
Укажите следующие опции:
auto eth0 iface eth0 inet dhcp
Сохраните и закройте файл, а затем перезапустите сетевые службы или перезагрузите систему:
———— SystemD ————
$ sudo systemctl restart networking
———— SysVinit ————
$ sudo service networking restart
Если все настроено правильно, клиентская машина должна автоматически получать IP-адреса от DHCP-сервера.
Если понадобилось посмотреть, какие адреса были выданы, то:
cat /var/lib/dhcp/dhcpd.leases
Настройка DHCP-сервера завершена. Более подробную информацию о dhcpd и dhcpd.conf с описанием всех возможных опций можно получить в соответствующих man-страницах:
$ man dhcpd $ man dhcpd.conf
Ссылки:
https://itproffi.ru/nastrojka-dhcp-servera-v-linux
https://wiki.debian.org/ru/DHCP_Server
https://wiki.debian.org/ru/NetworkConfiguration