Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Описание

В качестве DHCP сервера предлагается использовать свободное решение ISC-DHCP-SERVER. Применительно к проекту Eltex.SoftWLC данное ПО позволяет решать задачи:

  • Выдача первичных (внешних) IP-адресов точкам доступа с опцией 43 (11 и 12 подопции) , что позволяет поднимать GRE туннели к ESR.
  • Выдача вторичных (management, туннельных) IP-адресов точкам доступа с опцией 43 (10 и 13 подопции) для управления, обнаружения и автоматической инициализации точек доступа.
  • Выдача IP-адресов для Wi-Fi пользователей, подключающихся к точкам доступа.
  • Классификация DHCP клиентов по 82, 60 опциям и giAddrField.

Способ запуска/остановки

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

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

Описанные варианты конфигурации приведены для типовых схем организации связи, однако, они могут отличаться от конфигурации, необходимой для Вашей сети!


Сетевые настройки

Сетевые интерфейсы

DHCP-сервер должен иметь интерфейсы в трех подсетях:

  • внутренняя операторская подсеть (inner operator) – используется для связи с внутренней сетью оператора. В этой сети администраторы и операторы подключаются к GUI EMS, осуществляется связь с SMS gateway и сервисами оператора через NorthboundInterface. Интерфейс в этой подсети является виртуальным (используется механизм keepalived);
  • внешняя операторская подсеть (outer operator) – используется для связи с точками доступа и другим сетевым оборудованием. Имеет жесткие политики безопасности. Интерфейс в этой подсети является виртуальным (используется механизм keepalived);
  • внешняя подсеть для приема DHCP запросов от Relay-агентов на конечном операторском оборудовании.


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

Конфигурация ISC-DHCP-SERVER

/etc/default/isc-dhcp-server

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

INTERFACES="eth1.101 eth1.102"


/etc/dhcp/dhcpd.conf

 Конфигурация пула адресов 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

При необходимости использования опции 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";
    }
}

После этого адреса из данного пула будут выдаваться только устройствам, входящим в этот класс.


Использование опции 43

Опция используется для передачи 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.

Все значения в опции разделяются двоеточием ':', а строка завершается точкой с запятой ';'.

Примеры опций:

  • В пуле первичных адресов 43 опция (11 и 12 подопции) записывается в виде:
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.

  • В пуле вторичных адресов 43 опция (10 подопция) записывается в виде:
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

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

Расшифровка:

13 подопция, длиной 10 символов, содержит домен: eltex.root

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

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;


Проверка конфигурационного файла dhcpd

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

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

dhcpd -t -cf /path/to/dhcpd.conf

пример :

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



Настройка DHCP-failover

В файле конфигурации /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 является синхронизация времени на серверах. При рассинхронизации времени возможны сбои в работе.

Настройка OMAPI

Для настройки мониторинга и проверки состояния DHCP серверов, необходимо сгенерировать ключ и указать в конфигурационном файле DHCP сервера. Сперва сгенерируем ключи, добавив  -K и указав дерикторию назначения


root@vagrant-ubuntu-trusty-64-test1111:~# dnssec-keygen -K /etc/dhcp/ -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST omapi_key 
Komapi_key.+157+35749

Выводим ключ

root@vagrant-ubuntu-trusty-64-test1111:~# cat /etc/dhcp/Komapi_key.+157+35749.key | awk '{print $7 $8}'
kvxcUNEtu0137tWK/uEKU/MSQxinN0lTifbLwaQd0SvvhtW+PpvlHqSbHJnNLIfo7KSA7KFWtjoEUqIIJXgxmg==

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

key omapi_key {
        algorithm HMAC-MD5;
        secret "kvxcUNEtu0137tWK/uEKU/MSQxinN0lTifbLwaQd0SvvhtW+PpvlHqSbHJnNLIfo7KSA7KFWtjoEUqIIJXgxmg==";
              };

omapi-port 7911;
omapi-key omapi_key;


Далее перезапускаем isc-dhcp-server

service isc-dhcp-server  restart

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





  • Нет меток