Описание и настройка [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:dpi_components:radius:radius_requirements [2025/08/29 08:07] – [Администрирование FastRADIUS] elena.krasnobryzhdpi:dpi_components:radius:radius_requirements [2025/11/06 07:57] (текущий) – [Рекомендуемая схема: Прием трафика RADIUS Accounting на выделенный Linux-интерфейс не связанный с FastDPI] atereschenko
Строка 1: Строка 1:
-====== Описание ======+====== Описание и настройка ======
 {{indexmenu_n>1}} {{indexmenu_n>1}}
 FastRADIUS (Монитор событий RADIUS) предназначен для создания в DPI связки IP-LOGIN в сетях с динамической выдачей IP-адресов на основании RADIUS Accounting (Mapping IP-LOGIN). \\ FastRADIUS (Монитор событий RADIUS) предназначен для создания в DPI связки IP-LOGIN в сетях с динамической выдачей IP-адресов на основании RADIUS Accounting (Mapping IP-LOGIN). \\
 FastRADIUS поддерживает в FastDPI следующие команды: \\ FastRADIUS поддерживает в FastDPI следующие команды: \\
-1. [[dpi:dpi_components:platform:subscriber_management:dpi_dynamicip|Поддержка абонентов с одиночным IPv4 адресом и IPv6 подсетью]] \\ +  - [[dpi:dpi_components:platform:subscriber_management:dpi_dynamicip|Поддержка абонентов с одиночным IPv4 адресом и IPv6 подсетью]] \\ Связывание IP-адреса с LOGIN при получении Accounting Start:<code bash>fdpi_ctrl load --bind --user user_name:ip_адрес</code> Удаление связки IP <-> login при получении Accounting Stop: <code bash>fdpi_ctrl del --bind --login user_name</code>   
-Связывание IP адреса с LOGIN: +  [[dpi:dpi_components:platform:subscriber_management:dpi_ipmulti|]] \\ Связывание IP-адреса или блока IP-адресов с LOGIN при получении Accounting Start: <code bash>fdpi_ctrl load --bind_multi --user user_name:ip_адрес_или_блок</code> Удаление одного из IP, связанных с LOGIN при получении Accounting Stop:<code bash>fdpi_ctrl del --bind_multi --ip ip_адрес</code>  
-<code bash> +
-fdpi_ctrl load --bind --user user_name:ip_адрес +
-</code>   +
- +
-Удаление связки IP <-> login: +
-<code bash> +
-fdpi_ctrl del --bind --login user_name +
-</code>   +
- +
-2. [[dpi:dpi_components:platform:subscriber_management:dpi_ipmulti|]] \\ +
-Связывание IP адреса или блока IP адресов с LOGIN: +
-<code bash> +
-fdpi_ctrl load --bind_multi --user user_name:ip_адрес_или_блок +
-</code>   +
- +
-Удаление одного из IP, связанных с LOGIN: +
-<code bash> +
-fdpi_ctrl del --bind_multi --ip ip_адрес +
-</code>   +
- +
-Так же возможно назначение CGNAT (11 услуги) по заданным параметрам. +
- +
  
 +Также возможно назначение CG-NAT ([[dpi:opt_cgnat|11 услуги]]) по заданным параметрам.
  
 ====== Схемы работы ====== ====== Схемы работы ======
 ===== Рекомендуемая схема: Прием трафика RADIUS Accounting на выделенный Linux-интерфейс не связанный с FastDPI ===== ===== Рекомендуемая схема: Прием трафика RADIUS Accounting на выделенный Linux-интерфейс не связанный с FastDPI =====
-RADIUS Accounting передается на FastRADIUS на стандартный Linux-интерфейс, указанный в конфигурационном файле (in_dev), путем зеркалирования существующего RADIUS трафика, либо с использованием RADIUS proxy (например freeRADIUS). В данном случае FastRADIUS только принимает зеркало и никак не отвечает RADIUS серверу.  +RADIUS Accounting передается на FastRADIUS на стандартный Linux-интерфейс, указанный в конфигурационном файле (''in_dev''), путем зеркалирования существующего RADIUS трафика, либо с использованием RADIUS proxy (например [[dpi:dpi_components:freeradius|FreeRADIUS]]). В данном случае FastRADIUS только принимает трафик и никак не отвечает RADIUS серверу.  
-Работа со стандартными интерфейсами Linux осуществляется с помощью libpcap.+Работа со стандартными интерфейсами Linux осуществляется с помощью ''libpcap''. Поддерживается прием и обработка RADIUS трафика в виде unicast-потока, который отправляет коммутатор по ERSPAN.
  
 +{{ :dpi:dpi_components:radius:recommended_scheme.png?nolink&600 |}}
  
 ==== Минимальная Настройка FastRADIUS ==== ==== Минимальная Настройка FastRADIUS ====
 +Настройки находятся в файле ''/etc/dpi/fdpi_radius.conf''.
  
-Настройки находятся в файле **/etc/dpi/fdpi_radius.conf.** 
 Для применения конфигурации необходимо перезапустить сервис: Для применения конфигурации необходимо перезапустить сервис:
-<code> +<code bash>systemctl restart fastradius</code>
-systemctl restart fastradius +
-</code> +
-''in_dev=eth0'' — имя прослушиваемого Linux-интерфейса \\ +
-''rad_acct_port=1813,1814,1815'' — номер прослушиваемого порта (или список портов через запятую) с пакетами Radius Accounting \\ +
-''save_pdu_proto=0'' — сохранять в pcap формате PDU для анализа. Задается битовой маской:\\ +
-  * 0x00 - ничего не писать \\ +
-  * 0x01 - битые/не разобранные RADIUS пакеты \\ +
-  * 0x02 - все RADIUS пакеты \\ +
-  * 0x04 - битые/не разобранные DIAMETER пакеты \\ +
-  * 0x08 - все DIAMETER \\ +
-  * 0x10 - битые TACACS+ пакеты \\ +
-  * 0x20 - все TACACS+ пакеты \\ +
-''rad_check_code_pdu=2:4'' — анализировать PDU с кодом 2 и 4 \\ +
-''rad_check_acct_status_type=1:3'' — анализировать PDU со статусом 1 и 3 \\ +
-''mem_preset=1'' — инициализировать память при старте \\ +
-''fdpi_servers=127.0.0.1:29000,123.45.67.85:29000'' — список DPI серверов, на которые отправлять данные, где 29000 управляющий порт по умолчанию \\+
  
-Настройка обработки потоков (рекомендуется использовать приведенные значения): +  * ''in_dev=eth0'' — имя прослушиваемого Linux-интерфейса 
-''num_threads=1''\\ +  * ''rad_acct_port=1813,1814,1815'' — номер прослушиваемого порта (или список портов через запятую) с пакетами Radius Accounting 
-''rx_bind_core=0''\\ +  * ''save_pdu_proto=0'' — сохранять в pcap формате PDU для анализа. Задается битовой маской: 
-''services_bind_cores=0''\\ +    * ''0x00'' — ничего не писать 
-''engine_bind_cores=0''\\ +    * ''0x01'' — битые/не разобранные RADIUS пакеты 
-''fifo_bind_cores=0''\\ +    * ''0x02'' — все RADIUS пакеты 
-''snaplen=2000''\\ +    * ''0x04'' — битые/не разобранные DIAMETER пакеты 
-''timeout_alarm=5''\\ +    * ''0x08'' — все DIAMETER 
-''dbg_log_mask=0x31''\\+    * ''0x10'' — битые TACACS+ пакеты 
 +    * ''0x20'' — все TACACS+ пакеты 
 +  * ''rad_check_code_pdu=2:4'' — анализировать PDU с кодом (2) Request и (4) Accept 
 +  * ''rad_check_acct_status_type=1:3'' — анализировать PDU со статусом (1) Start, (2) Stop, (3) Interim-Update. Вне зависимости от установленных параметров пакеты с типом 2 (accounting stop) всегда обрабатываются. В случае если нужно отключить обработку accounting stop пакетов (не будет выполняться команда del - удаление связок IP-login в DPI), то нужно использовать параметр ''radius_acct_status_check_type=1,3''. В нем можно задать как перечисление номеров типов через запятую, так и диапазоны через дефис. Пример: radius_acct_status_check_type=1,3-5 . В данном случае будут обрабатывать radius accounting пакеты со статусом 1, 3, 4 и 5. **rad_check_acct_status_type имеет более низкий приоритет обработки чем radius_acct_status_check_type.**  
 +  * ''mem_preset=1'' — инициализировать память при старте 
 +  * ''fdpi_servers=127.0.0.1:29000,123.45.67.85:29000'' — список DPI серверов, на которые отправлять данные, где 29000 управляющий порт по умолчанию  
 + 
 +===Настройка обработки потоков=== 
 +<note tip>Рекомендуется использовать приведенные значения</note> 
 +  ''num_threads=1'' 
 +  ''rx_bind_core=0'' 
 +  ''services_bind_cores=0'' 
 +  ''engine_bind_cores=0'' 
 +  ''fifo_bind_cores=0'' 
 +  ''snaplen=2000'' 
 +  ''timeout_alarm=5'' 
 +  ''dbg_log_mask=0x31'' 
 + 
 +===Настройка экпорта RADIUS-событий на внешний коллектор=== 
 +  * ''ipfix_dev=eno8'' — имя Linux-интерфейса, с которого идет отправка IPFIX. [[dpi:dpi_components:radius:radmon_acct_ipfix|]]\\ 
 +  * ''ipfix_tcp_collectors=172.32.0.239:1502'' — адрес IPFIX коллектора
  
-Настройка экпорта RADIUS-событий на внешний коллектор:\\ 
-''ipfix_dev=eno8'' - имя Linux-интерфейса, с которого идет отправка IPFIX. [[dpi:dpi_components:radius:radmon_acct_ipfix|]]\\ 
-''ipfix_tcp_collectors=172.32.0.239:1502'' - адрес IPFIX коллектора 
 ===== Альтернативная схема: Отвод трафика RADIUS Accounting с DPDK-интерфейсов FastDPI ===== ===== Альтернативная схема: Отвод трафика RADIUS Accounting с DPDK-интерфейсов FastDPI =====
-Radius Accounting необходимо подать в порты устройства DPI вместе с сетевым трафиком. Реализовать это возможно через зеркалирование портов, к которым подключен RADIUS сервер. В данном случае FastRADIUS только принимает зеркало и никак не отвечает RADIUS серверу.+RADIUS Accounting необходимо подать в порты устройства DPI вместе с сетевым трафиком. Реализовать это возможно через зеркалирование портов, к которым подключен RADIUS сервер. В данном случае FastRADIUS только принимает зеркало и никак не отвечает RADIUS серверу. 
 ==== Настройка TAP интерфейсов ==== ==== Настройка TAP интерфейсов ====
 FastRADIUS может быть запущен на том же сервере, что и FastDPI или вынесен на внешний сервер. Для выделения нужного трафика используются два виртуальных интерфейса TAP0 и TAP1. FastRADIUS может быть запущен на том же сервере, что и FastDPI или вынесен на внешний сервер. Для выделения нужного трафика используются два виртуальных интерфейса TAP0 и TAP1.
 +
 В конфигурации необходимо указать порт: В конфигурации необходимо указать порт:
 <code bash> <code bash>
 in_dev=tap1 in_dev=tap1
 </code> </code>
-{{:dpi:dpi_components:radius:radius_config:radius_monitor_dpdk.png?600|Размещения Radius монитор на том же сервере. Используется Bridge.}}\\ + 
-**Размещения Radius монитор на том же сервере. Используется Bridge.**\\ +**Размещение Radius монитор на том же сервере. Используется Bridge:** 
-\\ + 
-\\ +{{ :dpi:dpi_components:radius:alternative_scheme_bridge.png?nolink&600 |}} 
-{{:dpi:dpi_components:radius:radius_config:radius_monitor_dpdk_tunnel.png?600|Размещения Radius монитор на внешнем сервере. Используется Tunnel.}}\\ + 
-**Размещения Radius монитор на внешнем сервере. Используется Tunnel.** +**Размещение Radius монитор на внешнем сервере. Используется Tunnel:** 
-  * TAP0 используется для отведения трафика + 
-  * TAP1 слушает Radius Monitor+{{ :dpi:dpi_components:radius:alternative_scheme_tunnel.png?nolink&700 |}} 
 + 
 +  * TAP0 — используется для отведения трафика 
 +  * TAP1 — слушает Radius Monitor
   * Между TAP0 и TAP1 создается Bridge или Tunnel для передачи трафика.   * Между TAP0 и TAP1 создается Bridge или Tunnel для передачи трафика.
   * На интерфейсе TAP0 отключается mac learning   * На интерфейсе TAP0 отключается mac learning
 +
 Из консоли выполнить следующие команды: Из консоли выполнить следующие команды:
-<code>+<code bash>
 ip tuntap add tap0 mode tap ip tuntap add tap0 mode tap
 ip tuntap add tap1 mode tap ip tuntap add tap1 mode tap
Строка 107: Строка 93:
 ifconfig br0 up ifconfig br0 up
 </code> </code>
 +
 <note warning>ВНИМАНИЕ: TAP интерфейсы необходимо стартовать после перезагрузки сервера!</note> <note warning>ВНИМАНИЕ: TAP интерфейсы необходимо стартовать после перезагрузки сервера!</note>
  
 ==== Настройка отведения трафика из FastDPI в FastRADIUS ==== ==== Настройка отведения трафика из FastDPI в FastRADIUS ====
 Подключить на FastDPI услугу отведения трафика: Подключить на FastDPI услугу отведения трафика:
-<code>+<code bash>
 fdpi_ctrl load profile --service 14 --profile.name radius  --profile.json '{ "typedev" : "tap","dev" : "tap0","udp" : [ 1813,1814,1815 ] }' --outformat=json  fdpi_ctrl load profile --service 14 --profile.name radius  --profile.json '{ "typedev" : "tap","dev" : "tap0","udp" : [ 1813,1814,1815 ] }' --outformat=json 
 fdpi_ctrl load --service 14 --profile.name radius --ip 10.16.252.11 fdpi_ctrl load --service 14 --profile.name radius --ip 10.16.252.11
Строка 117: Строка 104:
 </code> </code>
 где: где:
-  * 1813,1814,1815 порты, на которых передается Radius Accounting +  * ''1813,1814,1815'' — порты, на которых передается RADIUS Accounting 
-  * 10.16.252.11,10.16.252.12 IP адреса Radius серверов, с которых идет Radius Accounting+  * ''10.16.252.11''''10.16.252.12'' — IP-адреса RADIUS серверов, с которых идет RADIUS Accounting
  
 ===== Дополнительные Настройки Radius Monitor ===== ===== Дополнительные Настройки Radius Monitor =====
-rad_auth_port=1645 номер прослушиваемого порта (или список портов через запятую) с пакетами Radius Authentication\\ +  * ''rad_auth_port=1645'' — номер прослушиваемого порта (или список портов через запятую) с пакетами RADIUS Authentication\\ 
-bind_multi=true разрешить несколько IP на одном USER-NAME cмотри команду load --bind_multi, предупреждение: если порядок bind/unbind в радиус потоке не соблюдается или есть потери пакетов (например это зеркало), то вероятны артефакты+  * ''bind_multi=true'' — разрешить несколько IP на одном USER-NAME cмотри команду ''load --bind_multi'' 
 +<note important>Если порядок bind/unbind в RADIUS-потоке не соблюдается или есть потери пакетов (например, если это зеркало), то вероятны артефакты.</note>
  
 ==== Подлючение NAT на основе CIDR ==== ==== Подлючение NAT на основе CIDR ====
-Создаем на FastDPI именованные [[dpi:opt_cgnat:сgnat_settings|профили NAT]]: +Создание на FastDPI именованных [[dpi:opt_cgnat:сgnat_settings|профилей NAT]]: 
-<code>+<code bash>
 fdpi_ctrl load profile --service 11 --profile.name nat_profile_all --profile.json '{ "nat_ip_pool" : "5.200.43.0/24,5.200.44/25", "nat_tcp_max_sessions" : 2000, "nat_udp_max_sessions" : 2000 }' fdpi_ctrl load profile --service 11 --profile.name nat_profile_all --profile.json '{ "nat_ip_pool" : "5.200.43.0/24,5.200.44/25", "nat_tcp_max_sessions" : 2000, "nat_udp_max_sessions" : 2000 }'
 </code> </code>
-В конфигурационном файле FastRADIUS /etc/dpi/fdpi_radius.nat указываются диапазоны адресов и соотвествующие им имена профилей NAT + 
-<code>+В конфигурационном файле FastRADIUS ''/etc/dpi/fdpi_radius.nat'' указываются диапазоны адресов и соотвествующие им имена профилей NAT
 пример: пример:
-0.0.0.0/              nat_profile_all +<code bash> 
-10.0.0.0/            nat_profile_1 +0.0.0.0/0 nat_profile_all 
-10.1.1.0/24           nat_profile_2 +10.0.0.0/8 nat_profile_1 
-когда указан более специфичный (конкретный) профиль для адреса, то выбирается он+10.1.1.0/24 nat_profile_2
 </code> </code>
 +Когда указан более специфичный (конкретный) профиль для адреса, то выбирается он.
 +
 ===== Поддержка IPv6 ===== ===== Поддержка IPv6 =====
-В конфигурационном файле /etc/dpi/fdpi_radius.conf указываются настроечные параметры +В конфигурационном файле ''/etc/dpi/fdpi_radius.conf'' указываются настроечные параметры связки адреса и подсетей с абонентом: 
-<code> +  * ''bind_ipv6_address''  
-bind_ipv6_address=0 (по умолчанию - не связывать адрес с абонентом)1 связывать вязывание аналогично команде bind в fdpi_ctrl). Адрес берется из атрибута радиус Framed-IPv6-Address(168) +    * ''0'' — не связывать адрес с абонентом (по умолчанию) 
-bind_ipv6_subnet=0 (по умолчанию - не связывать),64 (связывать только для подсетей /64), -1 связывать для любых подсетей. Подсеть берется из атрибута радиус Delegated-IPv6-Prefix(123) +    * ''1'' — связывать\\ Связывание аналогично команде ''bind'' в ''fdpi_ctrl''). Адрес берется из RADIUS-атрибута ''Framed-IPv6-Address(168)'' 
-</code> +  * ''bind_ipv6_subnet''  
-Абонент идентифицируется радиус атрибутом User-Name или Сalling-Station-ID (в зависимости от настройки login_replace) +    * ''0'' — не связывать (по умолчанию) 
-<note>В текущей реализации поддерживаются только IPv6 подсети фиксированной длины (по умолчанию /64), поэтому связывание подсетей меньшей длины приведет к ошибке.</note> +    * ''64'' — связывать только для подсетей /64 
 +    * ''-1'' — связывать для любых подсетей.\\ Подсеть берется из RADIUS-атрибута ''Delegated-IPv6-Prefix(123)''
  
-===== Идентификация абонентов в мобильных сетях ===== +Параметры ''bind_ipv6_address'' и ''bind_ipv6_subnet'' можно задать одновременно.\\ При наличии маски 128 в Framed-IPv6-Prefix, она не проверяется на ограничение по значению ''bind_ipv6_subnet''.
-''login_replace=1'' - в этом случае для идентификации абонента используется RADIUS атрибут Сalling-Station-ID (IMSI) вместо User-Name, если он присутствует в RADIUS.+
  
-''ipfix_extra_gsm=1'' — включить поддержку отправки по IPFIX  [[dpi:dpi_components:radius:radmon_acct_ipfix|дополнительных атрибутов]] из Radius Accounting. +Абонент идентифицируется RADIUS-атрибутом ''User-Name'' или ''Сalling-Station-ID'' (в зависимости от настройки ''login_replace'')
-==== Дополнение имен абонентов (LOGIN) префиксами регионов ==== +
-Используется когда Radius монитор и СКАТ обслуживают несколько регионова user-name может в разных регионах пересекаться с другими регионами, таким образом их можно развести по разным login\\+
  
-1. Включаем настройку rad_prefix_info=1\\+<note>В текущей реализации поддерживаются только IPv6 подсети фиксированной длины (по умолчанию /64), поэтому связывание подсетей меньшей длины приведет к ошибке.</note> 
  
-2. В файл /etc/dpi/prefixes.info добавить\\ +===== Идентификация абонентов в мобильных сетях ===== 
-<code> +  * ''login_replace=1'' — в этом случае для идентификации абонента используется RADIUS-атрибут ''Сalling-Station-ID (IMSI)'' вместо ''User-Name'', если он присутствует в RADIUS. 
-172.17.76.1 MSK-+  * ''ipfix_extra_gsm=1'' — включить поддержку отправки по IPFIX [[dpi:dpi_components:radius:radmon_acct_ipfix|дополнительных атрибутов]] из RADIUS Accounting. 
 +==== Дополнение имен абонентов (LOGIN) префиксами регионов ==== 
 +Используется когда RADIUS монитор и СКАТ обслуживают несколько регионов, а ''user-name'' может в разных регионах пересекаться с другими регионами, таким образом их можно развести по разным login\\ 
 +  - Включить настройку ''rad_prefix_info=1'' 
 +  - В файл ''/etc/dpi/prefixes.info'' добавить:<code>172.17.76.1 MSK-
 172.17.76.2 MSK- 172.17.76.2 MSK-
 172.17.76.3 SPB- 172.17.76.3 SPB-
 172.17.76.4 SPB- 172.17.76.4 SPB-
-172.17.76.5 SPB- +172.17.76.5 SPB-</code>где:\\ 
-</code> +    первое поле - NAS-IP-Address из RADIUS-пакета 
-где:\\ +    второе поле - префикс, который будет добавлен к Login\\
-первое поле - это NAS-IP-Address из RADIUS пакета\\ +
-второе поле - какой префикс будет добавлен к Login\\+