DHCP сервер на Ubuntu 24.04.1 LTS
Предисловие
Это третья заметка из серии заметок по настройке домашнего шлюза на Ubuntu 24.04.1 LTS. Предыдущий материал:
Установка
sudo apt install isc-dhcp-server
Настройка
Редактируем файл /etc/default/isc-dhcp-server
, в нём необходимо прописать имя интерфейса локальной сети, в которую следует раздавать настройки, в моём случае настройка такая INTERFACESv4="enp3s0"
.
Редактируем файл /etc/dhcp/dhcpd.conf
. Указываем основные настройки:
# option definitions common to all supported networks...
option domain-name "savenkoff.local";
option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
option domain-name
- имя домена;option domain-name-servers
- IP адрес сервера имен;authoritative
- именно с этой опцией dhcp сервер станет приоритетным.
Добавляем настройки диапазона раздачи адресов в локальной сети:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.254;
option domain-name "savenkoff.local";
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
default-lease-time 7200;
max-lease-time 604800;
}
При необходимости выдачи статических IP по MAC адресу создаём по блоку:
host my-computer {
hardware ethernet 00:00:00:00:00:00;
fixed-address 192.168.1.100;
server-name "computer.savenkoff.local";
}
Сохраняем все настройки.
Запускаем, проверяем
sudo systemctl restart isc-dhcp-server.service
Проверяем с помощью команды sudo systemctl status isc-dhcp-server.service
, ожидаем вывод:
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/usr/lib/systemd/system/isc-dhcp-server.service; enabled; preset: enabled)
Active: active (running) since Mon 2024-10-21 21:58:01 +07; 1 day 16h ago
Docs: man:dhcpd(8)
Main PID: 1083 (dhcpd)
Tasks: 1 (limit: 9346)
Memory: 5.8M (peak: 6.3M)
CPU: 173ms
CGroup: /system.slice/isc-dhcp-server.service
└─1083 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf enp3s0
Переподключаемся к сети с локальных устройств, при этом отключив статический IP, если такой был настроен. Подключение должно пройти успешно, если адрес клиента не прописан, как статический - можно посмотреть его в списке выданных командой dhcp-lease-list
:
dhcp-lease-list
To get manufacturer names please download http://standards-oui.ieee.org/oui.txt to /usr/local/etc/oui.txt
Reading leases from /var/lib/dhcp/dhcpd.leases
MAC IP hostname valid until manufacturer
===============================================================================================
00:00:00:00:00:00 192.168.1.205 savenkoff 2024-10-23 10:17:06 -NA-
Информация о производителе
Последуем рекомендациям команды выше и загрузим информацию о производителях для расширенного вывода в команде dhcp-lease-list
:
cd /usr/local/etc && sudo wget http://standards-oui.ieee.org/oui.txt
Логирование в отдельный файл
Чтобы не смотреть бесконечный /var/log/syslog
и пытаться в нём что-то найти, будем выводить логирование в отдельный файл с помощью RSyslog. Для этого создаём файл командой sudo nano /etc/rsyslog.d/40-dhcp.conf
, со следующим содержимым:
local7.* /var/log/dhcpd.log
& stop
и перезагружаем сервис rsyslog sudo service rsyslog restart
. Проверяем, что все работает sudo service rsyslog status
.
Проверяем наличие файла лога, он должен существовать и скорее всего уже быть не пуст.