Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
dpi:bras_bng:general_setup:start [2023/10/13 11:55] – elena.krasnobryzh | dpi:bras_bng:general_setup:start [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 |
---|
======Общая настройка BRAS для L2/L3 режимов====== | |
{{indexmenu_n>3}} | |
| |
===== Настройка BRAS L3 в fastDPI ===== | |
<note important>Необходимо создать услуги и полисинг, которые в дальнейшем будут передавать с помощью Radius атрибутов от биллинга. | |
[[dpi:dpi_options:use_cases:qs_rateplans|Пример настройки полисинга (тарифный план) и Captive Portal, которые минимально необходимы для старта.]]</note> | |
| |
**1.** [[dpi:dpi_options:opt_statistics:statistics_asn:start|Cоздать файл aslocal.bin]] (или откорректировать этот файл, если он уже есть). В файл ''aslocal'' прописываются те диапазоны серых IP-адресов, которые используются в локальной сети провайдера. В качестве номера автономной системы для них указываем любой из диапазона 64512 – 65534. | |
<code bash> | |
vi aslocal.txt | |
10.0.0.0/8 64512 | |
172.16.0.0/12 64512 | |
192.168.0.0/16 64512 | |
cat aslocal.txt | as2bin /etc/dpi/aslocal.bin | |
</code> | |
| |
<note important>FastDPI авторизует только локальных пользователей. Локальность пользователя определяется по принадлежности его IP-адреса к списку локальных автономных систем.</note> | |
| |
**2.** [[dpi:dpi_options:opt_priority:priority_config_as:start|Cоздать файл asnum.dscp]] (или откорректировать этот файл, если он уже есть). В этом файле нужно указать номера //локальных// (local) автономных систем – именно для них будет производиться авторизация. Как правило, это автономные системы для серых IP-адресов, указанные в ''aslocal.bin'', плюс публичные IP-адреса, выделенные провайдеру, если эти публичные IP-адреса используются в локальной сети, то есть требуют авторизации. Для всех IP-адресов автономных систем, помеченных как local в ''asnum.dscp'', будет производиться авторизация. | |
| |
<code bash> | |
vi asnum.txt | |
64512 local | |
cat asnum.txt | as2dscp /etc/dpi/asnum.dscp | |
</code> | |
| |
**3.** В ''/etc/dpi/fastdpi.conf'' активируем авторизацию: | |
<code bash> | |
enable_auth=1 | |
</code> | |
| |
**4.** Задать список fastPCRF-серверов: | |
<code bash> | |
auth_servers=127.0.0.1%lo:29002;192.168.10.5%eth1:29002 | |
</code> | |
| |
Формат задания одного сервера: ''ip%dev:port'', где ''ip'' - IP-адрес сервера, ''dev'' - локальное устройство, с которого устанавливать соединение. | |
FastDPI устанавливает соединение с первым доступным сервером fastPCRF из списка. | |
| |
**5.** Не забываем активировать [[dpi:dpi_components:platform:dpi_admin:admin_db:start|UDR]] — хранилище свойств пользователей: | |
<code> | |
udr=1 | |
</code> | |
| |
<note important>После внесения изменений необходимо сделать перезапуск сервиса: ''service fastdpi restart''.</note> | |
| |
==== IPv6 ==== | |
| |
Для авторизации IPv6-адресов следует активировать [[dpi:dpi_components:platform:dpi_ipv6:start|поддержку IPv6]]. | |
Фактически СКАТ авторизует не конкретный IPv6-адрес, а подсеть с заданной длиной префикса (по умолчанию /64). Например, если идут пакеты от адресов 2001:1::1 и 2001:1::10, то только один из этих адресов будет послан на авторизацию, а возвращенные параметры авторизации применяются для всех адресов из подсети 2001:1::/64. | |
| |
Для IPv6 нет аналога файла ''aslocal.bin'', так как нет приватных адресов. Вы должны пометить в файле ''asnum.dscp'' номера AS, которые требуют авторизации, как ''local''. | |
| |
Авторизация IPv6 автоматически включается, если в ''fastdpi.conf'' указано: | |
<code bash> | |
ipv6=1 | |
enable_auth=1 | |
</code> | |
| |
Начиная с версии СКАТ 8.1.4 есть возможность принудительно отключить авторизацию IPv6-адресов, указав в ''fastdpi.conf'': | |
<code bash> | |
enable_auth_ipv6=0 | |
</code> | |
| |
[[radius_auth_conf_params|Прочие настройки авторизации]] | |
| |
==== Внедрение BRAS-авторизации ==== | |
{{indexmenu_n>1}} | |
Процесс внедрения нового функционала всегда труден и тернист, а в случае с BRAS-авторизацией - особенно, так как требует настройки не только ''fastdpi/fastpcrf'', но и Radius-сервера, на котором происходит основная работа по | |
авторизации абонентов, и всего backend'а за Radius-сервером, — базы данных, биллинговой системы и пр. Здесь мы рассмотрим несколько подходов к внедрению авторизации. | |
| |
=== Тестовый стенд === | |
Тривиальный и надежный способ — организовать тестовый стенд. Достоинства — не затронет живых абонентов, недостаток — нужно дополнительное оборудование. Не всегда возможно организовать полноценный стенд. | |
| |
=== Отдельная автономная система === | |
Как описано [[dpi:bras_bng:opt_bras_l3:bras_steps:radius_auth_setup:start|ранее]], авторизация проводится только по локальным IP-адресам. Локальность IP-адреса задается флагом local для автономной системы. Отсюда вывод — можно выделить диапазон тестовых IP-адресов, [[dpi:dpi_options:opt_statistics:statistics_asn:start|задать]] им номер автономной системы из диапазона зарезервированных для частных целей (64512..65534), и прописать, что эта автономная система — [[dpi:dpi_options:opt_priority:priority_config_as:start|локальная]] (local). | |
| |
Таким образом, только IP-адреса, принадлежащие этой локальной автономной системе будут авторизоваться. "Живые" абоненты не будут затрагиваться до тех пор, пока автономные системы, к которым относится их IP-адреса, не будут | |
объявлены как local. Это позволяет отлаживать авторизацию на боевом fastDPI. | |
| |
=== Тестовый IP-адрес === | |
Наконец, третья возможность, — объявить, что авторизацию нужно проводить только для указанных IP-адресов. Для этого в ''fastdpi.conf'' есть настройка ''auth_trace_ip'', в которой можно задать один или два (но не более) IP-адреса: | |
<code bash>auth_trace_ip=192.168.20.11,192.168.30.58</code> | |
Указанные IP-адреса должны быть локальными (то есть относиться к автономной системе, объявленной как local, см. выше). В случае наличия настройки ''auth_trace_ip'' авторизация будет проводиться только для указанных в ней IP-адресов. | |
| |
====Параметры авторизации ==== | |
В ''fastdpi.conf'' можно задать следующие параметры авторизации, в дополнение к описанным [[dpi:bras_bng:opt_bras_l3:bras_steps:radius_auth_setup:start|ранее]]: | |
| |
''auth_resend_timeout'' - тайм-аут перепосылки запросов к fastPCRF на авторизацию, в секундах. Значение по умолчанию: 60. | |
Если fastDPI не получил в течение этого времени ответа от fastPCRF, то запрос авторизации будет повторен. | |
| |
''auth_expired_timeout'' - время жизни авторизации, **в минутах**. Значение по умолчанию 60 минут. | |
Значение 0 - бессрочно. | |
Этот параметр применяется только если в Radius-ответе нет атрибута Session-Timeout, который задает время жизни сессии. | |
Отметим, что в Access-Reject атрибут Session-Timeout также может присутствовать. | |
По истечении этого времени будет послан повторный запрос авторизации. | |
| |
<note important>Значение 0 (бессрочно) может привести к тому, что абонент, которому отказано в доступе (Access-Reject), останется в статусе "не авторизован" навечно. Вывести абонента из этого статуса можно только CoA-нотификацией на | |
реавторизацию, рестартом fastDPI или вручную с помощью ''fdpi_ctrl''.</note> | |
| |
''auth_pcrf_reconnect'' - тайм-аут реконнекта к fastPCRF, В секундах. Значение по умолчанию - 1 секунда. | |
| |
=== Тестовые настройки === | |
| |
''auth_trace'' - булевый флаг, включающий трассировку авторизации, по умолчанию отключен. Следует учитывать, что трассировка авторизации очень сильно влияет на производительность fastDPI и активно | |
пишет в логи, включать её без особой надобности не следует. | |
| |
''auth_trace_ip'' - список IP-адресов (не более двух), для которых следует проводить авторизацию. По умолчанию пустой. | |
| |
Пример: | |
<code bash>auth_trace_ip=192.168.10.20,192.168.30.45</code> | |
| |
Этот список может быть применен на этапе [[dpi:bras_bng:opt_bras_l3:bras_steps:radius_auth_setup:bras_auth_test:start|внедрения]] авторизации и настройки Radius-серверов: авторизация будет проводиться только по указанным локальным IP-адресам (обычно это тестовые абоненты), не затрагивая "живых" абонентов. | |
| |
| |
===== Настройка BRAS L2 в fastDPI ===== | |
| |
Активация функций BRAS в fastDPI производится следующими **обязательными настройками** конфигурационного | |
файла **fastdpi.conf**: | |
* ''bras_enable=1'' – общий флаг разрешения BRAS | |
* ''bras_arp_ip'' – задает IPv4-адрес BRAS’а. Это может быть фейковый IP-адрес, не связанный ни с каким сетевым интерфейсом. Главное требование – этот IP-адрес должен быть уникальным, никакому пользователю он не должен быть сопоставлен. | |
* ''bras_arp_mac'' – MAC-адрес BRAS’а, формат XX:XX:XX:XX:XX:XX, например, a0:00:b1:01:4e:cc. Этот MAC-адрес должен быть уникальным во всей локальной сети; это может быть фейковый MAC-адрес, не связанный ни с какой сетевой картой. | |
* ''auth_servers'' - задает список fastPCRF-серверов. Сервер fastPCRF отвечает за взаимодействие с Радиус-серверами. Формат задания одного сервера: ''ip%dev:port'', где ip - IP-адрес сервера, dev - локальное устройство, с которого устанавливать соединение. FastDPI устанавливает соединение с первым доступным сервером fastPCRF из списка. | |
| |
<note important>Также для корректной работы fastDPI BRAS должна быть активирована [[dpi:dpi_components:platform:dpi_admin:admin_db:start#Активация встроенной БД|UDR]] (user data repository – | |
внутренняя база данных свойств пользователей): в **fastdpi.conf** должны быть строка | |
<code> | |
udr=1 | |
</code></note> | |
| |
**Пример:** | |
<code bash> | |
udr=1 | |
auth_servers=127.0.0.1%lo:29002 | |
bras_enable=1 | |
bras_arp_ip=192.168.1.255 | |
bras_arp_mac=a0:00:b1:01:4e:cc | |
</code> | |
| |
<note warning>При выборе значения параметра ''bras_arp_mac'' весьма удобно использовать существующий MAC-адрес порта карты. Но замечено, что некоторые продвинутые карты (например, 25G карты на чипе XXV710, драйвер i40e) могут "съедать" некоторые пакеты (например, ARP), если ''bras_arp_mac'' равен MAC-адресу порта карты. Причина такого поведения непонятна, поэтому во избежание пропадания пакетов советуем выбирать значение ''bras_arp_mac'' чисто виртуальным, не совпадающим с MAC-адресом порта</note> | |
| |
<note warning>Отдельные возможности fastDPI BRAS активируются дополнительными настройками, описанными далее, | |
но без флага ''bras_enable=1'' этот дополнительный функционал будет недоступен.</note> | |
| |
[[dpi:bras_bng:opt_bras_l2:bras_l2_vlan:start|««« back to BRAS]] | |
| |
===== Поддержка IPv6 ===== | |
L2 BRAS поддерживает выдачу IPv6-адресов stateful DHCPv6. В этом режиме IPv6-адрес абонентам выдается через DHCPv6. Автоматическое назначение IPv6-адресов (SLAAC/stateless DHCPv6) не поддерживается. | |
| |
Концептуально схема работы выглядит так: | |
- абонентский CPE ищет в сети IPv6-роутер с помощью ICMPv6. СКАТ анонсирует себя как IPv6-роутер, указывая, что для получения IPv6-адреса следует использовать DHCPv6; | |
- CPE посылает DHCPv6-запрос получения IPv6-адреса; | |
- СКАТ перехватывает все DHCPv6-запросы абонентов и обрабатывает их, тем самым фактически выступая как DHCPv6-сервер. Если абонент СКАТу неизвестен или его сессия истекла, DHCPv6-запрос транслируется в Радиус через PCRF; | |
- PCRF получает ответ от Радиуса, содержащий, помимо прочих параметров, выданный абоненту IPv6-префикс и, если требуется, PD-префикс (prefix delegation), и транслирует этот ответ обрабно СКАТу; | |
- Получив от PCRF данные, СКАТ посылает DHCPv6-ответ абоненту. СКАТ выдает один IPv6-адрес из выданного абоненту IPv6-префикса, а PD-префикс (если есть) передается абоненту полностью. Несмотря на то, что из IPv6-префикса выдается только один адрес, все IPv6-адреса этого префикса трактуются как адреса, принадлежащие этому абоненту. На самом деле абонент может запросить несколько IPv6-адресов, - все они будут выданы из предоставленного IPv6-префикса. | |
| |
<note warning>Следует особо отметить, что Радиус должен выдавать абоненту IPv6-префикс фиксированной длины. Длина префикса задается параметром [[dpi:dpi_components:platform:dpi_ipv6:start|ipv6_subnetwork]], по умолчанию /64. Длина PD-префикса также должна равняться ''ipv6_subnetwork''.</note> | |
| |
Если абоненту выдается и IPv6-префикс, и PD-префикс, то такой абонент обязательно должен быть помечен как multi-bind, так как с таким абонентом связано //**два**// IPv6-префикса; в ответе Радиуса должен быть атрибут ''VasExperts-Multi-IP-User=1''. | |
| |
==== Включение IPv6 BRAS ==== | |
| |
Режим IPv6 BRAS включается автоматически, если в //fastdpi.conf// задано | |
<code bash> | |
ipv6=1 | |
bras_enable=1 | |
</code> | |
| |
Можно принудительно отключить IPv6 BRAS, указав в //fastdpi.conf// | |
<code bash> | |
bras_ipv6=0 | |
</code> | |
Параметр bras_ipv6 является наполовину горячим: его можно отключить (''bras_ipv6=0'') без рестарта СКАТа. | |
| |
Режим обработки DHCPv6-запросов включается автоматически, если включен IPv6 BRAS. Можно принудительно запретить обработку DHCPv6 и ICMPv6 Router Solicitation, задав в //fastdpi.conf// | |
<code bash> | |
bras_dhcp6_mode=0 | |
</code> | |
| |
Дополнительно в //fastdpi.conf// могут быть заданы следующие параметры: | |
| |
♦ ''bras_ipv6_link_local'' - link-local (из FE80::/10) адрес СКАТ. Если данный параметр не задан, link-local адрес вычисляется автоматически из [[dpi:bras_bng:opt_bras_l2:bras_l2_vlan_activate:start|bras_arp_mac]]. СКАТ всегда имеет link-local адрес. | |
| |
♦ ''bras_ipv6_address'' - задает глобальный IPv6-адрес СКАТа. Глобальный адрес может быть полезен, например, для пингования СКАТа со стороны абонента. Если данный параметр не задан, СКАТ не имеет глобального IPv6-адреса. | |
| |
♦ [[dpi:bras_bng:opt_bras_l2:ipv6:icmpv6_opt:start|Опции ICMPv6]] | |
| |
♦ [[dpi:bras_bng:opt_bras_l2:ipv6:dhcpv6_opt:start|Опции DHCPv6]] | |
| |
| |
==== Интеграция с Радиус-сервером ==== | |
**Пример** запроса Access-Request на выдачу IPv6-префиксов абоненту: | |
<code bash> | |
Packet-Type = Access-Request | |
User-Name = "1106.106" | |
Calling-Station-Id = "a0:b1:c2:d3:00:6a" | |
Acct-Session-Id = "03119DF4AAB8E41D" | |
NAS-Identifier = "FastPCRF" | |
NAS-Port-Type = Virtual | |
NAS-Port-Id = "1106/106" | |
NAS-IP-Address = 188.227.73.40 | |
VasExperts-Service-Type = DHCPv6 | |
VasExperts-DHCPv6-Request = Solicit | |
VasExperts-DHCPv6-Delegated = 1 | |
VasExperts-DHCP-ClientId = 0x00010001237d47fca0b1c2d3006a | |
</code> | |
В этом примере идентификатором абонента служит QinQ, запрос инициирован DHCPv6-пакетом Solicit (''VasExperts-Service-Type = DHCPv6'', ''VasExperts-DHCPv6-Request = Solicit''), абонент запрашивает в том числе PD-префикс (''VasExperts-DHCPv6-Delegated = 1''). | |
<note warning>Абонентское оборудование может запрашивать IPv6-адрес и PD-префикс в одном DHCPv6-запросе или же в разных. Поэтому полагаться на значение атрибута ''VasExperts-DHCPv6-Delegated'' не следует: даже если абонент не запрашивает PD-префикс, Радиус может выдать абоненту PD-префикс, СКАТ запомнит его и если CPE в будущем запросит PD-префикс, СКАТ возвратит ранее выданный абоненту PD</note> | |
**Пример** ответа: | |
<code bash> | |
Packet-Type = Access-Accept | |
User-Name="abonent-106" | |
VasExperts-Multi-IP-User = 1 | |
Framed-IPv6-Prefix = 2001:cafe:32:106::/64 | |
Delegated-IPv6-Prefix = 2001:de1e:32:106::/64 | |
DNS-Server-IPv6-Address = 2001:feac::1 | |
DNS-Server-IPv6-Address = 2001:feac::2 | |
Session-Timeout = 7200 | |
Idle-Timeout = 600 | |
VasExperts-Policing-Profile = "rate_100M" | |
VasExperts-Service-Profile = "1:test1" | |
VasExperts-Enable-Service = "9:on" | |
VasExperts-Enable-Service = "12:on" | |
</code> | |
Здесь абоненту выдается два **разных** префикса: | |
* ''Framed-IPv6-Prefix = 2001:cafe:32:106::/64'' - из этого диапазона СКАТ будет выдавать IPv6-адреса абоненту | |
* ''Delegated-IPv6-Prefix = 2001:de1e:32:106::/64'' - это delegated prefix передается CPE абонента (если, конечно, CPE запросит PD) | |
| |
Следует обратить внимание на следующее: | |
- в IPv6 адрес **всегда** должен быть связан с логином. Логин выступает как уникальный идентификатор абонента, с которым может быть связано множество IPv4-адресов и IPv6-префиксов. Логин абонента задается в ответе ''Access-Accept'' в атрибуте ''User-Name'' или ''VasExperts-UserName''. | |
- Если абоненту предоставляется несколько IPv6-префиксов (как в данном примере - IPv6-префикс и PD-префикс), такой абонент **обязательно** должен быть помечен как multi-bind (атрибут ''VasExperts-Multi-IP-User = 1''). | |
| |
Атрибут ''Session-Timeout'' задает время сессии СКАТа (оно же - время accounting-сессии): в течение этого времени все DHCPv6-запросы от данного клиента СКАТ будет обрабатывать самостоятельно, возвращая ранее выданные Радиусом параметры. По прошествии ''Session-Timeout'' секунд текущая accounting-сессия закрывается и DHCPv6-запрос вновь транслируется в Радиус Access-Request. Если атрибута ''Session-Timeout'' нет в ответе Радиуса, он полагается равным fastdpi.conf-параметру [[dpi:bras_bng:opt_bras_l3:bras_steps:radius_auth_setup:radius_auth_conf_params:start|auth_expired_timeout]]. | |
| |
Время лизинга IPv6-префиксов задается fastdpi.conf-параметрами [[dpi:bras_bng:opt_bras_l2:ipv6:dhcpv6_opt:start|bras_dhcp6_preferred_lifetime и bras_dhcp6_valid_lifetime]]. Можно задавать время лизинга индивидуально для каждого абонента с помощью Радиус-атрибута ''DHCP-IP-Address-Lease-Time'': этот атрибут задает preferred lifetime, valid lifetime полагается в два раза большим. | |
| |
Дополнительные DHCPv6-опции могут быть заданы специальными [[dpi:bras_bng:opt_bras_l2:ipv6:dhcpv6_vsa:start|VasExperts VSA атрибутами]]. | |
| |