LINUX.ORG.RU
ФорумAdmin

isc-dhcpd очистка файла с leases ubuntu 14.04

 ,


0

2

Уважаемые коллеги, столкнулись с тем что у нас переполнился файл /var/lib/dhcp/dhcpd.leases - а именно, он, сволочь, достиг размера 2гб. Я так понимаю, что в ubuntu 14.04, это добро скомпилировано так, чтобы не очищать данный файл от не свежих записей об аренде... - Есть рецепт что делать, кроме как пере собирать из исходников?

Как только leases разрастается, dhcp сервер падает и не стартует... Пришлось грохать вместе со всеми актуальными арендами..!

★★★★★

хм. Сколько лет использую isc-dhcpd, но с таким не сталкивался.

Интересный результат дает поиск в гугле «isc dhcpd large leases file» именно про убунту.

Если не пересобирать, а просто регулярно перезапускать (раз в сутки)? У меня он точно при старте чистит просроченные leases.

Возможно в сети есть кривой клиент, который засирает leases. Я бы простеньким скриптом подсчитал число leases в каждой подсети в файле dhcpd.leases - может быть найдется аномалия.

Если не секрет, а сколько адресов раздается и на сколько клиентов ? И какая версия dhcpd ?

vel ★★★★★ ()
Ответ на: комментарий от vel

Если не секрет, а сколько адресов раздается и на сколько клиентов ? И какая версия dhcpd ?

Да в том и дело, что клиентов совсем не много, не больше трех сотен...

Возможно в сети есть кривой клиент, который засирает leases. Я бы простеньким скриптом подсчитал число leases в каждой подсети в файле dhcpd.leases - может быть найдется аномалия.

Спасибо! Посмотрю на сей предмет!

Интересный результат дает поиск в гугле «isc dhcpd large leases file» именно про убунту.

Вот по-этому и пришёл на форум... Думаю может кто-то сталкивался.

хм. Сколько лет использую isc-dhcpd, но с таким не сталкивался.

Мы сделали привязку ip, к порту свитча. Чтобы менять принтера без заморочек. - Пришёл, один выклчил, другой поставил - дальше работаешь. Идея юзать стандартный драйвер PCL6. Сделали аренду сроком на одну минуту... - По идее, мы это делали только для подсети принтеров. - Я погляжу. Может накосячили где-то и сделали сразу на всех клиентов... - Была идея или привязать ip к порту и делать короткую аренду, или плевать на аренду, привязать ip к порту и ловить трапы snmp, после поимки трапов выполнять скрипт на сервере. - Выбрал первый вариант, т.к. посчитал что возня с snmp слишком сложна для этих целей. - Может ещё есть способ решения моего вопроса?

Если не пересобирать, а просто регулярно перезапускать (раз в сутки)? У меня он точно при старте чистит просроченные leases.

Тоже про это вычитал. Попробую.

Версия: 4.2.4-7ubuntu12

Спасибо за ответ по делу!

DALDON ★★★★★ ()
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

Мы сделали привязку ip, к порту свитча. Чтобы менять принтера без заморочек. - Пришёл, один выклчил, другой поставил - дальше работаешь. Идея юзать стандартный драйвер PCL6. Сделали аренду сроком на одну минуту... - По идее, мы это делали только для подсети принтеров.

IMHO Если в этой сети принтеров нет клиентов (т.е. весь трафик идет через роутер), то проще сделать фиксированые «виртуальные» адреса для принтеров и делать DNAT на реальный адрес при выдаче адреса принтеру (скриптом в «on commit»)

vel ★★★★★ ()
Ответ на: комментарий от vel
# du -sh /var/lib/dhcp/dhcpd.leases
883M /var/lib/dhcp/dhcpd.leases
# service isc-dhcp-server stop
isc-dhcp-server stop/waiting
# service isc-dhcp-server start
isc-dhcp-server start/running, process 24430
# du -sh /var/lib/dhcp/dhcpd.leases
883M /var/lib/dhcp/dhcpd.leases

Не чистит, сука, при рестарте. И за пару недель уже 800 мегабайт.

Надо смотреть количество аренд...

DALDON ★★★★★ ()
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от vel

Сейчас сделано так:

class "BuhDepart_1" {
        match if ((binary-to-ascii(16,8,":",suffix(option agent.remote-id,6))="d8:94:3:31:c4:c6") and (binary-to-ascii(10,8,"",substring(opti
on agent.circuit-id,5,1))="12"));
        ddns-hostname = "BuhDepart1";
}
pool {
        allow members of                        "BuhDepart_1";
        default-lease-time                      600;
        max-lease-time                          600;
        option domain-name-servers              192.168.1.1;
        range                                   192.168.2.42;
}

В чем тут плохо может быть?

Из Вашего примера не очень понимаю как это будет работать именно с принтерами.

class “FooBar” { match if (option host-name = “foobar”); }

pool {
allow members of “FooBar”;
range 192.168.0.90;
}
Если не сложно можете чуть раскрыть?

IMHO Если в этой сети принтеров нет клиентов (т.е. весь трафик идет через роутер), то проще сделать фиксированые «виртуальные» адреса для принтеров и делать DNAT на реальный адрес при выдаче адреса принтеру (скриптом в «on commit»)

Примерно такая же идея у меня была в голове, но решил что соответствие вести - бредовая идея довольно. И опять же, не очень понятно как привязывать принтер к порту

Спасибо!

DALDON ★★★★★ ()
Ответ на: комментарий от DALDON

Я про пул из 1 адреса, а оказалось у тебя уже так и сделано.

Про скрипт и DNAT В subnet с принтерами добавляем

 on commit {
   set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
   set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
   set swport = binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1));
   execute("/etc/dhcpd-event.sh", "commit", ClientIP, ClientMac, swport);
 }
А в скрипте делаешь все что нужно.

У тебя для каждого порта должен быть заранее определен IP для которого нужно делать DNAT на реальный адрес принтера.

Но 830Mb за 2 недели - это явно какая-то проблема либо в dhcpd, либо в сети.

$ ps -eo pid,lstart,cmd | grep dhcpd
 1683 Thu Jul 19 21:55:15 2018 /usr/sbin/dhcpd -lf /tmpfs/dhcpd.leases vlan0201 vlan0203 vlan0204 vlan0205 vlan0206 vlan0207 vlan0208 vlan0209 vlan0210 vlan0211 vlan0212 vlan0213 vlan0214 vlan0215
$ ls -l dhcpd.leases
-rw-r--r-- 1 root root 1509082 янв 21 10:43 dhcpd.leases
$ grep -c ^lease dhcpd.leases 
1729

Правда dhcpd старый isc-dhcp-4.3.2

vel ★★★★★ ()
Ответ на: комментарий от vel

Ёбушки-воробушки... Смотри какая штука...

После start/stop, спустя минут 20ть:

#du -sh /var/lib/dhcp/dhcpd.leases
5,5M/var/lib/dhcp/dhcpd.leases

Похоже что cron, наше всё... Надо просто подождать и оно повыкинет лишние free записи.

DALDON ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.