Содержание
Версия документа | Дата выпуска | Содержание изменений |
Версия 1.0 | 21.08.2017 | Первая публикация. |
Версия 1.1 | 21.09.2017 | Выгрузка в СОРМ-3 изменений в записях пользователей Wi-Fi |
Версия 1.3 | 24.10.2017 | Добавление данных оператора в выгрузку СОРМ-3 |
Версия 1.4 | 07.12.2017 | Добавление параметра sorm3.enabled |
Версия 1.6 | 27.02.2018 | Корректировка п.6.3.3 |
Версия 1.7 | 20.04.2018 | Формата даты приведен к виду yyyy-MM-dd HH:mm:ss |
Версия 1.8 | 14.05.2019 | Добавлен DPI |
Версия 1.9 | 04.02.2021 | |
Версия 1.10 | 06.06.2022 | Корректировка формулировок п.5.1.3 Удаление информации об увеличении буфера сетевых соединений |
Версия 1.11 | 09.11.2022 | Обновление и дополнение информации в п. 5.6 Настройка IP-адресов региональных съемников в ЛК B2B |
1 Общая архитектура
Модули Eltex-sorm2-replicator и Eltex-radius-sorm3 формируют выгрузки для внешних системы. По выгружаемым данным можно определить местоположение точки доступа.
1.1 Сетевая архитектура решения
Рисунок 1 – Общая сетевая топология решения
Между ESR и точками доступа поднимаются SoftGRE-туннели сквозь L3-инфраструктуру оператора. От каждой точки доступа формируется два туннеля: Management-туннель для передачи трафика управления и Data-туннель для передачи абонентского трафика.
Внутри Management-туннеля передается трафик управления точкой доступа в отдельной сети управления. Данная подсеть невидима для L3-сегмента оператора, скрываясь за заголовками GRE-туннеля. Внутри Data-туннеля передается абонентский трафик. Этот трафик терминируется на ESR и далее маршрутизируется в сеть оператора (в сторону его NAT).
1.2 Порядок прохождения трафика в схеме ТД «Элтекс»
Рисунок 3 – Порядок прохождения трафика в схеме ТД «Элтекс»
Данная схема актуальна:
- Для ТД «Элтекс» работающих c Hotspot авторизацией;
- Для ТД «Элтекс» работающих с авторизацией Enterprise.
При прохождении авторизации на WEB портале, HTTP запросы пользователя проксируются в ТД. После прохождения авторизации весь трафик клиента будет идти с IP-адреса (User IP), который он получил по DHCP.
1.3 Порядок прохождения трафика в схеме BRAS
Рисунок 2 – Порядок прохождения трафика в схеме BRAS
Данная схема актуальна:
- Для ТД других производителей, включенных через ESR/BRAS.
Клиент, подключается к открытому SSID, отправляет DHCP запрос. Этот запрос проходя через ESR-10 инкапсулируется в GRE туннель и передается к ESR. На ESR DHCP-relay перенаправляет запросы к серверу SoftWLC. Ответ проходит в обратном направлении до клиента. Клиенту выдается IP адрес.
При прохождении авторизации на WEB портале, HTTP запросы пользователя проксируются в ESR, при этом происходит замена Source адреса (USER IP) клиента на адрес ESR (PROXY IP). Поэтому между ESR и SoftWLC весь HTTP(S) трафик будет идти с IP адресом ESR а не клиента. Весь остальной трафик будет идти с USER IP адресом.
После прохождения авторизации, весь трафик пользователя в сторону NAT, будет идти без подмены Source адреса (USER IP). Если используется функционал URL фильтрация, то после прохождения авторизации HTTP(S) трафик пользователя проксируются в ESR, при этом происходит замена Source адреса (USER IP) клиента на адрес ESR (PROXY IP). Поэтому между ESR и NAT весь HTTP(S) трафик будет идти с IP адресом ESR а не клиента. Весь остальной трафик будет идти с USER IP адресом. При прохождении через NAT, для трафика пользователя будет устанавливаться «Белый» IP адрес NAT.
При снятии трафика СОРМ, должна учитываться эта реализация.
1.4 Передача трафика RADIUS accounting через сеть
На ТД «Элтекс» настроены SSID с авторизацией Enterprise, данные RADIUS accounting передаются с ТД в GRE туннеле до ESR (в VRF AP), а затем к SoftWLC в (VRF Baskbone).
На ТД «Элтекс» c Hotspot авторизацией данные RADIUS accounting передаются с ТД в GRE туннеле до ESR (в VRF AP), а затем к SoftWLC в (VRF Baskbone).
На ТД «Элтекс» c Hotspot авторизацией и интеграцией с HotWiFi данные RADIUS accounting формируются на ESR (BRAS), а затем передаются к SoftWLC в (VRF Baskbone).
На ТД других производителей, включенных через ESR в режиме client, с Hotspot авторизацией, данные RADIUS accounting формируются на ESR (BRAS), а затем передаются к SoftWLC в (VRF Baskbone).
Таким образом весь accounting трафик проходит через VRF Backbone, от регионального ESR к SoftWLC.
Рисунок 4 – Порядок прохождения RADIUS accounting через сеть оператора
Рисунок 5 – Порядок прохождения RADIUS accounting в системе SoftWLC
1.5 Описание цепочки восстановления местоположения ТД
1.5.1 Поиск по Eltex-AP-Domain
Точка доступа отправляет RADIUS трафик в SoftWLC. В процессе инициализации точка доступа получает имя домена в котором она расположена. Данный параметр передается в VSA атрибуте Eltex-AP-Domain. Пример трафика:
Frame 1: 504 bytes on wire (4032 bits), 504 bytes captured (4032 bits) Ethernet II, Src: fa:16:3e:58:4b:2a (fa:16:3e:58:4b:2a), Dst: CheckPoi_40:60:11 (00:1c:7f:40:60:11) Internet Protocol Version 4, Src: 101.162.18.73, Dst: 102.64.72.47 User Datagram Protocol, Src Port: 45104, Dst Port: 1813 RADIUS Protocol Code: Accounting-Request (4) Packet identifier: 0x92 (146) Length: 462 Authenticator: 3d3f046a69a6139085332513faf1cd84 Attribute Value Pairs AVP: t=Acct-Session-Id(44) l=19 val=1AEE23D5-4650EBAB AVP: t=Framed-IP-Address(8) l=6 val=101.109.144.137 AVP: t=Acct-Status-Type(40) l=6 val=Interim-Update(3) AVP: t=User-Name(1) l=14 val=908d6c222fdb AVP: t=Service-Type(6) l=6 val=Framed(2) AVP: t=Vendor-Specific(26) l=74 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=NAS-IP-Address(4) l=6 val=10.21.128.245 AVP: t=Event-Timestamp(55) l=6 val=Sep 01, 2021 17:58:58.000000000 +07 AVP: t=NAS-Port-Id(87) l=3 val=1 AVP: t=Called-Station-Id(30) l=33 val=E0-D9-E3-8C-93-40:UK_SF_142 AVP: t=Calling-Station-Id(31) l=19 val=90-8D-6C-22-2F-DB AVP: t=NAS-Port-Type(61) l=6 val=Wireless-802.11(19) AVP: t=Acct-Session-Time(46) l=6 val=2401 AVP: t=Acct-Input-Packets(47) l=6 val=3875 AVP: t=Acct-Output-Packets(48) l=6 val=3875 AVP: t=Acct-Input-Octets(42) l=6 val=928215 AVP: t=Acct-Input-Gigawords(52) l=6 val=0 AVP: t=Acct-Output-Octets(43) l=6 val=950863 AVP: t=Acct-Output-Gigawords(53) l=6 val=0 AVP: t=Vendor-Specific(26) l=9 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=9 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=9 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=9 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=9 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=74 vnd=Eltex Enterprise, Ltd.(35265) Type: 26 Length: 74 Vendor ID: Eltex Enterprise, Ltd. (35265) VSA: t=Eltex-AP-Domain(24) l=68 val=142-023_office_15.Dzerzhinsk.Nizhegorodskaya_obl.access_point.root AVP: t=Acct-Authentic(45) l=6 val=Local(2) AVP: t=NAS-Identifier(32) l=19 val=00-00-00-00-00-00 AVP: t=NAS-Port(5) l=6 val=0 AVP: t=Connect-Info(77) l=23 val=CONNECT 0Mbps 802.11a AVP: t=Vendor-Specific(26) l=12 vnd=Eltex Enterprise, Ltd.(35265) AVP: t=Vendor-Specific(26) l=17 vnd=Eltex Enterprise, Ltd.(35265)
Eltex-sorm2-replicator ищет параметры заданного домена в базе данных для определения: гео данных, адрес съемника и т.д.. RADIUS пакет экспортируется в csv файл и дополняется полученными данными из базы данных
1.5.2 Поиск по nas ip
Если в RADIUS трафике отсутствует поле Eltex-AP-Domain, то поиск ведет по поля NAS-IP-Address, аналогично прошлому пункту.
1.5.3 Поиск по option82/cell
BRAS может перекладывать option82 из DHCP пакетов в RADIUS, дополнительно формируется VSA атрибут CELL. Обогащение RADIUS трафика выполняется в формате, определенном в RFC4679.
CELL это md5sum двух VSA атрибутов l2-interface и option82 (если присутствует). Атрибуты l2-interface и option82 неизменны в рамах одной локации. Для определения локации можно анализировать один атрибут CELL постоянной длины.
CELL=md5sum(l2-inerface+option82)
Добавление GenericAP происходит автоматически, PCRF получает пакет c option82, находит SSID и проверять необходимость в option82. Если опция включена в SSID, то добавление новой GenericAP ставится в очередь. GenericAP попадает в "песочницу",
2 Описание пакета Eltex-sorm2-replicator
Eltex-sorm2-replicator является дополнительным модулем системы SoftWLC. Основные задачи данного модуля:
- Пересылка копии RADIUS трафика в региональные съемники с учетом регионального признака;
- Формирование выгрузки по соединениям абонентов (RADIUS accounting) для СОРМ-3,
- Загрузка данных по соединениям абонентов (RADIUS accounting) на FTP сервер для системы ИС СОРМ «Январь» (МФИ-СОФТ);
- Обогащение трафика, в RADIUS трафик добавляется флаг . Eltex-DPI-Step-Logic 0/1, который сообщает о том что трафик установлен на контроль.
На серверах принимающих RADIUS accounting в системе SoftWLC, средствами iptables нужно настроить пересылку всего потока RADIUS accounting c DST портов 1813 и 31813 в сторону Eltex-sorm2-replicator на DST порт 41813. Eltex-sorm2-replicator принимает данный поток, извлекает данные RADIUS протокола формирует csv выгрузку и определяет адрес съемника для дальнейшей пересылки пакета. Адрес съемника задается в настройках домена в системе SoftWLC (ЛК B2B). Поиск съемника осуществляется вверх по дереву (от домена точки доступа во всех родительских узлах). Таким образом настроить съемник нужно только в доменах уровня МРФ или только в корневом домене, если съемник используется один. Можно задать глобальный адрес съемника в конфигурации сервиса Eltex-sorm2-replicator.federated
Информация о домене может быть найдена (в порядке уменьшения приоритета):
- По option82 в RADIUS пакете;
- В RADIUS пакета от ТД «Элтекс», если он содержит Eltex-Ap-Domain;
- В Свойств L2 подсети (ЛК B2B), если присутствует nas ip и L2 интерфейс;
- В Дереве объектов в EMS, если присутствует устройство с IP-адресом совпадающим с nas ip.
После получения данных формируется пакет и отправлять на IP-адрес регионального съёмника, IP-адрес, DST порт и ключ RADIUS берутся из настроек съемника (ЛК B2B). Таким образом в регион уходит трафик предназначенный только для него, а не весь поток RADIUS accounting. Если настроена глобальная пересылка, то пакет уходит на съемник из конфигурации сервиса тоже.
Информация по соединениям абонентов выгружается в файл:
- IP_ACC_N_yyyyMMdd_Hhmm.csv;
где N ‐ IP‐адрес Eltex-sorm2-replicator в HEX, с которого выгружается данный файл.
При выставлено флаге DPI в EMS, Eltex-sorm2-replicator добавляется атрибут Eltex-DPI-Step-logic и отправляет обогащенный трафик на указанный съемник, далее по данному флагу будет происходить анализ трафика на стороне DPI.
Важно!
Однако, в этом случае трафик все равно может быть отправлен на Глобальный съемник (global.clients в eltex-sorm2-replicator.json), если хотя бы один из них настроен в конфигурации. Глобальный съемник получает весь трафик, обрабатываемый sorm2-relicator'ом.
3 Описание пакета Eltex-radius-sorm3
Eltex-radius-sorm3 является дополнительным модулем системы SoftWLC. Основная задача данного модуля – подготовка и выгрузка данных об абонентах и базовых станциях на FTP сервер для системы ИС СОРМ «Январь» (МФИ-СОФТ). Работу данного модуля можно разделить на две части:
- Выгрузка данных об абонентах и WIFI-базовых станциях из системы SoftWLC.
Доступ к базе данных, в которой хранится информация об абонентах осуществляется через общий Northbound-интерфейс системы, по протоколу SOAP/XML (спецификация представлена в отдельном документе). Доступ к данному API – это обязательное условие работы модуля Eltex-radius-sorm3. Настройка доступа (URL) производится в системных настройках модуля. Запрос информации производится раз в сутки в 04:00.
Информация об hotspot абонентах выгружается в файлы:
- ABONENTS_yyyyMMdd_Hhmm.csv;
- ABONENTS_ID_yyyyMMdd_Hhmm.csv.
Информация об enterprise абонентах выгружается в файлы:
- ABONENTS_ ENTERPRISE_yyyyMMdd_Hhmm.csv;
- ABONENTS_ ENTERPRISE_ID_yyyyMMdd_Hhmm.csv.
Информация о ваучерах выгружается в файлы:
- ABONENTS_ VOUCHER_yyyyMMdd_Hhmm.csv
- ABONENTS_ VOUCHER_ID_yyyyMMdd_Hhmm.csv.
Информация о WIFI-базовых станциях выгружается в файлы:
- BASE_STATION yyyyMMdd_Hhmm.csv;_
- BASE_STATION_IP yyyyMMdd_Hhmm.csv;_
- BASE_STATION_WIFI_ANTENNA yyyyMMdd_Hhmm.csv;_
- BASE_STATION_WIFI_WRL yyyyMMdd_Hhmm.csv._
Тип выгрузки – инкрементальный. В первой выгрузке содержатся все записи, в последующих измененные и новые записи. Данные о базовых станциях выгружаются каждый раз в полном объеме.
2. Загрузка сформированных данных на FTP сервер.
4 Подключение репозитория
Добавление ключа
# sudo wget -O - http://archive.eltex.org/wireless/repo.gpg.key | sudo apt-key add -
Добавление softwlc-1.27-xenial:
# echo "deb http://archive.eltex.org/wireless/ softwlc-1.27-xenial main" >> /etc/apt/sources.list.d/eltex.list
5 Настройка Eltex-sorm2-replicator
5.1 Установка и настройка Eltex-sorm2-replicator
Установку нужно производить на ОС: Linux Ubuntu Server 18.04 x64 LTS. Для корректного формирования выгрузок, нужно настроить время и часовой пояс. Для работы модуля необходимо установить Oracle JDK8.
Для установки Oracle JDK8 нужно выполнить следующие команды:
$ sudo apt install openjdk-8-jdk
Проверяем версию java:
tester@ubuntu:~$ java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
Установка пакета:
Обновляем список пакетов
# apt update
Устанавливаем пакет
# apt install eltex-sorm2-replicator
После установки пакет нужно настроить и перезапустить сервис. При обновление пакета требуется ручной запуск. Конфигурационный файл лежит в директории /etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json
{ "acct.address" : "0.0.0.0", "acct.port" : [41813], "acct.receive.buffer.byte" : 134217728, "web.monitoring.port" : 7071, "cluster.enable" : false, "cluster.eventBusPort" : 5802, "radius" : { "url": "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.ems" : { "url": "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.wireless" : { "url": "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.sorm2" : { "url": "jdbc:mysql://localhost/eltex_sorm2?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.pcrf" : { "url": "jdbc:mysql://localhost/eltex_pcrf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "global.clients" : { "enabled" : false, "clients" : [ { "host" : "127.0.0.1", "port" : 11813, "secret": "eltex" } ] }, "sorm3" : { "enabled" : true, "host" : "127.0.0.1", "port" : 21, "period_s" : 900, "user" : "ftp", "pass" : "ftp", "acct_dir" : null }, "sorm2" : { "enabled" : true, "federated" : false }, "dpi.step.logic" : { "enabled" : false, "verbose" : false } }
- Блок «radius» содержит адрес подключения к БД radius в MySQL;
- Блок «sql.ems» содержит адрес подключения к БД eltex_ems в MySQL;
- Блок «sql.wireless» содержит адрес подключения к БД wireless в MySQL;
- Блок «sql.sorm2» содержит адрес подключения к БД sorm2 в MySQL;
- Блоке «sql.pcrf» содержит адрес подключения к БД pcrf в MySQL;
- Блок «global.clients» активирует пересылку входящего потока RADIUS accounting на дополнительный сервер;
- Блок «sorm3» содержит настройки для подключения к FTP серверу;
- Блок «sorm2» активирует пересылку копии RADIUS accounting на региональные съемники. Активация требуется если оригинальные RADIUS accounting не проходит через съемник.
- "federated" : true/false, при включенной опции ищет съемники которые были заданны в личном кабинете в "Настройки" , затем вкладка "СОРМ-2"
- Блок «dpi.step.logic» активирует обогащение траффика для DPI.
enabled=false - не вычитывает SSID, высылает все пакеты, не подставляет новые статусы
enabled=true - вычитывает SSID, подcтавляет аргументы dpi и cms в radiusverbose=false - высылает пакет только если dpi = 1 (точка и ссид)
verbose=true - всегда высылает пакет, в пакете значения dpi 0 или 1
Для корректной работы модуля нужно изменить адреса подключения к БД и FTP серверу.
Eltex-sorm2-replicator распределяет файл в папках FTP сервера по дням, чтобы не столкнуться с проблемой Все файлы в одной директории на FTP. Имя директории имеет вид yyyyMMdd (годМесяцДень). Если бы все файлы сохранялись в одной директории, то рано или позно мы бы уперлись в Maximum number of files per directory, значение которого варьируется в зависимости от типа файловой системы, или банальные неудобства (задержки) при навигации по файлам. Таким образом путь к файлу будет иметь вид yyyyMMdd/file.csv. Корневую директорию для файлоы на FTP сервере можно изменить в параметре acct_dir. Например, acct_dir: ACCO. Тогда путь к файлу будет иметь вид ACCO/yyyyMMdd/file.csv. По умолчанию acct_dir: null, путь к файлу yyyyMMdd/file.csv.
5.2 Настройка состава колонок в выгрузке IP_ACC_N_yyyyMMdd_Hhmm.csv
Для изменения списка колонок нужно внести изменения в конфигурационный файл /etc/eltex-sorm2-replicator/sorm3-columns.json и перезапустить сервис Eltex-sorm2-replicator.
Содержимое файла /etc/eltex-sorm2-replicator/sorm3-columns.json :
{ "CONNECTION_TIME": true, "REGION_ID": true, "POINT_ID": true, "LOGIN_TYPE": true, "SESSION_ID": true, "ALLOCATED_IPV4": true, "ALLOCATED_IPV6": true, "USER_NAME": true, "CONNECT_TYPE": true, "CALLING_NUMBER": true, "CALLED_NUMBER": true, "NAS_IPV4": true, "NAS_IPV6": true, "NAS_IP_PORT": true, "IN_BYTES_COUNT": true, "OUT_BYTES_COUNT": true, "USER_PASSWORD": true, "USER_EQ_MAC": true, "USER_EQ_VPI": true, "USER_EQ_VCI": true, "APN": true, "SGSN_IPV4": true, "SGSN_IPV6": true, "GGSN_IPV4": true, "GGSN_IPV6": true, "SERVICE_AREA_CODE": true, "LAC_START": true, "CELL_START": true, "TA_START": true, "WL_CELL_START": true, "WL_MAC_START": true, "LAC_END": true, "CELL_END": true, "TA_END": true, "WL_CELL_END": true, "WL_MAC_END": true, "PHONE_CARD_NUMBER": true, "IMSI": true, "IMEI": true, "ESN": true, "POOL": true, "L2_INTERFACE": false }
По умолчанию включены все колонки кроме "L2_INTERFACE".
5.3 Настройка уведомлений при перезапуске сервиса Eltex-sorm2-replicator
Устанавливаем пакет mailutils ssmtp. Настраиваем адрес smtp сервера и логин/пароль для доступа к нему в /etc/ssmtp/ssmtp.conf
hostname=vagrant-ubuntu-xenial-64
mailhub=mail.eltex.nsk.ru
AuthUser=tester@eltex.nsk.ru
AuthPass=tester
UseTLS=NO
UseSTARTTLS=NO
Настраиваем адрес отправителя в /etc/ssmtp/revaliases:
root:tester@eltex.nsk.ru:mail.eltex.nsk.ru:25
Настраиваем адрес назначения в /etc/default/eltex-sorm2-replicator
#Send notification
NOTIFICATION_ADDR= "email@tester.ru"
Для проверки нужно остановить eltex-sorm2-replicator
service eltex-sorm2-replicator stop
Выполнить скрипт /usr/lib/eltex-sorm2-replicator/check.sh, сервис должен запустится, на адрес назначения придет уведомление.
5.4 Настройка пересылки RADIUS accounting
5.4.1 Пересылка средствами сервиса eltex-pcrf (рекомендуемый способ)
Для настройки пересылки аккаунтинга с помощью eltex-pcrf нужно включить пересылку в конфигурации сервиса и выполнить перезапуск сервиса.
Если pcrf установлен как deb-пакет:
"acct.sorm.address" : "<IP Адрес хоста с sorm2 replicator>", "acct.sorm.port" : 41813, "acct.sorm.mirroring.enabled" : true,
Если сервис eltex-pcrf запущен в виде докер-контейнера
PCRF_acct.sorm.address=<IP хоста Sorm2> PCRF_acct.sorm.port=41813 PCRF_acct.sorm.mirroring.enabled=true
Далее нужно выполнить перезапуск сервиса
sudo service eltex-pcrf restart
sudo ./eltex-softwlc-helper-docker_1.33.sh --recreate-service eltex-pcrf
5.4.2 Пересылка с помощью IP-Tables
На серверах принимающих RADIUS accounting нужно настроить пересылку в Eltex-sorm2-replicator, при помощи набора правил iptables. Данные правила копируют оригинальный пакет пришедший на DST порт 1813 или 31813 и отправляют его на DST порт 41813 в Eltex-sorm2-replicator. У исходящего пакета производится подмена SRC и DST IP-адресов.
Настройку производим на RADIUS-серверах SoftWLC (Eltex-pcrf и Eltex-radius). Создаем файл IPTables-sorm2 с содержимым:
*raw #-A OUTPUT -p udp --sport 1813 -j LOG --log-prefix "raw output : " # отключаем обработку пакетов от локальных процессов conntrack`ом -A OUTPUT -p udp --sport 1813 -j NOTRACK -A OUTPUT -p udp --sport 31813 -j NOTRACK COMMIT *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1813 -m mark --mark 1 -j MARK --set-mark 2 -A PREROUTING -p udp --dport 31813 -m mark --mark 1 -j MARK --set-mark 2 -A PREROUTING -p udp --dport 1813 -m mark --mark 0 -j MARK --set-mark 1 -A PREROUTING -p udp --dport 31813 -m mark --mark 0 -j MARK --set-mark 1 -A PREROUTING -p udp --dport 1813 -m mark --mark 1 -j TEE --gateway 127.0.0.1 -A PREROUTING -p udp --dport 31813 -m mark --mark 1 -j TEE --gateway 127.0.0.1 #-A OUTPUT -p udp --dport 1813 -j LOG --log-prefix "mangle output : " COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # Подменяет destination в маркированном пакете для sorm2 # send to other host # 211 - сорм2 # 213 - этот хост -A PREROUTING -p udp --dport 1813 -m mark --mark 1 -j DNAT --to 192.168.107.211:41813 -A PREROUTING -p udp --dport 31813 -m mark --mark 1 -j DNAT --to 192.168.107.211:41813 -A POSTROUTING -p udp --dport 41813 -m mark --mark 1 -j SNAT --to 192.168.107.213 COMMIT
Где:
192.168.107.211 – IP-адрес Eltex-sorm2-replicator
192.168.107.213 – IP-адрес RADIUS-сервера SoftWLC
Корректируем IP-адреса и загружаем правила из файла IPtables-sorm2:
# iptables-restore < IPTables-sorm2
Для сохранения изменений после перезагрузки сервера, нужно установить пакет, а затем выполнить команду:
# apt-get install iptables-persistent # service iptables-persistent save
Для включения маршрутизации ip пакетов нужно в файле /etc/sysctl.conf раскомментировать строку
sysctl net.ipv4.ip_forward=1
Применить изменения
# sudo sysctl -p
5.5 Настройка Eltex-radius-nbi
Для активации подключения к БД mongo
5.5 Настройка Eltex-radius-nbi
Для активации подключения к БД SORM2 и подключения к API интерфейсу Eltex-sorm2-replicator, в конфигурационном файле "radius_nbi_config.txt" необходимо исправить следующие строки:
/etc/eltex-radius-nbi/radius_nbi_config.txt
Нужно активировать подключение к БД SORM2 и подключение к API интерфейсу Eltex-sorm2-replicator
# Eltex.SORM2.replicator MariaDB 'sorm2' connect sorm2.jdbc.driver=org.gjt.mm.mysql.Driver sorm2.jdbc.dbUrl=jdbc:mysql://localhost:3306/eltex_sorm2?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 sorm2.jdbc.username=javauser sorm2.jdbc.password=javapassword sorm2.jdbc.maxPoolSize=48 sorm2.jdbc.inUse=yes # Eltex.SORM2.replicator host to use API sorm2.enabled=true sorm2.url=http://100.110.3.80:7071 sorm2.username=admin sorm2.password=password
Для применения конфигурации нужно перезапустить nbi:
sudo service eltex-radius-nbi restart
5.6 Настройка IP-адресов региональных съемников в ЛК B2B
Для корректно работы Eltex-sorm2-replicator, для всех доменов в которых расположены RADIUS клиенты, нужно задать IP-адреса съёмников, данная настройка производится в Личном кабинете B2B.
Для активации меню настройки нужно перейти в меню Настройки-> Система-> Система и активировать настройку «Настройка СОРМ-2 в «Дереве доменов»». Для применения, перезайти в Личный кабинет B2B.
Создаем профиль. Переходим во вкладу "СОРМ-2" и нажимаем кнопку "Добавить"
Далее заполняем все поля. "Кодовое слово" - кодовое слово radius, будет передаваться вместе с атрибутами radius. Данные профилей сохраняются в БД eltex_sorm2.profiles.
1. "Имя" : имя съемника, обязательный параметр, после сохранения его изменить нельзя.
2. "Описание" : произвольное описание, не обязательно.
3. "Домен" : домен видимости, обязательный параметр.
4. "IP" : IP адрес назначения, обязательный параметр.
5. "Порт" : порт назначения, обязательный параметр.
6. "Кодовое слово" : кодовое слово radius, не обязательный параметр.
Далее необходимо наш профиль закрепить в "Дереве доменов" за доменом. Выбираем домен за которым хотим закрепить профиль и нажимаем справа на иконку в колонке "СОРМ-2":
В открывшемся окне выбираем ранее добавленный съемник съемник:
и нажимаем "Сохранить". Данные привязок профилей к доменам сохраняются в БД eltex_sorm2.links. Один съемник может быть использован многократно в различных доменах.
После назначения съемника на домен он не может быть удален. При попытке удалить съемник возникнет ошибка:
Перед удалением съемника необходимо отвязать его от всех доменов, где он используется.
6 Настройка Eltex-radius-sorm3
6.1 Установка Eltex-radius-sorm3
Установку нужно производить на ОС: Linux Ubuntu Server 18.04 x64 LTS. Для корректного формирования выгрузок, нужно настроить время и часовой пояс. Для работы модуля необходимо установить Oracle JDK8.
Для установки Oracle JDK8 нужно выполнить следующие команды:
$ sudo apt install openjdk-8-jdk
Проверяем версию java:
tester@ubuntu:~$ java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
Увеличиваем размер буфера сетевых соединений и применяем изменения:
Установка пакета:
Обновляем список пакетов
# apt update
Устанавливаем пакет
# apt install eltex-radius-sorm3
6.2 Настройка Eltex-radius-sorm3
Конфигурационный файл лежит в директории
/etc/eltex-radius-sorm/eltex-radius-sorm3.conf
Содержимое конфигурационного файла:
[radius-data] app_name=eltex-radius-sorm3-federal.jar nbi_ip=localhost nbi_port=8080 auth_username=admin auth_password=password export_path=/var/log/eltex-radius-sorm3/export_data domain= ftp_url=ftp://admin:password@192.168.0.1:/ftp/ start_count=128 max_count=1024 skip_with_regionId_eq_0=true
Где:
- nbi_ip – IP-адрес сервера с Eltex-radius-nbi;
- nbi_port – порт SOAP/XML Eltex-radius-nbi;
- auth_username – логин;
- auth_password – пароль;
- ftp_url – настройки доступа до ftp серверам;
- start_count – начальное число записей запрашиваемых при старте, если скорость получения данные высокая число увеличивается в процессе работы;
- max_count – максимальное число записей запрашиваемых за один запрос;
- skip_with_regionId_eq_0 - пропускать домены с пустым полем REGION_ID.
Выгрузка запускается раз в сутки в 04:00.
Для изменения интервала выгрузки нужно отредактировать задание в CRON:
cat /etc/cron.d/sorm_export MAILTO="" 00 4 * * * root /usr/share/eltex-radius-sorm3/export_sorm.sh
Важно!
Рекомендуется выбрать период наименьшей загрузки сети и минимизировать возможность пересечения с другими мониторами EMS и cron softwlc.
6.3 Настройка системы управления EMS
6.3.1 Настройка поля «Регион»
Для корректной выгрузки поля REGION_ID в справочники, нужно заполнить поле «Регион» в свойствах домена. Для данного поля работает наследование сверху вниз. Поиск региона проходит от нижестоящего узла к вышестоящему, при нахождение первого узла с заполненным регионом поиск прекращается. Для заполнения поля регион нужно перейти в меню «Домены», Администрирование-> Права и пользователи-> Домены, и отредактировать домен.
Заполнение нужно произвести до запуска первой выгрузки, так как полный список абонентов выгружается при первой выгрузке, в последующих выгрузкаx только измененные и новые записи. Если поле заполнить после первой выгрузки, то для выгруженных записей оно будет пустым.
6.3.2 Заполнение геоданных объектов
Для выполнение требований по СОРМ нужно заполнить адрес установки и географические координаты у ТД.
В привязках правил инициализации ТД добавлены новые поля «Широта» и «Долгота», при добавление нового правила эти поля обязательные для заполнения. Координаты нужно вводить в формате «37.587614». Для заполнения адреса можно воспользоваться функционалом заполнения по КЛАДРу (кнопка «Заполнить местоположение»), если адрес уже заполнен и нужны только географические координаты можно воспользоваться функционалом заполнения геокоординат (кнопка «Заполнения геокоординаты»). Функционал автоматического заполнения местоположения и геокоординат требует доступ до одного серверов:
- КЛАДР (http://kladr-api.ru/api.php);
- Google(https://maps.googleapis.com/maps/api/geocode/json);
- Yandex(https://geocode-maps.yandex.ru/1.x/);
так как запросы идут с сервера EMS. Выбор системы для геокодирования осуществляется в системных модулях EMS, по умолчанию используется Google.
Альтернативный способ получение координаты через https://yandex.ru/maps или https://www.google.ru/maps
Для активации, геоданных объектов и сделать поля обязательным для заполнения. необходимо выставить флаги «Включить геоданные объектов» и «Включить обязательность геоданных объектов» в системных модулях EMS
Информация в Привязках инициализации и вкладке Доступ меняется синхронно. Изменение в одном месте, автоматически изменяет данные в другом. Повторная инициализация ТД, добавленных до включения блока геоданных, не требуется.
6.3.3 Заполнение поля Framed-IP-Address для WPA Enterprise на ТД «Элтекс»
Для заполнения поля Framed-IP-Address в start пакетах RADIUS accounting нужно включить опцию «Accounting wait IP» в настройках SSID с типом авторизации WPA Enterprise. Данная опция активирует отправку start пакет только после получения IP-адреса клиентом.
6.3.4 Активация монитора синхронизации устройств
Для корректной выгрузки информации о базовых станциях, должен работать монитор синхронизации устройств.
6.3.5 Настройка DPI (Step Logic)
Чтобы включить DPI, необходимо активировать его на точке доступа и на SSID.
Активация DPI на точке доступа.
- Первый способ
Включить DPI на конкретной точке доступа, для этого необходимо:- Выбрать точку доступа и перейти во вкладку "Доступ"
- Нажать кнопку "Редактировать" и установить флаг DPI (Step Logic), затем "Принять" установленные изменения
- Второй способ
Данный способ подходит для группового включения на нескольких точках.- Перейти в необходимы домен (в примере addr1)
- Затем во вкладке "Список устройств", выбрать устройства на которых нужно включить DPI. Для удобства выборки устройств, их можно отсортировать по типу.
- Далее в "Групповых операциях" находим "Смена параметров Доступ'' и нажимаем "Выполнить"
- Устанавливаем 2 флага и жмем "Применить"
DPI Включен
DPI Выключен
- Перейти в необходимы домен (в примере addr1)
После этого на всех выбранных точках доступа будет включен DPI, далее необходимо включить его на SSID.
Активация DPI в SSID
- Переходим в "Менеджер SSID"
2. Выбираем SSID на котором хотим включить DPI, и нажимает "Редактировать"
3. Включаем "DPI (Step Logic)" и применяем изменения.
4. Далее необходимо обновить информацию на точках доступа, перейдем в "Привязки SSID", выберем SSID в котором мы установили флаг и нажмем
Способ создания SSID с включенным DPI через NBI
Данный способ подходит для группового включения на точках с помощью скриптов, путем создания SSID с включенным параметром DPI Step Logic с помощью API NBI.
В данном примере создается SSID с режимом безопасности wpa personal.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nbi="http://nbi.radius.eltex.org" xmlns:xsd="http://response.object.nbi.radius.eltex.org/xsd"> <soapenv:Header/> <soapenv:Body> <nbi:CreateSSID> <!--Optional:--> <nbi:name>Test_wpa</nbi:name> <!--Optional:--> <nbi:domain>root</nbi:domain> <!--Optional:--> <nbi:descr></nbi:descr> <!--Zero or more repetitions:--> <nbi:params> <xsd:name>DPI_Step_Logic</xsd:name> <xsd:value>true</xsd:value> </nbi:params> <nbi:params> <xsd:name>Security_Type</xsd:name> <xsd:value>1</xsd:value> </nbi:params> <nbi:params> <xsd:name>Broadcast_Key_Refresh_Rate</xsd:name> <xsd:value>0</xsd:value> </nbi:params> <nbi:params> <xsd:name>VAP_Status</xsd:name> <xsd:value>up</xsd:value> </nbi:params> <nbi:params> <xsd:name>Radio</xsd:name> <xsd:value>ALL</xsd:value> </nbi:params> </nbi:CreateSSID> </soapenv:Body> </soapenv:Envelope>
Подробнее про NBI можете прочесть по ссылке: http://ubuntu:8080/eltex-radius-nbi/asciidoc/
Настройка DPI на этом заканчивается.
Примеры настройки:
- Включить DPI для всех SSID на всех точках доступа.
- Через "Список устройств" в домене выбрать все точки доступа и включить на них DPI.
- Через "Менеджер SSID" включить на всех SSID DPI, и нажать кнопку исправить.
- Включить DPI для конкретных SSID на всех точках доступа.
- Через "Список устройств" в домене выбрать все точки доступа и включить на них DPI.
- Через "Менеджер SSID" выбрать необходимый SSID, включить DPI, и нажать кнопку исправить.
- Включить DPI для всех SSID на конкретных точках доступа клиента.
- Через "Список устройств" в домене выбрать нужные точки доступа и включить на них DPI, или во вкладке "Доступ" на каждой точке включить DPI.
- Через "Менеджер SSID" включить на всех SSID DPI, и нажать кнопку исправить.
- Включить DPI для конкретного SSID на конкретных ТД.
- Через "Список устройств" в домене выбрать нужные точки доступа и включить на них DPI, или во вкладке "Доступ" на каждой точке включить DPI.
- Через "Менеджер SSID" выбрать необходимый SSID, включить DPI, и нажать кнопку исправить.
Пример трафика с включенным и выключенным DPI
DPI выключен.
DPI включен.
6.4 Настройка Eltex-radius-nbi
В конфигурационном файле
/etc/eltex-radius-nbi/radius_nbi_config.txt
Нужно активировать параметр sorm3.enabled
#It enables records export to SORM3 while editing wifi users sorm3.enabled=true
Для применения конфигурации нужно перезапустить Tomcat7
# service tomcat8 restart
Этот параметр активирует:
- Выгрузку изменений в учетных записях пользователей Wi-Fi
- Проверку наличия данных об операторе (ФИО) при создании и редактировании учетных записей пользователей Wi-Fi
6.5 Настройка Конструктора порталов
После активации параметра sorm3.enabled, взаимодействие с NBI под учетной записью по умолчанию (admin) будет запрещено, если у записи не заполнены обязательные поля(ФИО, номер телефона). Для корректной работы портала нужно использовать служебную запись softwlc_service/softwlc для взаимодействие с NBI. Для изменения данных доступа к NBI, нужно в конструкторе порталом перейти на вкладку «Доступ к NBI» и прописать новые данные.
6.5 Настройка Личного кабинета B2B
6.6.1 Заполнение обязательных полей у администраторов ЛК B2B
Поля ФИО и номер телефона стали обязательными у учетных записей администраторов ЛК B2B. При создании/редактировании пользователей Wi-Fi, фиксируются данные администратора, который внес изменения в учетную запись. Если поля не заполнены, то администратор не сможет редактировать и создавать учетные записи пользователей Wi-Fi.
Для заполнения данных нужно перейти на вкладку Настройка->Системные пользователи, выбрать учетную запись и заполнять обязательные поля.
6.6.2 Заполнение обязательных полей у пользователей Enterprise
Для выполнения требований СОРМ, необходимо заполнить обязательные поля у учетных записей пользователей Enterprise. Для корректирования текущих записей нужно в личном кабинете B2B открыть запись для редактирования и заполнить соответствующие поля.
7 Рекомендации по распределению модулей
Модули Eltex-sorm2-replicator и Eltex-radius-sorm3 можно расположить на одном сервере. Для высоконагруженных систем нужно использовать кластер из двух и более нод Eltex-sorm2-replicator. В кластере весь RADIUS трафик приходит на определенную ноду Eltex-sorm2-replicator , а обработка делится между остальными участниками. Eltex-radius-sorm3 нужно запускать только на одной ноде.
8 Настройка кластера Eltex-sorm2-replicator
Для настройки кластера нужно подготовить второй сервер аналогично первому, настройка описана в п. 4. Между серверами Eltex-sorm2-replicator нужно открыть порты 5701 tcp, 5801 tcp На серверах в файлах конфигурации /etc/eltex-sorm2-replicator/hazelcast-cluster.xml нужно:
- указать адреса сетевых интерфейсов в блоке network:
public-address - адрес самого сервера;
interface - адрес сети, где нужно искать участников кластера в режиме multicast;
member - адрес всех членов кластера ). - Отключить multicast и включить tcp-ip режим обнаружения.
<network> <!-- Write here public address of the node --> <public-address>192.168.0.1</public-address> <port auto-increment="false" port-count="100">5702</port> <outbound-ports> <ports>0</ports> </outbound-ports> <join> <multicast enabled="true"> <trusted-interfaces> <interface>192.168.26.*</interface> </trusted-interfaces> </multicast> <tcp-ip enabled="false"> <!-- Write here IP of all members of the cluster (including this) --> <member>192.168.0.1</member> <member>192.168.0.2</member> </tcp-ip> <discovery-strategies> </discovery-strategies> </join> <interfaces enabled="true"> <!-- Write here IP of the interface to use for cluster --> <interface>192.168.0.1</interface> </interfaces> <ssl enabled="false"/> <socket-interceptor enabled="false"/> <symmetric-encryption enabled="false"> <algorithm>PBEWithMD5AndDES</algorithm> <!-- salt value to use when generating the secret key --> <salt>thesalt</salt> <!-- pass phrase to use when generating the secret key --> <password>thepass</password> <!-- iteration count to use when generating the secret key --> <iteration-count>19</iteration-count> </symmetric-encryption> </network>
В конфигурации /etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json нужно разрешить запуск кластера:
"cluster.enable" : true,
Для проверки кластера, нужно перейти в открыть веб интерфейс Eltex-sorm2-replicator http://ubuntu:7071/system. Пример вывода:
{ "key" : "PcrfErrorCode.success", "message" : "Success", "code" : 0, "args" : [ ], "data" : { "version" : "1.8-162 (20171017-1233)", "java_memory" : { "used" : 40, "free" : 267, "total" : 308, "max" : 455 }, "java" : { "vendor" : "Oracle Corporation", "title" : "Java Runtime Environment", "version" : "1.8.0_144" }, "system" : { "cpu" : 6 }, "vertx" : { "clustered" : true }, "hazelcast" : { "cluster" : { "members" : { "192.168.107.211" : { "local" : true }, "192.168.107.212" : { "local" : false } }, "state" : "ACTIVE" } } } }
В списке hazelcast должны присутствовать все ноды.
Важно!
Большая часть параметров кэшируется и инвалидируется только по времени.
таблица | time to live (TTL) в кэше | инвалидация кэша по запросу |
eltex_sorm2 sorm2.profiles | 1200 с | evict после редактирования, удаления в NBI |
eltex_sorm2.links | 1200 с | evict после добавления, удаления в NBI |
информация об объекте (ap domain, dpi, cms) MySQL eltex-ems.ELTEX_OBJ_GEO | 600 c | нет |
информация о домене (region_id) MySQL eltex-ems.DOMAINS, DOMAIN_PARAMS | 600 с | нет |
подсети (ap domain) eltex_pcrf.subnets | 600 с | нет |
ssid (dpi) MySQL wireless.SSID, SSID_PARAMS | 600 c | нет |
Там где инвалидации кэша по запросу нет, запись будет жить со старыми параметрами в течение TTL, потом удалиться и при следующем обращении заново закачается из БД с новыми параметрами. То есть параметры DPI например, применяются не мгновенно, а в ближайшие 600 секунд.