|
В качестве DHCP сервера предлагается использовать свободное решение ISC-DHCP-SERVER. Применительно к проекту Eltex.SoftWLC данное ПО позволяет решать задачи:
Для остановки сервиса используется команда:
service isc-dhcp-server stop |
Для запуска сервиса после остановки используется команда:
service isc-dhcp-server start |
Для проверки — запущен ли сервис в данный момент или нет, используется команда:
service isc-dhcp-server status |
В ответ последует сообщение:
* isc-dhcp-server is running |
в случае если сервис запущен, или
* isc-dhcp-server is not running |
в случае если сервис не запущен.
Описанные варианты конфигурации приведены для типовых схем организации связи, однако, они могут отличаться от конфигурации, необходимой для Вашей сети! |
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/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/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 сервера. Сперва сгенерируем ключи, добавив -K и указав дерикторию назначения
Выводим ключ
Указываем в файле конфигурации DHCP сервера полученный ключ, алгоритм шифрования, порт и имя omapi_key
Далее перезапускаем isc-dhcp-server
Осталось указать в настройках доступа EMS OMAPI key name, OMAPI key и Failover peer name |