Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Установка пакетов

Блок кода
languagebash
themeRDark
sudo -s
apt-get update
apt-get install isc-dhcp-server

...

Для остановки сервиса используется команда:

Блок кода
languagebash
themeRDark
service isc-dhcp-server stop

...

Для запуска сервиса после остановки используется команда:

Блок кода
languagebash
themeRDark
service isc-dhcp-server start

...

Для проверки — запущен ли сервис в данный момент или нет, используется команда:

Блок кода
languagebash
themeRDark
service isc-dhcp-server status

...

В ответ последует сообщение:

Блок кода
languagebash
themeRDark
* isc-dhcp-server is running

в случае если сервис запущен, или

Блок кода
languagebash
themeRDark
service isc-dhcp-server status

...

По умолчанию логи сервиса записываются в файл 

Блок кода
languagebash
themeRDark
/var/log/syslog

...

Рассмотрим на примере реальной адресации:

Адрес или подсетьНазначение

100.111.70.0/24

Подсеть управления ТД
100.111.70.1Шлюз по умолчанию для ТД
100.123.0.54Адрес сервера управления ТД (адрес EMS)
100.111.71.0/24Подсеть для клиентских устройств
100.111.71.1Шлюз по умолчанию для клиентских устройств
172.16.0.1, 8.8.8.8адреса DNS серверов

Сам DHCP сервер должен иметь маршруты ко всем этим подсетям, иначе устройства не будут получать от него ответов.

...

Все строки параметров в файле конфигурации dhcp заканчиваются точкой с запятой (;). Некоторые параметры могут иметь несколько значений, например, domain-name-servers,  у которого два IP-адреса, разделенные запятой. Строки, начинающиеся с ‘#’, являются комментариями и не обрабатываются сервером dhcp.

Блок кода
languagebash
themeRDark
log-facility local7; 
default-lease-time 3600; 
max-lease-time 3610; 

# Список устройств Eltex
class "ELTEX-DEVICES" {
 match if (
  (substring (option vendor-class-identifier, 0, 14)="ELTEX_WEP-12AC") or
  (substring (option vendor-class-identifier, 0, 14)="ELTEX_WOP-12AC") or
  (substring (option vendor-class-identifier, 0, 14)="ELTX_WEP-12AC") or
  (substring (option vendor-class-identifier, 0, 14)="ELTX_WOP-12AC") or
  (substring (option vendor-class-identifier, 0, 13)="ELTEX_WEP-2AC") or
  (substring (option vendor-class-identifier, 0, 19)="ELTEX_WEP-2AC-SMART") or
  (substring (option vendor-class-identifier, 0, 13)="ELTEX_WOP-2AC") or
  (substring (option vendor-class-identifier, 0, 12)="ELTEX_WEP-1L") or
  (substring (option vendor-class-identifier, 0, 12)="ELTEX_WEP-2L") or
  (substring (option vendor-class-identifier, 0, 12)="ELTEX_WOP-2L") or
  (substring (option vendor-class-identifier, 0, 6)="ESR-10") or
  (substring (option vendor-class-identifier, 0, 6)="ESR-20")
 );
}

# Подсеть адресов управления ТД
subnet 100.111.70.0 netmask 255.255.255.0 { 
 pool {
  option routers 100.111.70.1;
  range 100.111.70.4 100.111.70.254;
# 43 опция 10 подопция, передает ТД адрес EMS сервера (в данном случае 100.123.0.54)
  option vendor-encapsulated-options 0A:0C:31:30:30:2e:31:32:33:2e:30:2e:35:34;
  allow members of "ELTEX-DEVICES";
  option domain-name-servers 172.16.0.1, 8.8.8.8;
 }
}

# Объявляем подсеть для адресов клиентов
subnet 100.111.71.0 netmask 255.255.255.0 {
 pool {
  option routers 100.111.71.1;
  range 100.111.71.4 100.111.71.254;
  option domain-name-servers 172.16.0.1, 8.8.8.8;
 }
}

...

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

Блок кода
languagebash
themeRDark
 ifconfig

Файл содержит основные настройки, в частности, список используемых сетевых интерфейсов:

Блок кода
languagebash
themeRDark
 INTERFACES="eth1.101 eth1.102"

На этом минимальная конфигурация завершена. Для применения настроек необходимо перезапустить сервис

Блок кода
languagebash
themeRDark
service isc-dhcp-server restart

