Настройка балансировки и распределения по группам RADIUS серверов [Документация VAS Experts]

Различия

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

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

Следующая версия
Предыдущая версия
dpi:dpi_components:freeradius:balancing_and_grouping [2025/12/17 15:32] – создано elena.krasnobryzhdpi:dpi_components:freeradius:balancing_and_grouping [2025/12/19 09:04] (текущий) – [Настройка балансировки и распределения по группам RADIUS серверов] atereschenko
Строка 5: Строка 5:
 {{ :dpi:dpi_components:freeradius:radius_proxy.svg |}} {{ :dpi:dpi_components:freeradius:radius_proxy.svg |}}
  
-В данном примере рассмотрим распределение Авторизации и Аккаунтинга между группами серверов в режим load-balance для разных типов доступа между группами RADIUS серверов:+В данном примере рассмотрим распределение авторизации и аккаунтинга в режиме load-balance для разных типов доступа между группами RADIUS-серверов:
   - IPoE на RADIUS_1 (1812, 1813), RADIUS_1.1 (1822, 1823)   - IPoE на RADIUS_1 (1812, 1813), RADIUS_1.1 (1822, 1823)
   - PPPoE на RADIUS_2 (2812, 2813), RADIUS_2.1 (2822, 2823)   - PPPoE на RADIUS_2 (2812, 2813), RADIUS_2.1 (2822, 2823)
   - L2TP на RADIUS_3 (3812, 3813), RADIUS_3.1 (3822, 3823)   - L2TP на RADIUS_3 (3812, 3813), RADIUS_3.1 (3822, 3823)
-Разделение Auth/Acc различных типов доступа происходит на основе атрибута VasExperts-Service-Type с использованием операторов ветвления (if-else).+Разделение Auth/Acc различных типов доступа происходит на основе атрибута ''VasExperts-Service-Type'' с использованием операторов ветвления (if-else).
  
 RADIUS СоА сообщения могут отправляться от RADIUS серверов в BRAS (fastPCRF) следующим способом: RADIUS СоА сообщения могут отправляться от RADIUS серверов в BRAS (fastPCRF) следующим способом:
-  - Напрямую от RADIUS (billing) в fastPCRF. Необходимо добавить Отдельные CoA-клиенты в fastPCRF. +  - Напрямую от RADIUS (billing) в fastPCRF. Необходимо добавить отдельные CoA-клиенты в fastPCRF. [[dpi:bras_bng:radius_integration:radius_auth_coa|]]. Указано на схеме красным пунктиром.  
-  - Через Proxy: RADIUS (billing) → Proxy → fastPCRF. Описан пример ниже.+  - Через Proxy: RADIUS (billing) → RADIUS Proxy → fastPCRF. Описан пример ниже.
  
 =====Конфигурация FreeRADIUS как Proxy===== =====Конфигурация FreeRADIUS как Proxy=====
Строка 26: Строка 26:
 } }
 </code> </code>
-  * ''retry_delay'' — количество секунд ожидания после того, как сервер попытается установить соединение и завершится неудачей. 
-  * ''retry_count'' — максимальное количество попыток отправки запроса к одному, прежде чем он будет считаться "мёртвым". 
-  * ''default_fallback'' — параметр, отвечающий за ответ reject-ом на клиентский запрос при статусе всех серверов "мертвые". 
-  * ''wake_all_if_all_dead'' — параметр, отвечающий за периодическую проверку состояния «мёртвых» серверов. 
  
-Раздел определяющий параметры "домашних" серверов, т.е. серверов на которых хранятся данные об абонентах.+  * ''retry_delay'' — интервал ожидания (в секундах) после неудачной попытки установить соединение с сервером. 
 +  * ''retry_count'' — максимальное число попыток отправки запроса к серверу, после которого он считается "мёртвым"
 +  * ''default_fallback'' — параметр, определяющий отправку reject-ответа клиенту, если все серверы находятся в состоянии "мёртвые"
 +  * ''wake_all_if_all_dead'' — параметр, определяющий периодическую проверку доступности серверов, помеченных как "мёртвые". 
 + 
 +Раздел, определяющий параметры "домашних" серверов (на которых хранятся данные об абонентах).
 <code bash> <code bash>
 home_server rad_1 { home_server rad_1 {
Строка 62: Строка 63:
 } }
 </code> </code>
