Page tree
Skip to end of metadata
Go to start of metadata

При работе isc-dhcp-server совместно с приложением apparmor часто возкникает ошибка при ротации leases файлов из-за отсутствия прав доступа к файлам. Это известная проблема, подробнее про неё можно прочитать: https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1186662 . Проблема с ротацией файлов dhcp.leases может привести к нестабильной работе DHCP сервера.

Диагностика проблем ротации файлов dhcp.leases на сервере

Анализ логов dhcp сервера

При перезапуске isc-dhcp-server в логах можно заметить записи вида:

Feb 27 05:43:17 gateway dhcpd: Can't create new lease file: Permission denied

При превышении размера leases файлов нескольких гигабайт, возможны подобные ошибки при запуске dhcp сервер

/var/lib/dhcp/dhcpd.leases: file is too long to buffer.

Проверка даты создания lease файлов

Выполните команду:

$ ls -l /var/lib/dhcp/
-rw-r--r-- 1 root    root    41634468 нояб. 27 08:53 dhcpd.leases
-rw-r--r-- 1 root    root    40987441 нояб. 27 08:11 dhcpd.leases~

Дата создания файла dhcpd.leases~ - должна не больше чем на 1 час отличаться от файла dhcpd.leases. Повторите выполнение команды ls -l /var/lib/dhcp/ и убедитесь, что размер файла dhcpd.leases увеличивается. Если данные условия выполняются, то ротация файлов dhcpd.leases на сервере работает.

Если разница во времени больше часа, а файл dhcpd.leases существенно больше dhcpd.leases~ - значить ротация не работает.

Пример неработоспособности ротации:

$ ls -l /var/lib/dhcp/
total 114776
-rw-r--r-- 1 root root   9644913 Nov 27 06:02 dhcpd.leases~
-rw-r--r-- 1 root root 107878109 Nov 27 09:56 dhcpd.leases

Настройка ротации файлов dhcp.leases на сервере

Для настройки ротации dhcpd.leases необходимо в конфигурационном файле DHCP сервера (/etc/init/isc-dhcp-server.conf) заменить пользователя dhcpd на root (приведены только те строки из файла, где необходимо выплнить замену):

if ! dhcpd -user root -group root -t -q -4 -cf $CONFIG_FILE > /dev/null 2>&1; then
dhcpd -user root -group root -t -4 -cf $CONFIG_FILE
chown root:root /var/run/dhcp-server
chown root:root /var/lib/dhcp /var/lib/dhcp/dhcpd.leases
chown root:root /var/lib/dhcp/dhcpd.leases~
exec dhcpd -user root -group root -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf $CONFIG_FILE $INTERFACES

Меняем владельца /run/dhcp-server/dhcpd.pid c dhcp на root

chown root:root /run/dhcp-server/dhcpd.pid

После изменения конфигурации необходимо перезапустить DHCP сервер командой:

sudo service isc-dhcp-server restart

После проверяем работоспособность DHCP сервера:

$ tail -f /var/log/dhcp.log  
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: All rights reserved. 
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: For info, please visit  https://www.isc.org/software/dhcp/   
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: Internet Systems Consortium DHCP Server 4.2.4 
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: Copyright 2004-2012 Internet Systems Consortium. 
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: All rights reserved. 
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: For info, please visit  https://www.isc.org/software/dhcp/   
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: Wrote 0 class decls to leases file. 
 Nov 27 13:01:49 vagrant-ubuntu-trusty-64 dhcpd: Wrote 3210 leases to leases file. 
 Nov 27 13:01:50 vagrant-ubuntu-trusty-64 dhcpd: DHCPREQUEST for 172.30.3.252 from e0:d9:e3:50:71:e1 (WEP-2ac) via eth2 
 Nov 27 13:01:50 vagrant-ubuntu-trusty-64 dhcpd: DHCPACK on 172.30.3.252 to e0:d9:e3:50:71:e1 (WEP-2ac) via eth2 
 Nov 27 13:02:04 vagrant-ubuntu-trusty-64 dhcpd: DHCPREQUEST for 172.30.3.235 from a8:f9:4b:aa:36:59 via eth2 
 Nov 27 13:02:04 vagrant-ubuntu-trusty-64 dhcpd: DHCPACK on 172.30.3.235 to a8:f9:4b:aa:36:59 via eth




  • No labels