...

  • внутренняя операторская подсеть (inner operator) – используется для связи с внутренней сетью оператора. В этой сети администраторы и операторы подключаются к GUI EMS, осуществляется связь с SMS gateway и сервисами оператора через NorthboundInterface. Интерфейс в этой подсети является виртуальным (используется механизм keepalived);
  • внешняя операторская подсеть (outer operator) – используется для связи с точками доступа и другим сетевым оборудованием. Имеет жесткие политики безопасности. Интерфейс в этой подсети является виртуальным (используется механизм keepalived);
  • внешняя подсеть для приема DHCP запросов от Relay-агентов на конечном операторском оборудовании.
Без форматированияcode
themeRDark
auto eth1.102 # Интерфейс во внешней операторской сети обмена
    iface eth1.102 inet static
    address 192.168.114.8
    netmask 255.255.255.192
    network 192.168.114.0
    vlan_raw_device eth1
 
auto eth1.100 # Интерфейс во внутренней операторской сети обмена
    iface eth1.100 inet static
    address 172.17.209.9
    netmask 255.255.255.192
    network 172.17.209.0
    vlan_raw_device eth1
 
auto eth1.101 # Интерфейс для раздачи предварительных IP на точки доступа
    iface eth1.101 inet static
    address 10.203.5.7
    netmask 255.255.255.192
    network 10.203.5.0
    vlan_raw_device eth1


Маршрутизация

Сервер DHCP должен иметь доступ к подсетям:

...

Пример конфигурирования маршрутов в файле /etc/network/interfaces.

Без форматированияcode
themeRDark
up ip route add 100.65.64.0/22 via 192.168.114.10
up ip route add 192.168.200.0/22 via 192.168.114.10
up ip route add 10.203.32.0/19 via 10.203.5.1

...

Файл содержит основные настройки, в частности, список используемых сетевых интерфейсов:

Без форматированияcode
themeRDark
INTERFACES="eth1.101 eth1.102"

...

 Конфигурация пула адресов DHCP-сервера.


Пример конфигурации

Без форматированияcode
themeRDark
default-lease-time 60;
max-lease-time 120;
log-facility local7;
class "ELTEX-DEVICES" {
    match if (
        (substring (option vendor-class-identifier, 0, 14) = "ELTEX_WEP-12AC") or
        (substring (option vendor-class-identifier, 0, 14) = "ELTEX_WOP-12AC") or
        (substring (option vendor-class-identifier, 0, 14) = "ELTX_WEP-12AC") or
        (substring (option vendor-class-identifier, 0, 14) = "ELTX_WOP-12AC")
    );
}
subnet 192.168.114.64 netmask 255.255.255.192 {}
subnet 10.203.5.64 netmask 255.255.255.192 {}
#first IP подсеть для выдачи первичных адресов для точек доступа
subnet 10.203.32.0 netmask 255.255.254.0 {
    pool {
        option routers 10.203.32.2;
        range 10.203.32.130 10.203.32.230;
        failover peer "dhcp-failover";
        option vendor-encapsulated-options 0B:0c:31:30:2E:32:30:33:2E:35:2E:31:31:32:0C:0C:31:30:2E:32:30:33:2E:35:2E:31:31:33;
        allow members of "ELTEX-DEVICES";
    }
}
#managed IP сеть для выдачи вторичных адресов на точках доступа
subnet 192.168.200.0 netmask 255.255.252.0 {
    pool {
        option routers 192.168.200.5;
        range 192.168.200.120 192.168.200.164;
        failover peer "dhcp-failover";
        option vendor-encapsulated-options A:F:31:39:32:2E:31:36:38:2E:31:31:34:2E:31:30:34;
        allow members of "ELTEX-DEVICES";
    }
}
#User IP подсеть пользователей (клиентов)
subnet 200.65.64.0 netmask 255.255.240.0 {
    pool {
        option routers 200.65.64.5;
        range 200.65.64.200 200.65.64.250;
        failover peer "dhcp-failover";
        option domain-name-servers 172.16.0.1, 8.8.8.8;
    }
}

...

2. Внести записи в файл.

Формат записи

Без форматированияcode
themeRDark
host wep_01 {   hardware ethernet a8:f9:4b:b0:00:00;  fixed-address 192.168.1.1;  }

...

3. В пул адресов точек доступа необходимо добавить строку:

Без форматированияcode
themeRDark
include "/var/lib/dhcp/hosts";

4. Для того чтобы DHCP-сервер мог прочитать файл, необходимо установить принадлежность командой:

Без форматированияcode
themeRDark
chown dhcpd:dhcpd /var/lib/dhcp/static/hosts

...

5. Разрешить чтение этого файла в apparmor, для этого в файл /etc/apparmor.d/usr.sbin.dhcpd необходимо добавить строку (строка заканчивается запятой):

Без форматированияcode
themeRDark
/var/lib/dhcp/hosts r,


6. Перезапустить сервисы

Без форматированияcode
themeRDark
service apparmor restart
service isc-dhcp-server restart