-  * ''type'' — для чего используется серверчаще всего это авторизация (''auth''), а также авторизация и аккаунтинг (''auth+acct''). + 
-  * ''ipaddr'' — адрес RADIUS сервера, также может быть ''ipv6addr''+  * ''type'' — назначение сервера; чаще всего используется для авторизации (''auth''либо для авторизации и аккаунтинга (''auth+acct''). 
-  * ''port'' — порт, на который проксировать запросы (обычно ''1812''). Также при режиме ''auth+acct'' назначается только первый порт для ''auth'', а порт аккаунтинга определяетсякак ''port+1''+  * ''ipaddr'' — IPv4-адрес RADIUS-сервера; при необходимости может использоваться ''ipv6addr''
-  * ''proto'' — протокол передачи данный, по умолчанию ''udp''+  * ''port'' — порт, на который проксируются запросы (обычно ''1812''). В режиме ''auth+acct'' задаётся только порт авторизации, а порт аккаунтинга определяется как ''port+1''
-  * ''secret'' — используется для "шифрования" и "подписипакетов между RADIUS и сервером проксирования+  * ''proto'' — протокол передачи данных; по умолчанию ''udp''
-  * ''src_ipaddr'' — адрес, с которого отправляются запросы от прокси+  * ''secret'' — общий секрет, используемый для подписи и защиты пакетов между RADIUS-сервером и прокси. 
-  * ''response_window'' — период времени, в который прокси ожидает ответа на запрос от сервера. По истечению временисервер помечается как "zombie" и является наименее приоритетным для отправки+  * ''src_ipaddr'' — IP-адрес источника, с которого прокси отправляет запросы. 
-  * ''zombie_period'' — период времени, в который прокси ожидает ответ от сервера на любой пакет и по истечении которого помечает сервер статусом ертвый". +  * ''response_window'' — интервал ожидания ответа от сервера; по его истечении сервер помечается как "zombie" и получает минимальный приоритет при выборе
-  * ''status_check'' — определяет, как проверять состояние сервера.+  * ''zombie_period'' — максимальный период ожидания ответа от сервера на любой пакетпо истечении которого сервер считается ёртвым". 
 +  * ''status_check'' — способ проверки состояния сервера.
   * ''check_interval'' — интервал между отправкой пакетов проверки состояния.   * ''check_interval'' — интервал между отправкой пакетов проверки состояния.
   * ''check_timeout'' — время ожидания ответа на пакет проверки состояния.   * ''check_timeout'' — время ожидания ответа на пакет проверки состояния.
-  * ''num_answers_to_alive'' — количество проверок состояния подряд, после которого сервер считается "живым"+  * ''num_answers_to_alive'' — количество успешных проверок подряд, после которых сервер считается "живым"
-  * ''max_outstanding'' — количество пакетов, то есть разница между оправленными на сервер и полученными от сервера, при превышении которого пакеты перестают отправляться чтобы избежать перегрузки RADIUS сервера. +  * ''max_outstanding'' — максимальное число неподтверждённых пакетов (разница между отправленными и полученными), при превышении которого отправка новых пакетов приостанавливается для предотвращения перегрузки RADIUS-сервера. 
-  * ''coa'' — секция описания интервалов повторных перадач и их количества для Change of Authorization. +  * ''coa'' — секцияописывающая интервалы и количество повторных передач для Change of Authorization. 
-  * ''limit'' — секция, актуальная только при указании протокола TCP. Это ''max_connections'' — максимальное кол-во подключений; ''max_requests'' — максимальное количество запросов в рамках одной сессии; ''lifetime'' — время жизни соединения в секундах; ''idle_timeout'' — максимальное время ожидания пакетов в рамках сессии, после истечения которого она будет закрыта. Значение ''0'' во всех параметрах данной секции означает ез ограничений".+  * ''limit'' — секция, применимая только при использовании TCP. Включает параметры: 
 +    * ''max_connections'' — максимальное количество соединений;  
 +    * ''max_requests'' — максимальное число запросов в рамках одного соединения 
 +    * ''lifetime'' — время жизни соединения в секундах;  
 +    * ''idle_timeout'' — максимальный период бездействия в рамках соединения, после которого оно закрывается.\\ \\ Значение ''0'' для всех параметров означает отсутствие ограничений
 + 
 + 
 +Для proxy определить необходимое количество серверов. Серверы, отвечающие за один и тот же тип авторизации, сгруппировать в ''pool''. Раздел ''home_server_pool'' использовать для балансировки нагрузки и переключения между серверами.\\ 
 +В статье приведён пример минимальной конфигурации, полный вариант конфигурации доступен в архиве.
  
-Для proxy определите столько серверов, сколько необходимо. Далее необходимо сгруппировать их в pool, если отвечают за один и тот же тип авторизации. Также с помощью раздела ''home_server_pool'' осуществляется балансировка нагрузки и переключение между серверами.\\ 
-В статье приведена конфигурация в единичном варианте, полная конфигурация доступна в архиве. 
 <code bash> <code bash>
 home_server_pool pool_rad_servers { home_server_pool pool_rad_servers {
Строка 86: Строка 94:
 } }
 </code> </code>
-Важно, чтобы ''home_server'' были одного типа, то есть все ''auth'' или ''auth+acct''.+Важно, чтобы ''home_server'' были одного типа, то есть все — ''auth'' или ''auth+acct''.
  
-Наконец, в разделе ''realm'' определяются некоторые параметры и указывается, какой пул серверов следует использовать для этой области.+В разделе ''realm'' указать, какой пул серверов следует использовать для этой области.
 <code bash> <code bash>
 realm rlm_prod_servers { realm rlm_prod_servers {
Строка 96: Строка 104:
 </code> </code>
  
-При использовании пула только с серверами авторизации, можно использовать ''auth_pool''при пуле только с аккаунтингом ''acct_pool''Но лучше использовать просто ''pool'', который включает оба предыдущих указателя.\\ +При использовании пула, содержащего только серверы авторизации, применять ''auth_pool''при пуле, включающем только аккаунтинг, использовать ''acct_pool''Рекомендуется использовать универсальный ''pool'', объединяющий оба варианта.\\ 
-Также сервер может проксировать пакеты CoA на основе атрибута ''Operator-Name'' через ''coa_pool''. Для настройки CoA использовать ''/etc/raddb/sites-available/coa'', в котором определяются параметры проксирования CoA-запросов. В файле конфигурации важно указать условия, при которых проксируется запрос в один из realm. А в каждом ''home_server'' определить параметры и для CoA (чаще всего они указаны по умолчанию).\\ +Проксирование CoA-пакетов выполнять на основе атрибута ''Operator-Name'' через ''coa_pool''. Для настройки CoA использовать файл ''/etc/raddb/sites-available/coa'', в котором задаются параметры проксирования CoA-запросов. В конфигурации указать условия, при которых запрос направляется в соответствующий ''realm'', а в каждом ''home_server'' определить параметрыиспользуемые для CoA (как правилоони заданы по умолчанию).\\ 
-Но наши рекомендации — для работы с CoA использовать прямую связку PCRF – RADIUS, так как все параметры задаются в ''fastpcrf.conf'' и общение происходит напрямую.\\ +Рекомендуется для работы с CoA использовать прямое взаимодействие PCRF – RADIUS, так как все параметры настраиваются в ''fastpcrf.conf'', а обмен данными осуществляется напрямую. 
-Для настройки этих функций есть [[dpi:bras_bng:radius_integration:radius_auth_coa|статья]]+Описание настройки данных функций приведено в статье [[dpi:bras_bng:radius_integration:radius_auth_coa|статья]].
- +
-И параметр ''nostrip'', отвечающий за отсутствие деления User-Name.+
  
 +Параметр ''nostrip'' использовать для отключения разделения значения ''User-Name''.
  
 =====Конфигурация виртуального сервера FreeRADIUS===== =====Конфигурация виртуального сервера FreeRADIUS=====
-Файл конфигурации расположен в ''/etc/raddb/sites-available/default''+Файл конфигурации расположен в ''/etc/raddb/sites-available/default''.\\ 
-Все параметры указывать для ''default''Сначала раздел ''listen'', в котором указать какие подсети и порты слушать, а также какие типы сообщений принимать.+Все параметры указывать для ''default''В первую очередь настроить раздел ''listen'', в котором задать подсети и порты для прослушивания, а также типы принимаемых сообщений. 
 <code bash> <code bash>
 server default { server default {
Строка 128: Строка 136:
 </code> </code>
  
-Также раздел для IPv6:+Настроить раздел для IPv6:
  
 <code bash> <code bash>
Строка 150: Строка 158:
 </code> </code>
  
-Далее раздел авторизации, в котором указаны доступные протоколы авторизации.\\ +Далее перейти к разделу авторизации, в котором перечислены поддерживаемые протоколы авторизации.\\ 
-В этом разделе определено правило, по которому все запросы авторизации с атрибутом ''VasExperts-Service-Type'' ''0'' и ''1'' отправляются в область для DHCP, если атрибутом равен ''2'', ''3'' и ''4'' в область PPPoE, а остальные будут отброшены с Reject. Все значения атрибута для других типов авторизации с расшифровкой указаны в словаре vasexperts и в [[статье]].+В данном разделе задать правило маршрутизации запросов: все запросы авторизации с атрибутом ''VasExperts-Service-Type'' со значениями ''0'' и ''1'' направлять в область DHCP, со значениями ''2'', ''3'' и ''4'' — в область PPPoE, остальные запросы отклонять с Reject. Значения атрибута для других типов авторизации с расшифровкой приведены в словаре vasexperts и в [[dpi:dpi_components:freeradius:local_auth|статье]]. 
 <code bash> <code bash>
 authorize { authorize {
Строка 189: Строка 198:
 </code> </code>
  
-Раздел определяет методы аутентификации, которые будет использовать FreeRADIUS. Так как они пустые, то будут использоваться модули по умолчанию.+Раздел определяет методы аутентификации, которые будет использовать FreeRADIUS. Так как они пустые — будут использоваться модули по умолчанию.
  
 <code bash> <code bash>
Строка 209: Строка 218:
 </code> </code>
  
-Раздел тарификации/аккаунтинга, в котором определены правила обработки пакетов с различными ''VasExperts-Service-Type'', как и в модуле авторизации. Также важным отличием является первое правило для ''Acct-Status-Type'', на основе которого прокси будет отправлять на RADIUS и общие пакеты включения тарификации, а не отбрасывать их.+Раздел тарификации и аккаунтинга, в котором заданы правила обработки пакетов с различными значениями ''VasExperts-Service-Type'', аналогично модулю авторизации. Существенным отличием является первое правило для ''Acct-Status-Type'', на основе которого прокси направляет на RADIUS общие пакеты начала тарификации, а не отбрасывает их. 
 <code bash> <code bash>
 accounting { accounting {
Строка 243: Строка 253:
 </code> </code>
  
-Завершающие разделы. Задается параметр таймаута сессии и действие системы при Reject.+Завершающие разделы. Задать параметр таймаута сессии и действие системы при Reject.
 <code bash> <code bash>
 post-auth { post-auth {