| В качестве DHCP сервера используется свободное решение ISC-DHCP-SERVER. Если на вашей ЛВС уже используется сторонний DHCP сервер, то не обязательно переходить на решение контроллера SoftWLC. Использование стороннего DHCP сервера, на работу контроллера не влияет. |
Применительно к проекту Eltex.SoftWLC данное ПО позволяет решать задачи:
Установка ISC-DHCP-SERVER лучше производить после установки программного контроллера SoftWLC.
sudo -s apt-get update apt-get install isc-dhcp-server |
Для остановки сервиса используется команда:
service isc-dhcp-server stop |
Для запуска сервиса после остановки используется команда:
service isc-dhcp-server start |
Для проверки — запущен ли сервис в данный момент или нет, используется команда:
service isc-dhcp-server status |
В ответ последует сообщение:
* isc-dhcp-server is running |
в случае если сервис запущен, или
service isc-dhcp-server status |
в случае если сервис не запущен.
По умолчанию логи сервиса записываются в файл
/var/log/syslog |
Для удобства анализа рекомендуется настроить перенаправление логов в файл "/var/log/dhcpd.log".
Описанные варианты конфигурации приведены для типовых схем организации связи, однако, они могут отличаться от конфигурации, необходимой для Вашей сети! |
Для небольших сетей, где все ТД подключены по L2 схеме, для конфигурации DHCP сервера будет достаточно указать:
Подсети ТД и клиентов разделяются по соображениям безопасности, для того, чтобы у злоумышленников не было возможности проникнуть в сеть управления ТД при подключении к одному из SSID.
Эти параметры всегда будут использоваться при его настройке.
Рассмотрим на примере реальной адресации:
| Адрес или подсеть | Назначение |
|---|---|
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 сервера находится в директории /etc/dhcp/
nano /etc/dhcp/dhcpd.conf |
Все строки параметров в файле конфигурации dhcp заканчиваются точкой с запятой (;). Некоторые параметры могут иметь несколько значений, например, domain-name-servers, у которого два IP-адреса, разделенные запятой. Строки, начинающиеся с ‘#’, являются комментариями и не обрабатываются сервером dhcp.
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;
}
} |
Некоторые общие параметры сервера DHCP:
log-facility local7 — Запись логов в файл
default-lease-time — Промежуток времени в секундах, на который выделяется адрес клиенту, парамерт назначен глобально, т.е. действует для ТД и клиентов.
max-lease-time — Максимальный промежуток времени в секундах, на который выделяется адрес клиенту
subnet — Параметр объявляет подсеть (в нашем случае 100.111.71.0 с маской 255.255.255.0)
option routers — Определяет IP-адрес вашего шлюза или точки выхода в сеть.(100.111.71.1)
range — Диапазон выдаваемых адресов ( от 100.111.71.4 до 100.111.71.254)
option vendor-encapsulated-options — 43 опция 10 подопция, используется для передачи ТД адреса контроллера.
domain-name-servers — Адреса серверов DNS. (172.16.0.1, 8.8.8.8).
allow members of "ELTEX-DEVICES" — оператор соответствия класса. В пул будут записаны те устройства, имя типа вендора которых совпало с глобально объявленным классом (class "ELTEX-DEVICES", ELTEX_WEP-12AC, ELTEX_WEP-2AC, ELTEX_WEP-2L и т.д.)
В файле конфигурации /etc/default/isc-dhcp-server записан интерфейс, с которого DHCP сервер должен принимать DHCP запросы. Если не указать ни один из интерфейсов, то будут сервер будет отвечать на все запросы, вне зависимости от того, с какого он пришел интерфейса.
Для определения имени сетевого интерфейса можно ввести команду
ifconfig |
Файл содержит основные настройки, в частности, список используемых сетевых интерфейсов:
INTERFACES="eth1.101 eth1.102" |
На этом минимальная конфигурация завершена. Для применения настроек необходимо перезапустить сервис
service isc-dhcp-server restart |
DHCP-сервер должен иметь интерфейсы в трех подсетях:
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 должен иметь доступ к подсетям:
10.203.32.0 – для раздачи первичных IP-адресов на точки доступа;
192.168.200.0 – для раздачи management IP-адресов на точки доступа;
100.65.64.0– для раздачи IP-адресов клиентским устройствам.
Пример конфигурирования маршрутов в файле /etc/network/interfaces.
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 |
Файл содержит основные настройки, в частности, список используемых сетевых интерфейсов:
INTERFACES="eth1.101 eth1.102" |
Конфигурация пула адресов DHCP-сервера.
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;
}
} |
Если необходимо использовать заранее определенные IP-адреса точек доступа в управляющей сети (вторичные адреса), в конфигурацию можно включить список статических хостов. Чтобы не загружать этим списком файл /etc/dhcp/dhcpd.conf, рекомендуем воспользоваться следующим способом:
1. Создать файл со списком, который может находиться в любом каталоге, например /var/lib/dhcp/touch /var/lib/dhcp/hosts.
2. Внести записи в файл.
Формат записи
host wep_01 { hardware ethernet a8:f9:4b:b0:00:00; fixed-address 192.168.1.1; } |
Где,
host wep_01 – имя хоста.
hardware ethernet a8:f9:4b:b0:00:01 – MAC-адрес устройства. Обратите внимание, что для получения вторичного адреса точка использует MAC на единицу больший, чем при получении первичного адреса.
fixed-address 192.168.200.133 – IP-адрес устройства.
3. В пул адресов точек доступа необходимо добавить строку:
include "/var/lib/dhcp/hosts"; |
4. Для того чтобы DHCP-сервер мог прочитать файл, необходимо установить принадлежность командой:
chown dhcpd:dhcpd /var/lib/dhcp/static/hosts |
5. Разрешить чтение этого файла в apparmor, для этого в файл /etc/apparmor.d/usr.sbin.dhcpd необходимо добавить строку (строка заканчивается запятой):
/var/lib/dhcp/hosts r, |
6. Перезапустить сервисы
service apparmor restart service isc-dhcp-server restart |
Пример конфигурации пула:
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 новые классы создаются следующим образом:
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")
)
);
} |
Созданный класс требуется указать в пуле, например:
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";
}
} |
После этого адреса из данного пула будут выдаваться только устройствам, входящим в этот класс.
Опция используется для передачи DHCP-клиенту вендор-специфических данных.
В SoftWLC используются следующие подопции:
| Подопция | Описание |
|---|---|
| 10 | адрес EMS-сервера. |
| 11 | адрес для создания management-туннеля. |
| 12 | адрес для создания data-туннеля. |
| 13 | опция, указывающая принадлежность точки доступа определенному участку сети оператора. |
В RFC2132 формат представлен в следующем виде:
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 | ... | ... |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ |
Опция передается в формате HEX (шестнадцатеричное представление). Все данные из формата ASCII должны быть преобразованы в HEX.
Все значения в опции разделяются двоеточием ':', а строка завершается точкой с запятой ';'.
Примеры опций:
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; |
Расшифровка:
11 подопция, длиной 11 символов, содержит адрес 10.203.5.10;
12 подопция, длиной 11 символов, содержит адрес 10.203.5.11.
option vendor-encapsulated-options 0A:0D:31:39:32:2E:31:36:38:2E:31:31:34:2E:34; |
Расшифровка:
10 подопция, длиной 13 символов, содержит адрес 192.168.114.4
option vendor-encapsulated-options 0D:0A:65:6c:74:65:78:2e:72:6f:6f:74; |
Расшифровка:
13 подопция, длиной 10 символов, содержит домен: eltex.root
В случае, если в пуле необходимо передать несколько подпций, то все они записываются в одну строку. Например для 10 и 13 подопции это будет выглядеть так:
|
Для проверки конфигурационного файла на ошибки в синтаксисе без перезапуска DHCP сервиса и применения конфигурации, можно использовать утилиту dhcpd. Для проверки запускаем утилиту dhcpd с ключем -t и если конфигурационный файл находится не по дефолтному адресу , то добавляем ключи -cf
пример :
|
Для удобства анализа требуется настроить логирование в отдельный файл.
Редактируем файл:
/etc/rsyslog.d/50-default.conf |
Добавляем в начало файла:
if $programname == 'dhcpd' then /var/log/dhcpd.log & stop |
Перезапускаем службу rsyslog:
systemctl restart rsyslog |
Далее требуется настроить ротацию файлов dhcpd.log.
Редактируем файл:
/etc/logrotate.d/rsyslog |
Добавляем в конец файла:
/var/log/dhcpd.log
{
rotate 4
maxsize 50M
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
} |
В файле конфигурации /etc/dhcp/dhcpd.conf необходимо добавить описание
На первом сервере:
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;
} |
На втором сервере:
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) добавить строку
failover peer "dhcp-failover"; |
Обязательным условием работы DHCP-failover является синхронизация времени на серверах. При рассинхронизации времени возможны сбои в работе. |
Для настройки мониторинга и проверки состояния DHCP серверов, необходимо сгенерировать ключ и указать в конфигурационном файле DHCP сервера. Сперва сгенерируем ключ, при помощи утилиты tsig-keygen (входящей в состав dns сервера BIND) перенаправив вывод в файл, в директорию /etc/dhcp/
Можете выполнить данную операцию на сервере с установленным BIND и затем скопировать файл с ключом на сервера DHCP. Чтоб не устанавливать сервер BIND ради единственной операции генерации ключа, создадим в домашней директории временную папку и перейдем в нее:
Теперь скачаем и распакуем содержимое пакета bind9
Cгенерируем ключ, при помощи бинарника tsig-keygen, перенаправив вывод в файл, в директорию /etc/dhcp/
После чего временную папку со всем содержимым можно удалить
Выводим ключ
Указываем в файле конфигурации DHCP обоих серверов полученный ключ, алгоритм шифрования, порт и имя omapi_key
Далее перезапускаем isc-dhcp-server на обоих хостах
Осталось добавить в дерево объектов EMS, DHCP сервер и указать в настройках доступа DHCP, OMAPI key name, OMAPI key и Failover peer name
|