Пример конфигурации пула:

Без форматированияcode
themeRDark
subnet 192.168.200.0 netmask 255.255.252.0 {
    pool {
        option routers 192.168.200.5;
        range 192.168.200.120 192.168.200.164;
        option vendor-encapsulated-options A:F:31:39:32:2E:31:36:38:2E:31:31:34:2E:31:30:34;
        include "/var/lib/dhcp/hosts";
    }
}

...

При необходимости использования опции 82 новые классы создаются следующим образом:

Без форматированияcode
themeRDark
class "NEW_class" {
match if (
    (option agent.circuit-id = "E320-1-210:GigabitEthernet 1/0/2.25030007:2503-7")
    and
        (
            (substring (option vendor-class-identifier, 0, 14) = "ELTEX_WEP-12AC") or
            (substring (option vendor-class-identifier, 0, 14) = "ELTEX_WOP-12AC") or
            (substring (option vendor-class-identifier, 0, 14) = "ELTX_WEP-12AC") or
            (substring (option vendor-class-identifier, 0, 14) = "ELTX_WOP-12AC")
        )
    );
}

Созданный класс требуется указать в пуле, например:

Без форматированияcode
themeRDark
subnet 192.168.200.0 netmask 255.255.252.0 {
    pool {
        option routers 192.168.200.5;
        range 192.168.200.120 192.168.200.164;
        option vendor-encapsulated-options A:F:31:39:32:2E:31:36:38:2E:31:31:34:2E:31:30:34;
        allow members of "NEW_class";
    }
}

...

В SoftWLC используются следующие подопции:

ПодопцияОписание
10 адрес EMS-сервера.
11адрес для создания management-туннеля.
12 адрес для создания data-туннеля.
13опция, указывающая принадлежность точки доступа определенному участку сети оператора.


В RFC2132 формат представлен в следующем виде:

Без форматированияcode
themeRDark
   When encapsulated vendor-specific extensions are used, the
   information bytes 1-n have the following format:
 
    Code   Len   Data item        Code   Len   Data item       Code
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   |  T1 |  n  |  d1 |  d2 | ... |  T2 |  n  |  D1 |  D2 | ... | ... |
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

...

  • В пуле первичных адресов 43 опция (11 и 12 подопции) записывается в виде:
Без форматированияcode
themeRDark
option vendor-encapsulated-options 0B:0B:31:30:2E:32:30:33:2E:35:2E:31:30:0C:0B:31:30:2E:32:30:33:2E:35:2E:31:31;

...

  • В пуле вторичных адресов 43 опция (10 подопция) записывается в виде:
    Якорь
    43опция10подопция
    43опция10подопция
Без форматированияcode
themeRDark
option vendor-encapsulated-options 0A:0D:31:39:32:2E:31:36:38:2E:31:31:34:2E:34;

...

  • 13 подопция записывается в виде:
Без форматированияcode
themeRDark
option vendor-encapsulated-options 0D:0A:65:6c:74:65:78:2e:72:6f:6f:74;

...

Примечание

В случае, если в пуле необходимо передать несколько подпций, то все они записываются в одну строку. Например для 10 и 13 подопции это будет выглядеть так:

Без форматированияcode
themeRDark
option vendor-encapsulated-options 0A:0D:31:39:32:2E:31:36:38:2E:31:31:34:2E:34:0D:0A:65:6c:74:65:78:2e:72:6f:6f:74;


...

Section

Для проверки конфигурационного файла на ошибки в синтаксисе без перезапуска DHCP сервиса и применения конфигурации,  можно использовать утилиту dhcpd.

Для проверки запускаем утилиту dhcpd с ключем -t  и если конфигурационный файл находится не по дефолтному адресу , то добавляем ключи -cf

Без форматированияcode
themeRDark
dhcpd -t -cf /path/to/dhcpd.conf

пример :

Блок кода
themeRDark
root@vagrant-ubuntu-trusty-64-test1111:~# dhcpd -t -cf /etc/dhcp/dhcpd_test.conf 
Internet Systems Consortium DHCP Server 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
/etc/dhcp/dhcpd_test.conf line 97: semicolon expected.
        range 
         ^
/etc/dhcp/dhcpd_test.conf line 105: Pool declaration with no address range.
          }
           ^
Pool declarations must always contain at least
one range statement.
Configuration file errors encountered -- exiting


...

Для удобства анализа требуется настроить логирование в отдельный файл.

Редактируем файл:

Без форматированияcode
themeRDark
/etc/rsyslog.d/50-default.conf

Добавляем в начало файла:

Без форматированияcode
themeRDark
if $programname == 'dhcpd' then /var/log/dhcpd.log
& stop

