Введение

Начиная с версии WNAM 1.6.4010 доступно взаимодействие системы авторизации с аппаратным контроллером и точками доступа Eltex WLC. Необходимо настроить гостевой портал с авторизацией по коду Ваучера. Другие способы гостевой авторизации выходят за рамки данной статьи, т. к. взаимодействие между WNAM и WLC Eltex не изменяется. При возникновении трудностей с другими видами гостевой авторизации необходимо обратиться к разработчику WNAM.

Поддержано начиная с версий:

WLC-15/30/3200 – версия ПО WLC 1.26.1
WEP-1L/2L/30L/30L-Z/200L и WOP-2L/30L/30LS – версия ПО ТД 2.5.0 
WEP-3L – версия ПО ТД 2.6.0 
WEP-3ax – версия ПО ТД 1.13.0

Перед настройкой авторизации через Web Auth portal необходимо настроить SSID, точки доступа, маршрутизацию, DHCP, а затем протестировать обычный доступ в сеть Интернет без авторизации.

Взаимодействие контроллера с порталом WNAM

  1. При первом подключении клиента ТД пытается пройти MAB-авторизацию на NAC-сервере, подставляя MAC-адрес клиента в атрибуты User-Name и User-Password запроса access-request к RADIUS-серверу WLC. Контроллер проксирует запрос на внешний RADIUS-сервер WNAM. Т. к. WNAM ничего не известно о данном клиенте, он отправляет access-reject на WLC, тот, в свою очередь, на ТД.
  2. После того как ТД получила access-reject, она отправляет клиенту, заранее преднастроенную ссылку перенаправления на гостевой портал WNAM, при этом предоставляя доступ только гостевого портала и ресурсов, указанных в преднастроенном white-list. Пример ссылки: http://93.180.6.157/cp/eltexwlc/?switch_url=http://redirect.loc:10081/&ap_mac=68:13:E2:C2:28:E0&client_mac=78:98:e8:1e:67:07&wlan=!WNAM-Cisco_Like&redirect=http://nmcheck.gnome.org/
  3. После авторизации пользователя на гостевом портале клиенту возвращается ссылка редиректа на ТД, содержащая в себе ссылку финального редиректа (заданного в рамках настройки портала), логин и пароль, созданный порталом при идентификации клиента. Пример ссылки: http://redirect.loc:10081//?username=78:98:E8:1E:67:07&password=password&buttonClicked=4&redirect_url=http%3A%2F%2Fwww.ru%2F
    Используйте HTTPS (TLS-шифрование) для того, чтобы скрыть передаваемые учетные данные
    (username, password).
  4. Когда клиент переходит по этой ссылке, ТД считывает из нее логин и пароль и подставляет в атрибуты User-Name и User-Password запроса access-request. RADIUS успешно авторизует клиента и ТД снимает ограничения на доступ клиента и перенаправляет по ссылке финального редиректа.
  5. После отключения от SSID и подключения заново или подключения к другой ТД (к тому же SSID), авторизация будет проходить по MAC-адресу (т. к. этот сценарий реализован в логике ТД «external portal» и срабатывает при подключении к SSID, (если истекло значение параметра age-timeout на ТД). Редирект пользователя на портал происходить не будет до тех пор, пока учетная запись клиента не будет удалена из базы, вручную или автоматически (время жизни аккаунта задается при создании портала). Устройство абонента получает доступ в сеть Интернет без дополнительных "всплывающих окон" и редиректов.

Этот механизм полезен в случае необходимости поддержки роуминга абонентов между точками доступа либо после кратковременного отключения абонентского устройства от радио, но не позволяет управлять сессией уже авторизованного клиента (нельзя отключить клиента посредством протокола radius).


Диаграмма процесса авторизации нового клиента

Пример страницы гостевого портала

Настройка контроллера

Далее приведен пример настройки Eltex WLC-30 (v.1.30.6) с точкой WEP-30L (2.8.0). Предполагается, что на контроллере уже настроен IP-адрес, обеспечена сетевая связность с сервером WNAM. Руководство по обновлению ПО Eltex WLC-30 можно найти по ссылке. Полностью ознакомиться с документацией по настройке контроллера можно на официальном сайте компании https://eltex.ru. За основу будет взята заводская конфигурация, пример настройки которой доступен по ссылке. Подробней с алгоритмом сброса к заводской конфигурации можно ознакомиться в инструкции Quickstart.

Физическая конфигурация интерфейсов устройств WLC-15, WLC-30 и WLC-3200 различается между собой. Попытка применения настроек для одной модели устройства на другую может вызвать ошибку инициализации интерфейсов.

Схема организации связи

Внесение дополнений в конфигурацию

Настройка проксирования Radius обмена

Ниже рассмотрен пример настройки RADIUS-сервера и проксирования RADIUS-запросов ТД на внешний RADIUS-сервер (подробнее в инструкции Настройка проксирования на внешний RADIUS).

radius-server local
  nas AP_subnet                    # Подсеть ТД, на которую будет выполняться проксирование запросов
    key ascii-text testing123
    network 192.168.1.0/24
  exit
  virtual-server default
    mode proxy
    upstream-pool wnam
    nas-ip-address 100.127.2.200   # Адрес WLC, который будет заменять в поле NAS-IP-Address адрес ТД при выполнении проксирования RADIUS-запросов
    enable
  exit
  upstream-server wnam
    host 93.180.6.157             # Адрес WNAM, на который выполняется проксирование RADIUS-запросов от ТД
    server-type all
    key ascii-text eltex123
  exit
  upstream-pool wnam
    server-type all
    upstream-server wnam
  exit
  enable
exit

Настройка Wi-Fi части контроллера для выполнения портальной авторизации

В конфигурацию WLC необходимо внести настройки (общий принцип работы описан в статье Авторизация через RADIUS).
На WLC настройте профиль SSID, включите портальную авторизацию, создайте профиль для портала, на ТД в настройках RADIUS-профиля укажите настройку, чтобы MAC-адрес пользователя подставлялся в пароль.

wlc
  outside-address 192.168.1.1                    # Адрес WLC для ТД
  service-activator
    aps join auto
  exit
  ap-location default-location
    mode tunnel
    ap-profile default-ap
    ssid-profile default-ssid
  exit
  ssid-profile default-ssid
    ssid "!WNAM.test-portal"
    radius-profile default-radius
    portal-enable
    portal-profile default-portal
    vlan-id 3
    band 2g
    band 5g
    enable
  exit
  ap-profile default-ap
    password ascii-text password
  exit
  portal-profile default-portal
    redirect-url http://93.180.6.157/cp/eltexwlc
    age-timeout 1
    verification-mode external-portal
  exit
  radius-profile default-radius
    auth-address 192.168.1.1                    # Адрес WLC во влане точек. Необходимо указать его, как адрес RADIUS-сервера для ТД 
                                                # Иначе WLC не сможет выполнять проксирование и подмену NAS-IP при отправке RADIUS-запроса к WNAM
    auth-password ascii-text testing123
    session password mac
    auth-acct-id-send                   		# Данная настройка является критичной, так как уникальность сессии определяется по атрибуту Acct-Session-Id
    acct-enable
    acct-address 192.168.1.1
    acct-password ascii-text testing123
    acct-periodic
    domain default
  exit
  ip-pool default-ip-pool
    description "default-ip-pool"
    ap-location default-location
  exit
  enable
exit

Добавление правил firewall

security zone-pair untrusted self
  rule 2
    action permit
    match protocol udp
    match destination-port object-group radius_auth  # Разрешить UDP-трафик для RADIUS-аутентификации
    enable
  exit
  rule 3
    action permit
    match protocol tcp
    match destination-port object-group ssh          # Разрешить подключение по SSH (Используйте осторожно, если контроллер подключен напрямую к ISP) 
    enable
  exit
  rule 4
    action permit
    match protocol icmp
    enable
  exit
exit

Полная конфигурация Eltex WLC-30 (v.1.30.6)

object-group service ssh
  port-range 22
exit
object-group service dhcp_server
  port-range 67
exit
object-group service dhcp_client
  port-range 68
exit
object-group service ntp
  port-range 123
exit
object-group service netconf
  port-range 830
exit
object-group service radius_auth
  port-range 1812-1813
exit
object-group service sa
  port-range 8043-8044
exit
object-group service dns
  port-range 53
exit
object-group service airtune
  port-range 8099
exit
object-group service web
  port-range 443
exit

syslog max-files 3
syslog file-size 512
syslog file tmpsys:syslog/default
  severity info
exit

logging radius

radius-server local
  nas AP_subnet
    key ascii-text testing123
    network 192.168.1.0/24
  exit
  nas local
    key ascii-text testing123
    network 127.0.0.1/32
  exit
  domain default
  exit
  virtual-server default
    mode proxy
    upstream-pool wnam
    nas-ip-address 100.127.2.200
    enable
  exit
  upstream-server wnam
    host 93.180.6.157
    server-type all
    key ascii-text eltex123
  exit
  upstream-pool wnam
    server-type all
    upstream-server wnam
  exit
  enable
exit
radius-server host 127.0.0.1
  key ascii-text testing123
exit
aaa radius-profile default_radius
  radius-server host 127.0.0.1
exit

vlan 3
  force-up
exit
vlan 2
exit

no spanning-tree

domain lookup enable

security zone trusted
exit
security zone untrusted
exit
security zone users
exit

bridge 1
  vlan 1
  security-zone trusted
  ip address 192.168.1.1/24
  no spanning-tree
  enable
exit
bridge 2
  vlan 2
  security-zone untrusted
  ip address dhcp
  no spanning-tree
  enable
exit
bridge 3
  vlan 3
  mtu 1458
  security-zone users
  ip address 192.168.2.1/24
  no spanning-tree
  enable
exit

interface gigabitethernet 1/0/1
  mode switchport
  switchport access vlan 2
exit
interface gigabitethernet 1/0/2
  mode switchport
exit
interface gigabitethernet 1/0/3
  mode switchport
exit
interface gigabitethernet 1/0/4
  mode switchport
exit
interface gigabitethernet 1/0/5
  mode switchport
  switchport access vlan 2
exit
interface gigabitethernet 1/0/6
  mode switchport
exit

tunnel softgre 1
  mode data
  local address 192.168.1.1
  default-profile
  enable
exit

security zone-pair trusted untrusted
  rule 1
    action permit
    enable
  exit
exit
security zone-pair trusted trusted
  rule 1
    action permit
    enable
  exit
exit
security zone-pair trusted self
  rule 10
    action permit
    match protocol tcp
    match destination-port object-group ssh
    enable
  exit
  rule 20
    action permit
    match protocol icmp
    enable
  exit
  rule 30
    action permit
    match protocol udp
    match source-port object-group dhcp_client
    match destination-port object-group dhcp_server
    enable
  exit
  rule 40
    action permit
    match protocol udp
    match destination-port object-group ntp
    enable
  exit
  rule 50
    action permit
    match protocol tcp
    match destination-port object-group dns
    enable
  exit
  rule 60
    action permit
    match protocol udp
    match destination-port object-group dns
    enable
  exit
  rule 70
    action permit
    match protocol tcp
    match destination-port object-group netconf
    enable
  exit
  rule 80
    action permit
    match protocol tcp
    match destination-port object-group sa
    enable
  exit
  rule 90
    action permit
    match protocol udp
    match destination-port object-group radius_auth
    enable
  exit
  rule 100
    action permit
    match protocol gre
    enable
  exit
  rule 110
    action permit
    match protocol tcp
    match destination-port object-group airtune
    enable
  exit
  rule 120
    action permit
    match protocol tcp
    match destination-port object-group web
    enable
  exit
exit
security zone-pair untrusted self
  rule 1
    action permit
    match protocol udp
    match source-port object-group dhcp_server
    match destination-port object-group dhcp_client
    enable
  exit
  rule 2
    action permit
    match protocol udp
    match destination-port object-group radius_auth
    enable
  exit
  rule 3
    action permit
    match protocol tcp
    match destination-port object-group ssh
    enable
  exit
  rule 4
    action permit
    match protocol icmp
    enable
  exit
exit
security zone-pair users self
  rule 10
    action permit
    match protocol icmp
    enable
  exit
  rule 20
    action permit
    match protocol udp
    match source-port object-group dhcp_client
    match destination-port object-group dhcp_server
    enable
  exit
  rule 30
    action permit
    match protocol tcp
    match destination-port object-group dns
    enable
  exit
  rule 40
    action permit
    match protocol udp
    match destination-port object-group dns
    enable
  exit
exit
security zone-pair users untrusted
  rule 1
    action permit
    enable
  exit
exit

security passwords default-expired

nat source
  ruleset factory
    to zone untrusted
    rule 10
      description "replace 'source ip' by outgoing interface ip address"
      action source-nat interface
      enable
    exit
  exit
exit

ip dhcp-server
ip dhcp-server pool ap-pool
  network 192.168.1.0/24
  address-range 192.168.1.2-192.168.1.254
  default-router 192.168.1.1
  dns-server 192.168.1.1
  option 42 ip-address 192.168.1.1
  vendor-specific
    suboption 12 ascii-text "192.168.1.1"
    suboption 15 ascii-text "https://192.168.1.1:8043"
  exit
exit
ip dhcp-server pool users-pool
  network 192.168.2.0/24
  address-range 192.168.2.2-192.168.2.254
  default-router 192.168.2.1
  dns-server 192.168.2.1
exit

softgre-controller
  nas-ip-address 127.0.0.1
  data-tunnel configuration wlc
  aaa radius-profile default_radius
  keepalive-disable
  service-vlan add 3
  enable
exit

wlc
  outside-address 192.168.1.1
  service-activator
    aps join auto
  exit
  ap-location default-location
    mode tunnel
    ap-profile default-ap
    ssid-profile default-ssid
  exit
  ssid-profile default-ssid
    ssid "!WNAM.test-portal"
    radius-profile default-radius
    portal-enable
    portal-profile default-portal
    vlan-id 3
    band 2g
    band 5g
    enable
  exit
  ap-profile default-ap
    password ascii-text password
  exit
  portal-profile default-portal
    redirect-url http://93.180.6.157/cp/eltexwlc
    age-timeout 1
    verification-mode external-portal
  exit
  radius-profile default-radius
    auth-address 192.168.1.1
    auth-password ascii-text testing123
    session password mac
    auth-acct-id-send
    acct-enable
    acct-address 192.168.1.1
    acct-password ascii-text testing123
    acct-periodic
    domain default
  exit
  ip-pool default-ip-pool
    description "default-ip-pool"
    ap-location default-location
  exit
  enable
exit

ip ssh server

clock timezone gmt +7

ntp enable
ntp server 194.190.168.1
exit

Использование сертификатов для сокрытия передаваемых учетных данных (username, password) между клиентом и ТД

В данной тестовой настройке сертификаты не использовались. Подробнее про использование сертификатов в статье по ссылке.

Для повышения безопасности передачи данных между клиентом и ТД необходимо обеспечить шифрование трафика с использованием SSL.

Для этого требуется:

  • SSL-сертификат (формат PEM);

  • Приватный ключ (формат PEM).

На ТД возможно использовать RSA-сертификаты. ECDSA-сертификаты не поддержаны.

Для защиты приватного ключа в схеме с портальной авторизацией рекомендуется использовать пароль.

Стандартный процесс выпуска сертификатов не предусматривает автоматическое шифрование приватного ключа. Однако это можно выполнить вручную с помощью утилиты OpenSSL.

Команда для шифрования ключа:

openssl rsa -aes256 -in private_key.pem -out private_key_encrypted.pem

Параметры:

  • -aes256 – алгоритм шифрования (можно заменить на -aes128 или -aes192);

  • -in private_key.pem – исходный незашифрованный ключ;

  • -out private_key_encrypted.pem – зашифрованный ключ.

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

Этот подход обеспечит дополнительный уровень защиты приватного ключа от несанкционированного доступа.

Данная процедура проводится вне процесса выпуска сертификата и является дополнительной мерой безопасности.

После шифрования ключа его необходимо добавить к сертификату, например через текстовый редактор. Файл сертификата с зашифрованным ключом должен иметь вид:

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----

-----END ENCRYPTED PRIVATE KEY-----

Загрузите файл сертификата с зашифрованным ключом на контроллер WLC в директорию crypto:cert/

Настройте проверку сертификата и включите режим HTTPs:

wlc
  ap-profile default-ap
    captive-portal
      ap-ip-alias certificate_alias
      crypto cert certificate_encrypted.pem
      crypto private-key-password ascii-text password
      proxy-https
    exit

Перед применением конфигурации произойдёт проверка псевдонима сертификата и пароля зашифрованного ключа.

Допустимо использовать сертификат без зашифрованного ключа. В таком случае приватный ключ добавляется к сертификату. Настройка crypto private-key-password не требуется.

Формат файла для сертификата без зашифрованного ключа:

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

Конфигурация:

wlc
  ap-profile default-ap
    captive-portal
      ap-ip-alias certificate_alias
      crypto cert certificate.pem
      proxy-https
    exit

Настройка точки доступа

В заводской конфигурации WLC-30 предусмотрено автоматическое подключение точек доступа к контроллеру. Для этого требуется подключить точку доступа в порт gi1/0/2, и контроллер WLC сам выполнит обновление, если версия ПО на точке доступа не соответствует версии, которая размещена на контроллере, выполнит конфигурирование в соответствии с настройками: выбранными профилями конфигурации и SSID. Инструкцию по загрузке актуальной версии ПО точек доступа на контроллер можно найти по ссылке. 

Настройка WNAM

Создание "Сервера доступа" (NAS)

В разделе "Конфигурация" → "Сервера доступа" создайте запись о сервере доступа типа Cisco WLC (сервер доступа – контроллер), укажите адрес, имя и местоположение (логин и пароль не используются).

Во вкладке RADIUS укажите секретный RADIUS-ключ, (который указали на контроллере в настройках ААА-сервера) и включите МАС-авторизацию.

Если сеть, в которой находится контроллер, ещё не была глобально разрешена для работы системы WNAM в настройках "Конфигурация" → "Дополнительные настройки" (ключ "radiusd_networks"), необходимо добавить сеть.

Создание "Площадки" (портала)

Затем необходимо настроить запись о площадке оказания услуги (раздел "Конфигурация" → "Площадки"). Также можно указать название сети (SSID) и в качестве "Дополнительный ID" указать название "Сервера доступа" (NAS).

На вкладке "Авторизация" выберите метод "Отправка СМС абоненту", провайдера СМС "Тестовый провайдер (без отправки)" и тогда идентификация на портале (в рамках теста авторизации) будет проходить по присланному коду, после ввода фейкового номера телефона (в рамках тестов гостевого портала).

На вкладке "Приветствие" выберите, куда будет направляться клиент после финального редиректа. В нашем случае на сайт https://eltex.ru/

Правила аутентификации

Правило для редиректа на гостевой портал (создание своего правила или использование дефолтного)

Настройте правило, как на скрине ниже. 

При большом количестве правил и при использовании разных политик аутентификаций и авторизаций клиентов, данное правило можно кастомизировать дополнительными параметрами под свои потребности (чтоб данное правило отрабатывало только необходимые запросы radius). Правило аутентификации привязывается к правилу авторизации при помощи тега.

Тэг должен быть уникальным и совпадать с соответствующим правилом авторизации (если сработало правило аутентификации, далее по данному тегу запускается соответствующее правило авторизации).


Создание правила аутентификации для доступа клиента в Internet

Данное правило проверяет наличие MAC-адреса в хранилище гостевых эндпоинтов. MAC-адрес попадает туда после того, как клиент идентифицировал себе на гостевом портале. Поэтому в настройках "Эндпоит" выберите пункт "Известен и валиден", а в "Результат" — "Allow (и проверять правила авторизации)". 

Создание правил авторизации

Первое правило для редиректа на портал

Результатом должно стать отправка пакета Radius 'Access-Reject' контроллеру (NAS). Пример настройки представлен на скрине ниже. 

Правило привязывается по совпадению тега (должен быть такой же, как в соответствующем правиле аутентификации).


Второе правило авторизации для предоставления доступа в Internet

Результатом должно стать отправка пакета Radius 'Access-Accept' контроллеру (NAS). Пример настройки представлен на скрине ниже.

На этом настройка WNAM окончена.

Диагностика на стороне WLC

Radius-обмен между WLC и WNAM в процессе авторизации

Radius-пакеты и атрибуты:

No.	Time	       Source	    Destination	   Protocol	Length	  Info
1	0.000000	100.127.2.200	93.180.6.157	RADIUS	354	Access-Request id=159
2	0.103235	93.180.6.157	100.127.2.200	RADIUS	84	Access-Reject id=159
3	26.950520	100.127.2.200	93.180.6.157	RADIUS	338	Access-Request id=219
4	27.066876	93.180.6.157	100.127.2.200	RADIUS	97	Access-Accept id=219
5	27.071716	100.127.2.200	93.180.6.157	RADIUS	296	Accounting-Request id=93
6	27.192914	93.180.6.157	100.127.2.200	RADIUS	66	Accounting-Response id=93
7	39.051705	100.127.2.200	93.180.6.157	RADIUS	389	Accounting-Request id=173
8	39.116628	93.180.6.157	100.127.2.200	RADIUS	66	Accounting-Response id=173
9	65.711184	100.127.2.200	93.180.6.157	RADIUS	354	Access-Request id=103
10	65.788076	93.180.6.157	100.127.2.200	RADIUS	97	Access-Accept id=103
11	66.662961	100.127.2.200	93.180.6.157	RADIUS	291	Accounting-Request id=44
12	66.770910	93.180.6.157	100.127.2.200	RADIUS	66	Accounting-Response id=44
13	88.551562	100.127.2.200	93.180.6.157	RADIUS	384	Accounting-Request id=45
14	88.629895	93.180.6.157	100.127.2.200	RADIUS	66	Accounting-Response id=45
RADIUS Protocol
    Code: Access-Request (1)
    Packet identifier: 0x9f (159)
    Length: 312
    Authenticator: f5a376c98a72dd93d0f46a34b09becc6
    [The response to this request is in frame 2]
    Attribute Value Pairs
        AVP: t=User-Name(1) l=19 val=78:98:e8:1e:67:07
        AVP: t=User-Password(2) l=34 val=Encrypted
        AVP: t=Framed-IP-Address(8) l=6 val=0.0.0.0
        AVP: t=Framed-MTU(12) l=6 val=1500
        AVP: t=Connect-Info(77) l=23 val=CONNECT 0Mbps 802.11a
        AVP: t=Vendor-Specific(26) l=24 vnd=Eltex Enterprise, Ltd.(35265)
        AVP: t=Vendor-Specific(26) l=15 vnd=Eltex Enterprise, Ltd.(35265)
        AVP: t=NAS-Port-Id(87) l=13 val=7;Vlan-ID=3
        AVP: t=Called-Station-Id(30) l=37 val=68-13-e2-c2-f7-40:!WNAM.test-portal
        AVP: t=Calling-Station-Id(31) l=19 val=78-98-e8-1e-67-07
        AVP: t=NAS-Port(5) l=6 val=1
        AVP: t=Framed-MTU(12) l=6 val=1500
        AVP: t=NAS-Port-Type(61) l=6 val=Wireless-802.11(19)
        AVP: t=Acct-Session-Id(44) l=19 val=3CC3E9CF-764E73AC
        AVP: t=NAS-IP-Address(4) l=6 val=100.127.2.200
        AVP: t=NAS-Identifier(32) l=19 val=68-13-E2-C2-F7-40
        AVP: t=Service-Type(6) l=6 val=Call-Check(10)
        AVP: t=Message-Authenticator(80) l=18 val=4301eba80b4bffc803b7921c1232958c
        AVP: t=Event-Timestamp(55) l=6 val=Feb 16, 2026 16:25:17.000000000 Новосибирское стандартное время
        AVP: t=Proxy-State(33) l=4 val=3237
RADIUS Protocol
    Code: Access-Reject (3)
    Packet identifier: 0x9f (159)
    Length: 42
    Authenticator: 231c3a7d967997956f2d40d9020a634e
    [This is a response to a request in frame 1]
    [Time from request: 0.103235000 seconds]
    Attribute Value Pairs
        AVP: t=Proxy-State(33) l=4 val=3237
        AVP: t=Message-Authenticator(80) l=18 val=812049084cc5338da60a9738a027c313
RADIUS Protocol
    Code: Access-Request (1)
    Packet identifier: 0xdb (219)
    Length: 296
    Authenticator: 56358e92bb13e79dda42be5a8cc2d81a
    [The response to this request is in frame 4]
    Attribute Value Pairs
        AVP: t=User-Name(1) l=19 val=78:98:E8:1E:67:07
        AVP: t=User-Password(2) l=18 val=Encrypted
        AVP: t=Framed-IP-Address(8) l=6 val=192.168.2.47
        AVP: t=Framed-MTU(12) l=6 val=1500
        AVP: t=Connect-Info(77) l=23 val=CONNECT 0Mbps 802.11a
        AVP: t=Vendor-Specific(26) l=24 vnd=Eltex Enterprise, Ltd.(35265)
        AVP: t=Vendor-Specific(26) l=15 vnd=Eltex Enterprise, Ltd.(35265)
        AVP: t=NAS-Port-Id(87) l=13 val=7;Vlan-ID=3
        AVP: t=Called-Station-Id(30) l=37 val=68-13-e2-c2-f7-40:!WNAM.test-portal
        AVP: t=Calling-Station-Id(31) l=19 val=78-98-e8-1e-67-07
        AVP: t=NAS-Port(5) l=6 val=1
        AVP: t=Framed-MTU(12) l=6 val=1500
        AVP: t=NAS-Port-Type(61) l=6 val=Wireless-802.11(19)
        AVP: t=Acct-Session-Id(44) l=19 val=3CC3E9CF-764E73AC
        AVP: t=NAS-IP-Address(4) l=6 val=100.127.2.200
        AVP: t=NAS-Identifier(32) l=19 val=68-13-E2-C2-F7-40
        AVP: t=Service-Type(6) l=6 val=Login(1)
        AVP: t=Message-Authenticator(80) l=18 val=d3ef8b6c16ac100d4fc272ca92fd37f4
        AVP: t=Event-Timestamp(55) l=6 val=Feb 16, 2026 16:25:44.000000000 Новосибирское стандартное время
        AVP: t=Proxy-State(33) l=4 val=3238
RADIUS Protocol
    Code: Access-Accept (2)
    Packet identifier: 0xdb (219)
    Length: 55
    Authenticator: 3a7c971cd21e244dad2735adac382da9
    [This is a response to a request in frame 3]
    [Time from request: 0.116356000 seconds]
    Attribute Value Pairs
        AVP: t=User-Name(1) l=13 val=79998887711
        AVP: t=Proxy-State(33) l=4 val=3238
        AVP: t=Message-Authenticator(80) l=18 val=91697f801ad0ac28f3c2d6ae5a27a97f
F.E.wlc-30(debug)# sh radius-debug t 0
(2) Mon Feb 16 15:35:34 2026: Debug: Received Access-Request Id 7 from 192.168.1.3:48741 to 192.168.1.1:1812 length 302
(2) Mon Feb 16 15:35:34 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(2) Mon Feb 16 15:35:34 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-IP-Address = 0.0.0.0
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-MTU = 1500
(2) Mon Feb 16 15:35:34 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(2) Mon Feb 16 15:35:34 2026: Debug:   Eltex-AP-Domain = "default-location"
(2) Mon Feb 16 15:35:34 2026: Debug:   Eltex-Domain = "default"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(2) Mon Feb 16 15:35:34 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(2) Mon Feb 16 15:35:34 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port = 1
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-MTU = 1500
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port-Type = Wireless-802.11
(2) Mon Feb 16 15:35:34 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-IP-Address = 192.168.1.3
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(2) Mon Feb 16 15:35:34 2026: Debug:   Service-Type = Call-Check
(2) Mon Feb 16 15:35:34 2026: Debug:   Message-Authenticator = 0x6114bf8fece534b99a36486f52dc6725
(2) Mon Feb 16 15:35:34 2026: Debug: # Executing section authorize from file /etc/raddb/sites-enabled/_default
(2) Mon Feb 16 15:35:34 2026: Debug:   authorize {
(2) Mon Feb 16 15:35:34 2026: Debug:     policy filter_username {
(2) Mon Feb 16 15:35:34 2026: Debug:       if (&User-Name) {
(2) Mon Feb 16 15:35:34 2026: Debug:       if (&User-Name)  -> TRUE
(2) Mon Feb 16 15:35:34 2026: Debug:       if (&User-Name)  {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ / /) {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ / /)  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /@[^@]*@/ ) {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /\.\./ ) {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /\.\./ )  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(2) Mon Feb 16 15:35:34 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /\.$/)  {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /\.$/)   -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /@\./)  {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&User-Name =~ /@\./)   -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:       } # if (&User-Name)  = notfound
(2) Mon Feb 16 15:35:34 2026: Debug:     } # policy filter_username = notfound
(2) Mon Feb 16 15:35:34 2026: Debug:     [preprocess] = ok
(2) Mon Feb 16 15:35:34 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper") {
(2) Mon Feb 16 15:35:34 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper")  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:     else {
(2) Mon Feb 16 15:35:34 2026: Debug:       policy get_ssid {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}") {
(2) Mon Feb 16 15:35:34 2026: Debug:         EXPAND %{8}
(2) Mon Feb 16 15:35:34 2026: Debug:            --> !WNAM.test-portal
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  -> TRUE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  {
(2) Mon Feb 16 15:35:34 2026: Debug:           update request {
(2) Mon Feb 16 15:35:34 2026: Debug:             EXPAND %{8}
(2) Mon Feb 16 15:35:34 2026: Debug:                --> !WNAM.test-portal
(2) Mon Feb 16 15:35:34 2026: Debug:           } # update request = noop
(2) Mon Feb 16 15:35:34 2026: Debug:           [updated] = updated
(2) Mon Feb 16 15:35:34 2026: Debug:         } # if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  = updated
(2) Mon Feb 16 15:35:34 2026: Debug:         ... skipping else: Preceding "if" was taken
(2) Mon Feb 16 15:35:34 2026: Debug:       } # policy get_ssid = updated
(2) Mon Feb 16 15:35:34 2026: Debug:       policy auth_by_ssid_default {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-SSID) {
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-SSID)  -> TRUE
(2) Mon Feb 16 15:35:34 2026: Debug:         if (&Called-Station-SSID)  {
(2) Mon Feb 16 15:35:34 2026: Debug:           policy auth_default {
(2) Mon Feb 16 15:35:34 2026: Debug:             update request {
(2) Mon Feb 16 15:35:34 2026: Debug:             } # update request = noop
(2) Mon Feb 16 15:35:34 2026: Debug:             update control {
(2) Mon Feb 16 15:35:34 2026: Debug:             } # update control = noop
(2) Mon Feb 16 15:35:34 2026: Debug:           } # policy auth_default = noop
(2) Mon Feb 16 15:35:34 2026: Debug:         } # if (&Called-Station-SSID)  = noop
(2) Mon Feb 16 15:35:34 2026: Debug:         ... skipping else: Preceding "if" was taken
(2) Mon Feb 16 15:35:34 2026: Debug:       } # policy auth_by_ssid_default = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     } # else = updated
(2) Mon Feb 16 15:35:34 2026: Debug:     [chap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     [mschap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     [digest] = noop
(2) Mon Feb 16 15:35:34 2026: Debug: suffix: Checking for suffix after "@"
(2) Mon Feb 16 15:35:34 2026: Debug: suffix: No '@' in User-Name = "78:98:e8:1e:67:07", looking up realm NULL
(2) Mon Feb 16 15:35:34 2026: Debug: suffix: No such realm "NULL"
(2) Mon Feb 16 15:35:34 2026: Debug:     [suffix] = noop
(2) Mon Feb 16 15:35:34 2026: Debug: files_multi: users: Matched entry DEFAULT at line 1
(2) Mon Feb 16 15:35:34 2026: Debug:     [files_multi] = ok
(2) Mon Feb 16 15:35:34 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1) {
(2) Mon Feb 16 15:35:34 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1)  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:     else {
(2) Mon Feb 16 15:35:34 2026: Debug: eap: No EAP-Message, not doing EAP
(2) Mon Feb 16 15:35:34 2026: Debug:       [eap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     } # else = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     if (ok) {
(2) Mon Feb 16 15:35:34 2026: Debug:     if (ok)  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:     [expiration] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     [logintime] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     [pap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:   } # authorize = updated
(2) Mon Feb 16 15:35:34 2026: Debug: Starting proxy to home server 93.180.6.157 port 1812
(2) Mon Feb 16 15:35:34 2026: Debug: server default {
(2) Mon Feb 16 15:35:34 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(2) Mon Feb 16 15:35:34 2026: Debug:     pre-proxy {
(2) Mon Feb 16 15:35:34 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(2) Mon Feb 16 15:35:34 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:     } # pre-proxy = noop
(2) Mon Feb 16 15:35:34 2026: Debug: }
(2) Mon Feb 16 15:35:34 2026: Debug: Sent Access-Request Id 123 from 0.0.0.0:51831 to 93.180.6.157:1812 length 311
(2) Mon Feb 16 15:35:34 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(2) Mon Feb 16 15:35:34 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-IP-Address = 0.0.0.0
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-MTU = 1500
(2) Mon Feb 16 15:35:34 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(2) Mon Feb 16 15:35:34 2026: Debug:   Eltex-AP-Domain = "default-location"
(2) Mon Feb 16 15:35:34 2026: Debug:   Eltex-Domain = "default"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(2) Mon Feb 16 15:35:34 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(2) Mon Feb 16 15:35:34 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port = 1
(2) Mon Feb 16 15:35:34 2026: Debug:   Framed-MTU = 1500
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Port-Type = Wireless-802.11
(2) Mon Feb 16 15:35:34 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-IP-Address := 100.127.2.200
(2) Mon Feb 16 15:35:34 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(2) Mon Feb 16 15:35:34 2026: Debug:   Service-Type = Call-Check
(2) Mon Feb 16 15:35:34 2026: Debug:   Message-Authenticator = 0x6114bf8fece534b99a36486f52dc6725
(2) Mon Feb 16 15:35:34 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:35:34 GMT+7"
(2) Mon Feb 16 15:35:34 2026: Debug:   Proxy-State = 0x37
(2) Mon Feb 16 15:35:34 2026: Debug: Clearing existing &reply: attributes
(2) Mon Feb 16 15:35:34 2026: Debug: Received Access-Reject Id 123 from 93.180.6.157:1812 to 100.127.2.200:51831 length 41
(2) Mon Feb 16 15:35:34 2026: Debug:   Proxy-State = 0x37
(2) Mon Feb 16 15:35:34 2026: Debug:   Message-Authenticator = 0xf0b9091c255e1c75cfebfb6520819e78
(2) Mon Feb 16 15:35:34 2026: Debug: server default {
(2) Mon Feb 16 15:35:34 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(2) Mon Feb 16 15:35:34 2026: Debug:     post-proxy {
(2) Mon Feb 16 15:35:34 2026: Debug: eap: No pre-existing handler found
(2) Mon Feb 16 15:35:34 2026: Debug:       [eap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     } # post-proxy = noop
(2) Mon Feb 16 15:35:34 2026: Debug: }
(2) Mon Feb 16 15:35:34 2026: Debug: Using Post-Auth-Type Reject
(2) Mon Feb 16 15:35:34 2026: Debug: # Executing group from file /etc/raddb/sites-enabled/_default
(2) Mon Feb 16 15:35:34 2026: Debug:   Post-Auth-Type REJECT {
(2) Mon Feb 16 15:35:34 2026: Debug: attr_filter.access_reject: EXPAND %{User-Name}
(2) Mon Feb 16 15:35:34 2026: Debug: attr_filter.access_reject:    --> 78:98:e8:1e:67:07
(2) Mon Feb 16 15:35:34 2026: Debug: attr_filter.access_reject: Matched entry DEFAULT at line 11
(2) Mon Feb 16 15:35:34 2026: Debug:     [attr_filter.access_reject] = updated
(2) Mon Feb 16 15:35:34 2026: Debug:     [eap] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     policy remove_reply_message_if_eap {
(2) Mon Feb 16 15:35:34 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message) {
(2) Mon Feb 16 15:35:34 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(2) Mon Feb 16 15:35:34 2026: Debug:       else {
(2) Mon Feb 16 15:35:34 2026: Debug:         [noop] = noop
(2) Mon Feb 16 15:35:34 2026: Debug:       } # else = noop
(2) Mon Feb 16 15:35:34 2026: Debug:     } # policy remove_reply_message_if_eap = noop
(2) Mon Feb 16 15:35:34 2026: Debug:   } # Post-Auth-Type REJECT = updated
(2) Mon Feb 16 15:35:34 2026: Debug: Delaying response for 1.000000 seconds
(2) Mon Feb 16 15:35:35 2026: Debug: Sending delayed response
(2) Mon Feb 16 15:35:35 2026: Debug: Sent Access-Reject Id 7 from 192.168.1.1:1812 to 192.168.1.3:48741 length 38
(2) Mon Feb 16 15:35:35 2026: Debug:   Message-Authenticator = 0xf0b9091c255e1c75cfebfb6520819e78
(2) Mon Feb 16 15:35:39 2026: Debug: Cleaning up request packet ID 7 with timestamp +237
(3) Mon Feb 16 15:35:50 2026: Debug: Received Access-Request Id 8 from 192.168.1.3:48741 to 192.168.1.1:1812 length 286
(3) Mon Feb 16 15:35:50 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(3) Mon Feb 16 15:35:50 2026: Debug:   User-Password = "password"
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-IP-Address = 192.168.2.47
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-MTU = 1500
(3) Mon Feb 16 15:35:50 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(3) Mon Feb 16 15:35:50 2026: Debug:   Eltex-AP-Domain = "default-location"
(3) Mon Feb 16 15:35:50 2026: Debug:   Eltex-Domain = "default"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(3) Mon Feb 16 15:35:50 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(3) Mon Feb 16 15:35:50 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port = 1
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-MTU = 1500
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port-Type = Wireless-802.11
(3) Mon Feb 16 15:35:50 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-IP-Address = 192.168.1.3
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(3) Mon Feb 16 15:35:50 2026: Debug:   Service-Type = Login-User
(3) Mon Feb 16 15:35:50 2026: Debug:   Message-Authenticator = 0x8f1d7ee650d2c7de6437dd85420e109d
(3) Mon Feb 16 15:35:50 2026: Debug: # Executing section authorize from file /etc/raddb/sites-enabled/_default
(3) Mon Feb 16 15:35:50 2026: Debug:   authorize {
(3) Mon Feb 16 15:35:50 2026: Debug:     policy filter_username {
(3) Mon Feb 16 15:35:50 2026: Debug:       if (&User-Name) {
(3) Mon Feb 16 15:35:50 2026: Debug:       if (&User-Name)  -> TRUE
(3) Mon Feb 16 15:35:50 2026: Debug:       if (&User-Name)  {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ / /) {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ / /)  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /@[^@]*@/ ) {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /\.\./ ) {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /\.\./ )  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(3) Mon Feb 16 15:35:50 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /\.$/)  {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /\.$/)   -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /@\./)  {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&User-Name =~ /@\./)   -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:       } # if (&User-Name)  = notfound
(3) Mon Feb 16 15:35:50 2026: Debug:     } # policy filter_username = notfound
(3) Mon Feb 16 15:35:50 2026: Debug:     [preprocess] = ok
(3) Mon Feb 16 15:35:50 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper") {
(3) Mon Feb 16 15:35:50 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper")  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:     else {
(3) Mon Feb 16 15:35:50 2026: Debug:       policy get_ssid {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}") {
(3) Mon Feb 16 15:35:50 2026: Debug:         EXPAND %{8}
(3) Mon Feb 16 15:35:50 2026: Debug:            --> !WNAM.test-portal
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  -> TRUE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  {
(3) Mon Feb 16 15:35:50 2026: Debug:           update request {
(3) Mon Feb 16 15:35:50 2026: Debug:             EXPAND %{8}
(3) Mon Feb 16 15:35:50 2026: Debug:                --> !WNAM.test-portal
(3) Mon Feb 16 15:35:50 2026: Debug:           } # update request = noop
(3) Mon Feb 16 15:35:50 2026: Debug:           [updated] = updated
(3) Mon Feb 16 15:35:50 2026: Debug:         } # if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  = updated
(3) Mon Feb 16 15:35:50 2026: Debug:         ... skipping else: Preceding "if" was taken
(3) Mon Feb 16 15:35:50 2026: Debug:       } # policy get_ssid = updated
(3) Mon Feb 16 15:35:50 2026: Debug:       policy auth_by_ssid_default {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-SSID) {
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-SSID)  -> TRUE
(3) Mon Feb 16 15:35:50 2026: Debug:         if (&Called-Station-SSID)  {
(3) Mon Feb 16 15:35:50 2026: Debug:           policy auth_default {
(3) Mon Feb 16 15:35:50 2026: Debug:             update request {
(3) Mon Feb 16 15:35:50 2026: Debug:             } # update request = noop
(3) Mon Feb 16 15:35:50 2026: Debug:             update control {
(3) Mon Feb 16 15:35:50 2026: Debug:             } # update control = noop
(3) Mon Feb 16 15:35:50 2026: Debug:           } # policy auth_default = noop
(3) Mon Feb 16 15:35:50 2026: Debug:         } # if (&Called-Station-SSID)  = noop
(3) Mon Feb 16 15:35:50 2026: Debug:         ... skipping else: Preceding "if" was taken
(3) Mon Feb 16 15:35:50 2026: Debug:       } # policy auth_by_ssid_default = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     } # else = updated
(3) Mon Feb 16 15:35:50 2026: Debug:     [chap] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     [mschap] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     [digest] = noop
(3) Mon Feb 16 15:35:50 2026: Debug: suffix: Checking for suffix after "@"
(3) Mon Feb 16 15:35:50 2026: Debug: suffix: No '@' in User-Name = "78:98:E8:1E:67:07", looking up realm NULL
(3) Mon Feb 16 15:35:50 2026: Debug: suffix: No such realm "NULL"
(3) Mon Feb 16 15:35:50 2026: Debug:     [suffix] = noop
(3) Mon Feb 16 15:35:50 2026: Debug: files_multi: users: Matched entry DEFAULT at line 1
(3) Mon Feb 16 15:35:50 2026: Debug:     [files_multi] = ok
(3) Mon Feb 16 15:35:50 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1) {
(3) Mon Feb 16 15:35:50 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1)  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:     else {
(3) Mon Feb 16 15:35:50 2026: Debug: eap: No EAP-Message, not doing EAP
(3) Mon Feb 16 15:35:50 2026: Debug:       [eap] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     } # else = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     if (ok) {
(3) Mon Feb 16 15:35:50 2026: Debug:     if (ok)  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:     [expiration] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     [logintime] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:     [pap] = noop
(3) Mon Feb 16 15:35:50 2026: Debug:   } # authorize = updated
(3) Mon Feb 16 15:35:50 2026: Debug: Starting proxy to home server 93.180.6.157 port 1812
(3) Mon Feb 16 15:35:50 2026: Debug: server default {
(3) Mon Feb 16 15:35:50 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(3) Mon Feb 16 15:35:50 2026: Debug:     pre-proxy {
(3) Mon Feb 16 15:35:50 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(3) Mon Feb 16 15:35:50 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(3) Mon Feb 16 15:35:50 2026: Debug:     } # pre-proxy = noop
(3) Mon Feb 16 15:35:50 2026: Debug: }
(3) Mon Feb 16 15:35:50 2026: Debug: Sent Access-Request Id 143 from 0.0.0.0:51831 to 93.180.6.157:1812 length 295
(3) Mon Feb 16 15:35:50 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(3) Mon Feb 16 15:35:50 2026: Debug:   User-Password = "password"
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-IP-Address = 192.168.2.47
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-MTU = 1500
(3) Mon Feb 16 15:35:50 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(3) Mon Feb 16 15:35:50 2026: Debug:   Eltex-AP-Domain = "default-location"
(3) Mon Feb 16 15:35:50 2026: Debug:   Eltex-Domain = "default"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(3) Mon Feb 16 15:35:50 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(3) Mon Feb 16 15:35:50 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port = 1
(3) Mon Feb 16 15:35:50 2026: Debug:   Framed-MTU = 1500
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Port-Type = Wireless-802.11
(3) Mon Feb 16 15:35:50 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-IP-Address := 100.127.2.200
(3) Mon Feb 16 15:35:50 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(3) Mon Feb 16 15:35:50 2026: Debug:   Service-Type = Login-User
(3) Mon Feb 16 15:35:50 2026: Debug:   Message-Authenticator = 0x8f1d7ee650d2c7de6437dd85420e109d
(3) Mon Feb 16 15:35:50 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:35:50 GMT+7"
(3) Mon Feb 16 15:35:50 2026: Debug:   Proxy-State = 0x38
(3) Mon Feb 16 15:35:51 2026: Debug: Clearing existing &reply: attributes
(3) Mon Feb 16 15:35:51 2026: Debug: Received Access-Accept Id 143 from 93.180.6.157:1812 to 100.127.2.200:51831 length 54
(3) Mon Feb 16 15:35:51 2026: Debug:   User-Name = "79997775511"
(3) Mon Feb 16 15:35:51 2026: Debug:   Proxy-State = 0x38
(3) Mon Feb 16 15:35:51 2026: Debug:   Message-Authenticator = 0x38dc1636f079461038167967922a6e9a
(3) Mon Feb 16 15:35:51 2026: Debug: server default {
(3) Mon Feb 16 15:35:51 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(3) Mon Feb 16 15:35:51 2026: Debug:     post-proxy {
(3) Mon Feb 16 15:35:51 2026: Debug: eap: No pre-existing handler found
(3) Mon Feb 16 15:35:51 2026: Debug:       [eap] = noop
(3) Mon Feb 16 15:35:51 2026: Debug:     } # post-proxy = noop
(3) Mon Feb 16 15:35:51 2026: Debug: }
(3) Mon Feb 16 15:35:51 2026: Debug: Found Auth-Type = Accept
(3) Mon Feb 16 15:35:51 2026: Debug: Auth-Type = Accept, accepting the user
(3) Mon Feb 16 15:35:51 2026: Debug: # Executing section post-auth from file /etc/raddb/sites-enabled/_default
(3) Mon Feb 16 15:35:51 2026: Debug:   post-auth {
(3) Mon Feb 16 15:35:51 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name)) {
(3) Mon Feb 16 15:35:51 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name))  -> FALSE
(3) Mon Feb 16 15:35:51 2026: Debug:     update {
(3) Mon Feb 16 15:35:51 2026: Debug:       No attributes updated for RHS &session-state:
(3) Mon Feb 16 15:35:51 2026: Debug:     } # update = noop
(3) Mon Feb 16 15:35:51 2026: Debug:     [exec] = noop
(3) Mon Feb 16 15:35:51 2026: Debug:     policy remove_reply_message_if_eap {
(3) Mon Feb 16 15:35:51 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message) {
(3) Mon Feb 16 15:35:51 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(3) Mon Feb 16 15:35:51 2026: Debug:       else {
(3) Mon Feb 16 15:35:51 2026: Debug:         [noop] = noop
(3) Mon Feb 16 15:35:51 2026: Debug:       } # else = noop
(3) Mon Feb 16 15:35:51 2026: Debug:     } # policy remove_reply_message_if_eap = noop
(3) Mon Feb 16 15:35:51 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id) {
(3) Mon Feb 16 15:35:51 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id)  -> FALSE
(3) Mon Feb 16 15:35:51 2026: Debug:     update reply {
(3) Mon Feb 16 15:35:51 2026: Debug:     } # update reply = noop
(3) Mon Feb 16 15:35:51 2026: Debug:   } # post-auth = noop
(3) Mon Feb 16 15:35:51 2026: Debug: Sent Access-Accept Id 8 from 192.168.1.1:1812 to 192.168.1.3:48741 length 51
(3) Mon Feb 16 15:35:51 2026: Debug:   User-Name = "79997775511"
(3) Mon Feb 16 15:35:51 2026: Debug:   Message-Authenticator = 0x38dc1636f079461038167967922a6e9a
(3) Mon Feb 16 15:35:51 2026: Debug: Finished request
(4) Mon Feb 16 15:35:51 2026: Debug: Received Accounting-Request Id 9 from 192.168.1.3:38749 to 192.168.1.1:1813 length 250
(4) Mon Feb 16 15:35:51 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(4) Mon Feb 16 15:35:51 2026: Debug:   Acct-Status-Type = Start
(4) Mon Feb 16 15:35:51 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(4) Mon Feb 16 15:35:51 2026: Debug:   Service-Type = Login-User
(4) Mon Feb 16 15:35:51 2026: Debug:   Eltex-Domain = "default"
(4) Mon Feb 16 15:35:51 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:35:51 GMT+7"
(4) Mon Feb 16 15:35:51 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(4) Mon Feb 16 15:35:51 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Port-Type = Wireless-802.11
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-IP-Address = 192.168.1.3
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(4) Mon Feb 16 15:35:51 2026: Debug:   Framed-IP-Address = 192.168.2.47
(4) Mon Feb 16 15:35:51 2026: Debug:   Framed-MTU = 1500
(4) Mon Feb 16 15:35:51 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(4) Mon Feb 16 15:35:51 2026: Debug:   Eltex-AP-Domain = "default-location"
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(4) Mon Feb 16 15:35:51 2026: Debug: # Executing section preacct from file /etc/raddb/sites-enabled/_default
(4) Mon Feb 16 15:35:51 2026: Debug:   preacct {
(4) Mon Feb 16 15:35:51 2026: Debug:     [preprocess] = ok
(4) Mon Feb 16 15:35:51 2026: Debug:     policy acct_unique {
(4) Mon Feb 16 15:35:51 2026: Debug:       update request {
(4) Mon Feb 16 15:35:51 2026: Debug:       } # update request = noop
(4) Mon Feb 16 15:35:51 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i)) {
(4) Mon Feb 16 15:35:51 2026: Debug:       EXPAND %{hex:&Class}
(4) Mon Feb 16 15:35:51 2026: Debug:          -->
(4) Mon Feb 16 15:35:51 2026: Debug:       EXPAND ^%{hex:&Tmp-String-9}
(4) Mon Feb 16 15:35:51 2026: Debug:          --> ^61693a
(4) Mon Feb 16 15:35:51 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i))  -> FALSE
(4) Mon Feb 16 15:35:51 2026: Debug:       else {
(4) Mon Feb 16 15:35:51 2026: Debug:         update request {
(4) Mon Feb 16 15:35:51 2026: Debug:           EXPAND %{md5:%{User-Name},%{Acct-Session-ID},%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}},%{NAS-Identifier},%{NAS-Port-ID},%{NAS-Port}}
(4) Mon Feb 16 15:35:51 2026: Debug:              --> bfa1411e8e2d666b3df46e20af1810fc
(4) Mon Feb 16 15:35:51 2026: Debug:         } # update request = noop
(4) Mon Feb 16 15:35:51 2026: Debug:       } # else = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     } # policy acct_unique = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     policy get_ssid {
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}") {
(4) Mon Feb 16 15:35:51 2026: Debug:       EXPAND %{8}
(4) Mon Feb 16 15:35:51 2026: Debug:          --> !WNAM.test-portal
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  -> TRUE
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  {
(4) Mon Feb 16 15:35:51 2026: Debug:         update request {
(4) Mon Feb 16 15:35:51 2026: Debug:           EXPAND %{8}
(4) Mon Feb 16 15:35:51 2026: Debug:              --> !WNAM.test-portal
(4) Mon Feb 16 15:35:51 2026: Debug:         } # update request = noop
(4) Mon Feb 16 15:35:51 2026: Debug:         [updated] = updated
(4) Mon Feb 16 15:35:51 2026: Debug:       } # if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  = updated
(4) Mon Feb 16 15:35:51 2026: Debug:       ... skipping else: Preceding "if" was taken
(4) Mon Feb 16 15:35:51 2026: Debug:     } # policy get_ssid = updated
(4) Mon Feb 16 15:35:51 2026: Debug: suffix: Checking for suffix after "@"
(4) Mon Feb 16 15:35:51 2026: Debug: suffix: No '@' in User-Name = "78:98:E8:1E:67:07", looking up realm NULL
(4) Mon Feb 16 15:35:51 2026: Debug: suffix: No such realm "NULL"
(4) Mon Feb 16 15:35:51 2026: Debug:     [suffix] = noop
(4) Mon Feb 16 15:35:51 2026: Debug: files_multi: acct_users: Matched entry DEFAULT at line 1
(4) Mon Feb 16 15:35:51 2026: Debug:     [files_multi] = ok
(4) Mon Feb 16 15:35:51 2026: Debug:   } # preacct = updated
(4) Mon Feb 16 15:35:51 2026: Debug: # Executing section accounting from file /etc/raddb/sites-enabled/_default
(4) Mon Feb 16 15:35:51 2026: Debug:   accounting {
(4) Mon Feb 16 15:35:51 2026: Debug:     [exec] = noop
(4) Mon Feb 16 15:35:51 2026: Debug: attr_filter.accounting_response: EXPAND %{User-Name}
(4) Mon Feb 16 15:35:51 2026: Debug: attr_filter.accounting_response:    --> 78:98:E8:1E:67:07
(4) Mon Feb 16 15:35:51 2026: Debug: attr_filter.accounting_response: Matched entry DEFAULT at line 12
(4) Mon Feb 16 15:35:51 2026: Debug:     [attr_filter.accounting_response] = updated
(4) Mon Feb 16 15:35:51 2026: Debug:     policy acct_by_ssid_default {
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-SSID) {
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-SSID)  -> TRUE
(4) Mon Feb 16 15:35:51 2026: Debug:       if (&Called-Station-SSID)  {
(4) Mon Feb 16 15:35:51 2026: Debug:         policy acct_default {
(4) Mon Feb 16 15:35:51 2026: Debug:           update request {
(4) Mon Feb 16 15:35:51 2026: Debug:           } # update request = noop
(4) Mon Feb 16 15:35:51 2026: Debug:           update control {
(4) Mon Feb 16 15:35:51 2026: Debug:           } # update control = noop
(4) Mon Feb 16 15:35:51 2026: Debug:         } # policy acct_default = noop
(4) Mon Feb 16 15:35:51 2026: Debug:       } # if (&Called-Station-SSID)  = noop
(4) Mon Feb 16 15:35:51 2026: Debug:       ... skipping else: Preceding "if" was taken
(4) Mon Feb 16 15:35:51 2026: Debug:     } # policy acct_by_ssid_default = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     if (&control:Proxy-To-Realm) {
(4) Mon Feb 16 15:35:51 2026: Debug:     if (&control:Proxy-To-Realm)  -> TRUE
(4) Mon Feb 16 15:35:51 2026: Debug:     if (&control:Proxy-To-Realm)  {
(4) Mon Feb 16 15:35:51 2026: Debug:       [noop] = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     } # if (&control:Proxy-To-Realm)  = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     ... skipping else: Preceding "if" was taken
(4) Mon Feb 16 15:35:51 2026: Debug:   } # accounting = updated
(4) Mon Feb 16 15:35:51 2026: Debug: Starting proxy to home server 93.180.6.157 port 1813
(4) Mon Feb 16 15:35:51 2026: Debug: server default {
(4) Mon Feb 16 15:35:51 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(4) Mon Feb 16 15:35:51 2026: Debug:     pre-proxy {
(4) Mon Feb 16 15:35:51 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(4) Mon Feb 16 15:35:51 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(4) Mon Feb 16 15:35:51 2026: Debug:     } # pre-proxy = noop
(4) Mon Feb 16 15:35:51 2026: Debug: }
(4) Mon Feb 16 15:35:51 2026: Debug: Sent Accounting-Request Id 50 from 0.0.0.0:51831 to 93.180.6.157:1813 length 253
(4) Mon Feb 16 15:35:51 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(4) Mon Feb 16 15:35:51 2026: Debug:   Acct-Status-Type = Start
(4) Mon Feb 16 15:35:51 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(4) Mon Feb 16 15:35:51 2026: Debug:   Service-Type = Login-User
(4) Mon Feb 16 15:35:51 2026: Debug:   Eltex-Domain = "default"
(4) Mon Feb 16 15:35:51 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:35:51 GMT+7"
(4) Mon Feb 16 15:35:51 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(4) Mon Feb 16 15:35:51 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Port-Type = Wireless-802.11
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-IP-Address := 100.127.2.200
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(4) Mon Feb 16 15:35:51 2026: Debug:   Framed-IP-Address = 192.168.2.47
(4) Mon Feb 16 15:35:51 2026: Debug:   Framed-MTU = 1500
(4) Mon Feb 16 15:35:51 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(4) Mon Feb 16 15:35:51 2026: Debug:   Eltex-AP-Domain = "default-location"
(4) Mon Feb 16 15:35:51 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(4) Mon Feb 16 15:35:51 2026: Debug:   Proxy-State = 0x39
(4) Mon Feb 16 15:35:51 2026: Debug: Clearing existing &reply: attributes
(4) Mon Feb 16 15:35:51 2026: Debug: Received Accounting-Response Id 50 from 93.180.6.157:1813 to 100.127.2.200:51831 length 23
(4) Mon Feb 16 15:35:51 2026: Debug:   Proxy-State = 0x39
(4) Mon Feb 16 15:35:51 2026: Debug: server default {
(4) Mon Feb 16 15:35:51 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(4) Mon Feb 16 15:35:51 2026: Debug:     post-proxy {
(4) Mon Feb 16 15:35:51 2026: Debug: eap: No pre-existing handler found
(4) Mon Feb 16 15:35:51 2026: Debug:       [eap] = noop
(4) Mon Feb 16 15:35:51 2026: Debug:     } # post-proxy = noop
(4) Mon Feb 16 15:35:51 2026: Debug: }
(4) Mon Feb 16 15:35:51 2026: Debug: Sent Accounting-Response Id 9 from 192.168.1.1:1813 to 192.168.1.3:38749 length 20
(4) Mon Feb 16 15:35:51 2026: Debug: Finished request
(4) Mon Feb 16 15:35:51 2026: Debug: Cleaning up request packet ID 9 with timestamp +254
(3) Mon Feb 16 15:35:56 2026: Debug: Cleaning up request packet ID 8 with timestamp +253
(5) Mon Feb 16 15:37:12 2026: Debug: Received Accounting-Request Id 10 from 192.168.1.3:38749 to 192.168.1.1:1813 length 337
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Status-Type = Interim-Update
(5) Mon Feb 16 15:37:12 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(5) Mon Feb 16 15:37:12 2026: Debug:   Service-Type = Login-User
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Domain = "default"
(5) Mon Feb 16 15:37:12 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:37:12 GMT+7"
(5) Mon Feb 16 15:37:12 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(5) Mon Feb 16 15:37:12 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Type = Wireless-802.11
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Time = 82
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Packets = 1284
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Packets = 1692
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Octets = 1108763
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Gigawords = 0
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Octets = 1434817
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Gigawords = 0
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Packets-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packets-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Bytes-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Bytes-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packet-Lost = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-AP-Domain = "default-location"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-IP-Address = 192.168.1.3
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(5) Mon Feb 16 15:37:12 2026: Debug:   Framed-IP-Address = 192.168.2.47
(5) Mon Feb 16 15:37:12 2026: Debug:   Framed-MTU = 1500
(5) Mon Feb 16 15:37:12 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(5) Mon Feb 16 15:37:12 2026: Debug: # Executing section preacct from file /etc/raddb/sites-enabled/_default
(5) Mon Feb 16 15:37:12 2026: Debug:   preacct {
(5) Mon Feb 16 15:37:12 2026: Debug:     [preprocess] = ok
(5) Mon Feb 16 15:37:12 2026: Debug:     policy acct_unique {
(5) Mon Feb 16 15:37:12 2026: Debug:       update request {
(5) Mon Feb 16 15:37:12 2026: Debug:       } # update request = noop
(5) Mon Feb 16 15:37:12 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i)) {
(5) Mon Feb 16 15:37:12 2026: Debug:       EXPAND %{hex:&Class}
(5) Mon Feb 16 15:37:12 2026: Debug:          -->
(5) Mon Feb 16 15:37:12 2026: Debug:       EXPAND ^%{hex:&Tmp-String-9}
(5) Mon Feb 16 15:37:12 2026: Debug:          --> ^61693a
(5) Mon Feb 16 15:37:12 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i))  -> FALSE
(5) Mon Feb 16 15:37:12 2026: Debug:       else {
(5) Mon Feb 16 15:37:12 2026: Debug:         update request {
(5) Mon Feb 16 15:37:12 2026: Debug:           EXPAND %{md5:%{User-Name},%{Acct-Session-ID},%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}},%{NAS-Identifier},%{NAS-Port-ID},%{NAS-Port}}
(5) Mon Feb 16 15:37:12 2026: Debug:              --> bfa1411e8e2d666b3df46e20af1810fc
(5) Mon Feb 16 15:37:12 2026: Debug:         } # update request = noop
(5) Mon Feb 16 15:37:12 2026: Debug:       } # else = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     } # policy acct_unique = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     policy get_ssid {
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}") {
(5) Mon Feb 16 15:37:12 2026: Debug:       EXPAND %{8}
(5) Mon Feb 16 15:37:12 2026: Debug:          --> !WNAM.test-portal
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  -> TRUE
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  {
(5) Mon Feb 16 15:37:12 2026: Debug:         update request {
(5) Mon Feb 16 15:37:12 2026: Debug:           EXPAND %{8}
(5) Mon Feb 16 15:37:12 2026: Debug:              --> !WNAM.test-portal
(5) Mon Feb 16 15:37:12 2026: Debug:         } # update request = noop
(5) Mon Feb 16 15:37:12 2026: Debug:         [updated] = updated
(5) Mon Feb 16 15:37:12 2026: Debug:       } # if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  = updated
(5) Mon Feb 16 15:37:12 2026: Debug:       ... skipping else: Preceding "if" was taken
(5) Mon Feb 16 15:37:12 2026: Debug:     } # policy get_ssid = updated
(5) Mon Feb 16 15:37:12 2026: Debug: suffix: Checking for suffix after "@"
(5) Mon Feb 16 15:37:12 2026: Debug: suffix: No '@' in User-Name = "78:98:E8:1E:67:07", looking up realm NULL
(5) Mon Feb 16 15:37:12 2026: Debug: suffix: No such realm "NULL"
(5) Mon Feb 16 15:37:12 2026: Debug:     [suffix] = noop
(5) Mon Feb 16 15:37:12 2026: Debug: files_multi: acct_users: Matched entry DEFAULT at line 1
(5) Mon Feb 16 15:37:12 2026: Debug:     [files_multi] = ok
(5) Mon Feb 16 15:37:12 2026: Debug:   } # preacct = updated
(5) Mon Feb 16 15:37:12 2026: Debug: # Executing section accounting from file /etc/raddb/sites-enabled/_default
(5) Mon Feb 16 15:37:12 2026: Debug:   accounting {
(5) Mon Feb 16 15:37:12 2026: Debug:     [exec] = noop
(5) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response: EXPAND %{User-Name}
(5) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response:    --> 78:98:E8:1E:67:07
(5) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response: Matched entry DEFAULT at line 12
(5) Mon Feb 16 15:37:12 2026: Debug:     [attr_filter.accounting_response] = updated
(5) Mon Feb 16 15:37:12 2026: Debug:     policy acct_by_ssid_default {
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID) {
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID)  -> TRUE
(5) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID)  {
(5) Mon Feb 16 15:37:12 2026: Debug:         policy acct_default {
(5) Mon Feb 16 15:37:12 2026: Debug:           update request {
(5) Mon Feb 16 15:37:12 2026: Debug:           } # update request = noop
(5) Mon Feb 16 15:37:12 2026: Debug:           update control {
(5) Mon Feb 16 15:37:12 2026: Debug:           } # update control = noop
(5) Mon Feb 16 15:37:12 2026: Debug:         } # policy acct_default = noop
(5) Mon Feb 16 15:37:12 2026: Debug:       } # if (&Called-Station-SSID)  = noop
(5) Mon Feb 16 15:37:12 2026: Debug:       ... skipping else: Preceding "if" was taken
(5) Mon Feb 16 15:37:12 2026: Debug:     } # policy acct_by_ssid_default = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm) {
(5) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm)  -> TRUE
(5) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm)  {
(5) Mon Feb 16 15:37:12 2026: Debug:       [noop] = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     } # if (&control:Proxy-To-Realm)  = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     ... skipping else: Preceding "if" was taken
(5) Mon Feb 16 15:37:12 2026: Debug:   } # accounting = updated
(5) Mon Feb 16 15:37:12 2026: Debug: Starting proxy to home server 93.180.6.157 port 1813
(5) Mon Feb 16 15:37:12 2026: Debug: server default {
(5) Mon Feb 16 15:37:12 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(5) Mon Feb 16 15:37:12 2026: Debug:     pre-proxy {
(5) Mon Feb 16 15:37:12 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(5) Mon Feb 16 15:37:12 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(5) Mon Feb 16 15:37:12 2026: Debug:     } # pre-proxy = noop
(5) Mon Feb 16 15:37:12 2026: Debug: }
(5) Mon Feb 16 15:37:12 2026: Debug: Sent Accounting-Request Id 41 from 0.0.0.0:51831 to 93.180.6.157:1813 length 341
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Status-Type = Interim-Update
(5) Mon Feb 16 15:37:12 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(5) Mon Feb 16 15:37:12 2026: Debug:   Service-Type = Login-User
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Domain = "default"
(5) Mon Feb 16 15:37:12 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:37:12 GMT+7"
(5) Mon Feb 16 15:37:12 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(5) Mon Feb 16 15:37:12 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Type = Wireless-802.11
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Time = 82
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Packets = 1284
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Packets = 1692
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Octets = 1108763
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Gigawords = 0
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Octets = 1434817
(5) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Gigawords = 0
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Packets-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packets-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Bytes-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Bytes-Drop = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packet-Lost = "0"
(5) Mon Feb 16 15:37:12 2026: Debug:   Eltex-AP-Domain = "default-location"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-IP-Address := 100.127.2.200
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(5) Mon Feb 16 15:37:12 2026: Debug:   Framed-IP-Address = 192.168.2.47
(5) Mon Feb 16 15:37:12 2026: Debug:   Framed-MTU = 1500
(5) Mon Feb 16 15:37:12 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(5) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(5) Mon Feb 16 15:37:12 2026: Debug:   Proxy-State = 0x3130
(5) Mon Feb 16 15:37:12 2026: Debug: Clearing existing &reply: attributes
(5) Mon Feb 16 15:37:12 2026: Debug: Received Accounting-Response Id 41 from 93.180.6.157:1813 to 100.127.2.200:51831 length 24
(5) Mon Feb 16 15:37:12 2026: Debug:   Proxy-State = 0x3130
(5) Mon Feb 16 15:37:12 2026: Debug: server default {
(5) Mon Feb 16 15:37:12 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(5) Mon Feb 16 15:37:12 2026: Debug:     post-proxy {
(5) Mon Feb 16 15:37:12 2026: Debug: eap: No pre-existing handler found
(5) Mon Feb 16 15:37:12 2026: Debug:       [eap] = noop
(5) Mon Feb 16 15:37:12 2026: Debug:     } # post-proxy = noop
(5) Mon Feb 16 15:37:12 2026: Debug: }
(5) Mon Feb 16 15:37:12 2026: Debug: Sent Accounting-Response Id 10 from 192.168.1.1:1813 to 192.168.1.3:38749 length 20
(5) Mon Feb 16 15:37:12 2026: Debug: Finished request
(6) Mon Feb 16 15:37:12 2026: Debug: Received Accounting-Request Id 11 from 192.168.1.3:38749 to 192.168.1.1:1813 length 337
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Status-Type = Interim-Update
(6) Mon Feb 16 15:37:12 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(6) Mon Feb 16 15:37:12 2026: Debug:   Service-Type = Login-User
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Domain = "default"
(6) Mon Feb 16 15:37:12 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:37:12 GMT+7"
(6) Mon Feb 16 15:37:12 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(6) Mon Feb 16 15:37:12 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Type = Wireless-802.11
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Time = 82
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Packets = 1284
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Packets = 1692
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Octets = 1108763
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Gigawords = 0
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Octets = 1434817
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Gigawords = 0
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Packets-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packets-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Bytes-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Bytes-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packet-Lost = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-AP-Domain = "default-location"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-IP-Address = 192.168.1.3
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(6) Mon Feb 16 15:37:12 2026: Debug:   Framed-IP-Address = 192.168.2.47
(6) Mon Feb 16 15:37:12 2026: Debug:   Framed-MTU = 1500
(6) Mon Feb 16 15:37:12 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(6) Mon Feb 16 15:37:12 2026: Debug: # Executing section preacct from file /etc/raddb/sites-enabled/_default
(6) Mon Feb 16 15:37:12 2026: Debug:   preacct {
(6) Mon Feb 16 15:37:12 2026: Debug:     [preprocess] = ok
(6) Mon Feb 16 15:37:12 2026: Debug:     policy acct_unique {
(6) Mon Feb 16 15:37:12 2026: Debug:       update request {
(6) Mon Feb 16 15:37:12 2026: Debug:       } # update request = noop
(6) Mon Feb 16 15:37:12 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i)) {
(6) Mon Feb 16 15:37:12 2026: Debug:       EXPAND %{hex:&Class}
(6) Mon Feb 16 15:37:12 2026: Debug:          -->
(6) Mon Feb 16 15:37:12 2026: Debug:       EXPAND ^%{hex:&Tmp-String-9}
(6) Mon Feb 16 15:37:12 2026: Debug:          --> ^61693a
(6) Mon Feb 16 15:37:12 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&      ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i))  -> FALSE
(6) Mon Feb 16 15:37:12 2026: Debug:       else {
(6) Mon Feb 16 15:37:12 2026: Debug:         update request {
(6) Mon Feb 16 15:37:12 2026: Debug:           EXPAND %{md5:%{User-Name},%{Acct-Session-ID},%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}},%{NAS-Identifier},%{NAS-Port-ID},%{NAS-Port}}
(6) Mon Feb 16 15:37:12 2026: Debug:              --> bfa1411e8e2d666b3df46e20af1810fc
(6) Mon Feb 16 15:37:12 2026: Debug:         } # update request = noop
(6) Mon Feb 16 15:37:12 2026: Debug:       } # else = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     } # policy acct_unique = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     policy get_ssid {
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}") {
(6) Mon Feb 16 15:37:12 2026: Debug:       EXPAND %{8}
(6) Mon Feb 16 15:37:12 2026: Debug:          --> !WNAM.test-portal
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  -> TRUE
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  {
(6) Mon Feb 16 15:37:12 2026: Debug:         update request {
(6) Mon Feb 16 15:37:12 2026: Debug:           EXPAND %{8}
(6) Mon Feb 16 15:37:12 2026: Debug:              --> !WNAM.test-portal
(6) Mon Feb 16 15:37:12 2026: Debug:         } # update request = noop
(6) Mon Feb 16 15:37:12 2026: Debug:         [updated] = updated
(6) Mon Feb 16 15:37:12 2026: Debug:       } # if (&Called-Station-Id && (&Called-Station-Id =~ /^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i) && "%{8}")  = updated
(6) Mon Feb 16 15:37:12 2026: Debug:       ... skipping else: Preceding "if" was taken
(6) Mon Feb 16 15:37:12 2026: Debug:     } # policy get_ssid = updated
(6) Mon Feb 16 15:37:12 2026: Debug: suffix: Checking for suffix after "@"
(6) Mon Feb 16 15:37:12 2026: Debug: suffix: No '@' in User-Name = "78:98:E8:1E:67:07", looking up realm NULL
(6) Mon Feb 16 15:37:12 2026: Debug: suffix: No such realm "NULL"
(6) Mon Feb 16 15:37:12 2026: Debug:     [suffix] = noop
(6) Mon Feb 16 15:37:12 2026: Debug: files_multi: acct_users: Matched entry DEFAULT at line 1
(6) Mon Feb 16 15:37:12 2026: Debug:     [files_multi] = ok
(6) Mon Feb 16 15:37:12 2026: Debug:   } # preacct = updated
(6) Mon Feb 16 15:37:12 2026: Debug: # Executing section accounting from file /etc/raddb/sites-enabled/_default
(6) Mon Feb 16 15:37:12 2026: Debug:   accounting {
(6) Mon Feb 16 15:37:12 2026: Debug:     [exec] = noop
(6) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response: EXPAND %{User-Name}
(6) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response:    --> 78:98:E8:1E:67:07
(6) Mon Feb 16 15:37:12 2026: Debug: attr_filter.accounting_response: Matched entry DEFAULT at line 12
(6) Mon Feb 16 15:37:12 2026: Debug:     [attr_filter.accounting_response] = updated
(6) Mon Feb 16 15:37:12 2026: Debug:     policy acct_by_ssid_default {
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID) {
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID)  -> TRUE
(6) Mon Feb 16 15:37:12 2026: Debug:       if (&Called-Station-SSID)  {
(6) Mon Feb 16 15:37:12 2026: Debug:         policy acct_default {
(6) Mon Feb 16 15:37:12 2026: Debug:           update request {
(6) Mon Feb 16 15:37:12 2026: Debug:           } # update request = noop
(6) Mon Feb 16 15:37:12 2026: Debug:           update control {
(6) Mon Feb 16 15:37:12 2026: Debug:           } # update control = noop
(6) Mon Feb 16 15:37:12 2026: Debug:         } # policy acct_default = noop
(6) Mon Feb 16 15:37:12 2026: Debug:       } # if (&Called-Station-SSID)  = noop
(6) Mon Feb 16 15:37:12 2026: Debug:       ... skipping else: Preceding "if" was taken
(6) Mon Feb 16 15:37:12 2026: Debug:     } # policy acct_by_ssid_default = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm) {
(6) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm)  -> TRUE
(6) Mon Feb 16 15:37:12 2026: Debug:     if (&control:Proxy-To-Realm)  {
(6) Mon Feb 16 15:37:12 2026: Debug:       [noop] = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     } # if (&control:Proxy-To-Realm)  = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     ... skipping else: Preceding "if" was taken
(6) Mon Feb 16 15:37:12 2026: Debug:   } # accounting = updated
(6) Mon Feb 16 15:37:12 2026: Debug: Starting proxy to home server 93.180.6.157 port 1813
(6) Mon Feb 16 15:37:12 2026: Debug: server default {
(6) Mon Feb 16 15:37:12 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(6) Mon Feb 16 15:37:12 2026: Debug:     pre-proxy {
(6) Mon Feb 16 15:37:12 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(6) Mon Feb 16 15:37:12 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(6) Mon Feb 16 15:37:12 2026: Debug:     } # pre-proxy = noop
(6) Mon Feb 16 15:37:12 2026: Debug: }
(6) Mon Feb 16 15:37:12 2026: Debug: Sent Accounting-Request Id 197 from 0.0.0.0:51831 to 93.180.6.157:1813 length 341
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Id = "1247FB45-6376931F"
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Status-Type = Interim-Update
(6) Mon Feb 16 15:37:12 2026: Debug:   User-Name = "78:98:E8:1E:67:07"
(6) Mon Feb 16 15:37:12 2026: Debug:   Service-Type = Login-User
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Domain = "default"
(6) Mon Feb 16 15:37:12 2026: Debug:   Event-Timestamp = "Feb 16 2026 15:37:12 GMT+7"
(6) Mon Feb 16 15:37:12 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(6) Mon Feb 16 15:37:12 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Type = Wireless-802.11
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Session-Time = 82
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Packets = 1284
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Packets = 1692
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Octets = 1108763
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Input-Gigawords = 0
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Octets = 1434817
(6) Mon Feb 16 15:37:12 2026: Debug:   Acct-Output-Gigawords = 0
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Packets-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packets-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Input-Bytes-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Bytes-Drop = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-Acct-Output-Packet-Lost = "0"
(6) Mon Feb 16 15:37:12 2026: Debug:   Eltex-AP-Domain = "default-location"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-IP-Address := 100.127.2.200
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(6) Mon Feb 16 15:37:12 2026: Debug:   Framed-IP-Address = 192.168.2.47
(6) Mon Feb 16 15:37:12 2026: Debug:   Framed-MTU = 1500
(6) Mon Feb 16 15:37:12 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(6) Mon Feb 16 15:37:12 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(6) Mon Feb 16 15:37:12 2026: Debug:   Proxy-State = 0x3131
(6) Mon Feb 16 15:37:12 2026: Debug: Clearing existing &reply: attributes
(6) Mon Feb 16 15:37:12 2026: Debug: Received Accounting-Response Id 197 from 93.180.6.157:1813 to 100.127.2.200:51831 length 24
(6) Mon Feb 16 15:37:12 2026: Debug:   Proxy-State = 0x3131
(6) Mon Feb 16 15:37:12 2026: Debug: server default {
(6) Mon Feb 16 15:37:12 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(6) Mon Feb 16 15:37:12 2026: Debug:     post-proxy {
(6) Mon Feb 16 15:37:12 2026: Debug: eap: No pre-existing handler found
(6) Mon Feb 16 15:37:12 2026: Debug:       [eap] = noop
(6) Mon Feb 16 15:37:12 2026: Debug:     } # post-proxy = noop
(6) Mon Feb 16 15:37:12 2026: Debug: }
(6) Mon Feb 16 15:37:12 2026: Debug: Sent Accounting-Response Id 11 from 192.168.1.1:1813 to 192.168.1.3:38749 length 20
(6) Mon Feb 16 15:37:12 2026: Debug: Finished request
(5) Mon Feb 16 15:37:13 2026: Debug: Cleaning up request packet ID 10 with timestamp +335
(6) Mon Feb 16 15:37:13 2026: Debug: Cleaning up request packet ID 11 with timestamp +335

Dump-файл Radius-обмена WLC и WNAM

radius_dump.pcap

Диагностика на стороне WNAM

Корпоративные подключения

Диагностика → Корпоративные подключения

Первоначальный запрос авторизации и последующий Reject с целью редиректа на портал

Авторизация без ограничений после идентификации клиента на портале

 

Авторизация без ограничений после отключения от ТД и подключения снова или подключения к другой ТД (если сессия клиента не истекла)

Параметры записи о пользователе

Вкладка "Пользователи"

Вкладка "Сессии"