Sysadmin
May 21

Настройка DCHP сервера в Debian/Ubuntu Linux

Сервер DHCP в сети занимается выдачей IP адресов устройствам. Одновременно с выдачей адресов.

Установка сервера DHCP

Этот пакет скорее всего один из старейших резидентов всевозможных репозиториев. Устанавливаем из стандартного:

apt install isc-dhcp-server

Настройка сервера DHCP

Первая настройка в файле /etc/default/isc-dhcp-server, в котором нужно указать необходимые для прослушивания интерфейсы системы, физические и виртуальные.

INTERFACESv4="ens18,eth0,vlan1"

Файл записей аренды адресов располагается по умолчанию /var/lib/dhcp/dhcpd.leases
Дальнейшая настройка производится в основном конфигурационном файле /etc/dhcp/dhcpd.conf,
где необходимо указать основное имя домена и DNS

option domain-name "antroot.ru";
option domain-name-servers 10.0.2.1, 10.0.2.2;

Если устанавливается DHCP сервер, значит планируется раздавать IP адреса этим сервером, поэтому указываем, что он уполномочен это делать:

authoritative;

Следует указать все подсети, к которым подключен сервер, чтобы он понимал конфигурацию сети, указывая только в нужной параметры раздачи IP адресов

subnet 10.0.1.0 netmask 255.255.255.0 { }
subnet 10.0.2.0 netmask 255.255.255.0 { }
subnet 10.0.3.0 netmask 255.255.255.0 {
    range 10.0.3.50 10.0.3.99;
    option subnet-mask 255.255.255.0;
    option routers 10.0.3.2;
    option domain-name-servers 10.0.2.1;
}

Для фиксации IP адреса определенному устройству в сети можно указать его MAC адрес

host some-client {
  hardware ethernet fe:ce:12:34:56:78;
  fixed-address 10.0.3.11;
  option host-name "antroot-1";
  ddns-hostname "antroot-1";
}

Несколько хостов можно объединить в группу group, чтобы задать общие для группы параметры:

group {
  # общие для группы параметры
  option domain-name "antroot.lan";
  option domain-name-servers 10.0.3.2;
  option routers 10.0.3.2;
  host srv1 {
    # параметры хоста srv1
    hardware ethernet fe:ce:12:34:56:78;
    fixed-address 10.0.3.11;
  }
  host srv2 {
    # параметры хоста srv2
    hardware ethernet fe:ce:12:34:56:79;
    fixed-address 10.0.3.12;
  }
}

Для определенной подсети subnet пула pool группы group можно указать время аренды IP адреса в секундах - это бывает нужно для тестовых машин, когда их создается очень много на короткое время, чтобы пул адресов быстрее освобождался:

max-lease-time 300;
default-lease-time 300;

Подсеть subnet может быть разделена на пулы pool, каждому из которых можно определить свои дополнительные параметры:

subnet 10.0.3.0 netmask 255.255.255.0 {
  option routers 10.0.3.2;
  pool {
    range 10.0.3.150 10.0.3.199;
    option domain-name-servers 10.0.3.2;
    max-lease-time 300;
    default-lease-time 300;
    allow unknown-clients;
  }
  pool {
    range 10.0.3.50 10.0.3.99;
    option domain-name-servers 10.0.2.1, 10.0.3.2;
    deny unknown-clients;
  }
}

Журналирование сервера DHCP

Включаем маркирование логов в файле dhcpd.conf

log-facility local7;

Затем необходимо добавить в конфигурацию syslog перенаправление в отдельный файл, для чего в директории /etc/rsyslog.d/ добавить файл isc-dhcp-server.conf с таким содержимым:

local7.* /var/log/dhcpd.log
& ~

и в основном файле конфигурации отключить запись в /var/log/syslog этих сообщений

*.*;auth,authpriv.none -/var/log/syslog
# заменить на
*.*;auth,authpriv.none;local7.none -/var/log/syslog

и перезапустить syslog

systemctl restart rsyslog

Запуск сервера DHCP

Запускаем isc-dhcp-server

systemctl start isc-dhcp-server
systemctl enable isc-dhcp-server
systemctl status isc-dhcp-server