Перезапускаем службу rsyslog:

Без форматированияcode
themeRDark
systemctl restart rsyslog

Далее требуется настроить ротацию файлов dhcpd.log. 

Редактируем файл:

Без форматированияcode
themeRDark
/etc/logrotate.d/rsyslog

Добавляем в конец файла:

Без форматированияcode
themeRDark
/var/log/dhcpd.log
{
        rotate 4
        maxsize 50M
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

...

В файле конфигурации /etc/dhcp/dhcpd.conf необходимо добавить описание

На первом сервере:

Без форматированияcode
themeRDark
failover peer "dhcp-failover" {
    primary;
    address 192.168.114.8;
    port 647;
    peer address 192.168.114.9;
    peer port 647;
    max-response-delay 30;
    max-unacked-updates 10;
    load balance max seconds 3;
    auto-partner-down 180;
    mclt 1800;
    split 128;
}

На втором сервере:

Без форматированияcode
themeRDark
failover peer "dhcp-failover" {
    secondary;
    address 192.168.114.9;
    port 647;
    peer address 192.168.114.8;
    peer port 647;
    max-response-delay 30;
    max-unacked-updates 10;
    load balance max seconds 3;
    auto-partner-down 60;
}

В резервируемых пулах (подсеть 192.168.200.0) добавить строку

Без форматированияcode
themeRDark
failover peer "dhcp-failover";


Предупреждение

Обязательным условием работы DHCP-failover является синхронизация времени на серверах. При рассинхронизации времени возможны сбои в работе.

...

Section

Для настройки мониторинга и проверки состояния DHCP серверов, необходимо сгенерировать ключ и указать в конфигурационном файле DHCP сервера. Сперва сгенерируем ключи, добавив  -K и указав дерикторию назначенияключ, при помощи утилиты tsig-keygen (входящей в состав dns сервера BIND) перенаправив вывод в файл, в директорию /etc/dhcp/

Блок кода
themeRDark
root@vagrant-ubuntu-trusty-64-test1111:~# dnssec-keygen -K tsig-keygen omapi_key > /etc/dhcp/ -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST omapi_key 
Komapi_key.+157+35749

omapi_key.key

Можете выполнить данную операцию на сервере с установленным BIND и затем скопировать файл с ключом на сервера DHCP.

Чтоб не устанавливать сервер BIND ради единственной операции генерации ключа, создадим в домашней директории временную папку и перейдем в нее:

Блок кода
themeRDark
mkdir tmp
cd tmp

Теперь скачаем и распакуем содержимое пакета bind9

Блок кода
themeRDark
apt download bind9
dpkg-deb -xv bind9_1%3a9.18.12-0ubuntu0.22.04.3_amd64.deb ./

Cгенерируем ключ, при помощи бинарника tsig-keygen, перенаправив вывод в файл, в директорию /etc/dhcp/

Блок кода
themeRDark
~/tmp/usr/sbin/tsig-keygen omapi_key > /etc/dhcp/omapi_key.key

После чего временную папку со всем содержимым можно удалить

Блок кода
themeRDark
rm -rf ~/tmp

Выводим ключ

Блок кода
themeRDark
root@vagrant-ubuntu-trusty-64-test1111:~# cat /etc/dhcp/Komapiomapi_key.+157+35749.key
| awk '{print $7 $8}'
kvxcUNEtu0137tWK/uEKU/MSQxinN0lTifbLwaQd0SvvhtW+PpvlHqSbHJnNLIfo7KSA7KFWtjoEUqIIJXgxmg==key "omapi_key" {
        algorithm hmac-sha256;
        secret "/ZKsvMBjG6VjQgYQ0V6dEeYPycVmRmQLfs9b4AOdcNk=";
};

Указываем в файле конфигурации DHCP сервера обоих серверов полученный ключ, алгоритм шифрования, порт и имя omapi_key

Блок кода
themeRDark
key omapi_key {
        algorithm HMAChmac-MD5sha256;
        secret "kvxcUNEtu0137tWK/uEKU/MSQxinN0lTifbLwaQd0SvvhtW+PpvlHqSbHJnNLIfo7KSA7KFWtjoEUqIIJXgxmgZKsvMBjG6VjQgYQ0V6dEeYPycVmRmQLfs9b4AOdcNk==";
              };

omapi-port 7911;
omapi-key omapi_key;


Далее перезапускаем isc-dhcp-server на обоих хостах

Блок кода
themeRDark
service isc-dhcp-server  restart

Осталось добавить в дерево объектов EMS, DHCP сервер и указать в настройках доступа EMS DHCP, OMAPI key name, OMAPI key и Failover peer name

Image RemovedImage Added