Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Введение

Информация
iconfalse

Начиная с версии 1.6.2524 система WNAM поддерживает работу с контроллерами Cisco нового поколения, использующими операционную систему IOS XE семейства Catalyst 9800 Wireless Controllers. Взаимодействие реализовано по механизму Central Web Auth (CWA), который разработан компанией Cisco для взаимодействия контроллера с программным обеспечением Cisco ISE. Система WNAM полностью эмулирует поведение ISE в данной задаче. Документация по настройке контроллеров серии 9800 вместе с ISE доступна на сайте производителя контроллера.

Примечание

Данная схема поддержана контроллерами Eltex серии WLC (начиная с версии ПО 1.30.6) и точками доступа WEP/WOP-30Lx (начиная с версии ПО 2.8.0).

Авторизация по методу CWA основана на следующем:

  • при подключении устройства абонента к сети, контроллером производится RADIUS-запрос к серверу политики (WNAM) с целью получения ACL и URL перенаправления;
  • производится перехват трафика новой веб-сессии и перенаправление пользователя на полученную ссылку (без редиректа на контроллер);
  • осуществляется авторизация на внешней системе (WNAM) и/или показ рекламной/приветственной страницы;
  • по завершении авторизации система WNAM сообщает контроллеру по протоколу RADIUS CoA о необходимости  повторной авторизации сессии пользователя;
  • производится повторная авторизация пользователя контроллером на RADIUS-сервере и применение полученной политики "пропуска";
  • система WNAM осуществляет перенаправление пользователя на заданную ссылку.

При этом с точки зрения пользователя нет дополнительных редиректов и ассоциированных с этим проблем. При повторном подключении абонента, если включена МАС-авторизация на сервере доступа и "прозрачные повторные сессии" в настройках ограничений, цепочка действий сокращается: 

  • при подключении устройства абонента к сети, контроллером производится RADIUS-запрос к серверу политики (WNAM);
  • если системе авторизации абонент известен, его авторизация валидна (не истекла и не сброшена), абонент не блокирован и после последней сессии подключения прошло время меньше, чем указано в настройках ограничений "прозрачные повторные сессии", система WNAM отвечает сообщением Access-Accept (с некоторыми дополнительными параметрами);
  • устройство абонента получает доступ в сеть Интернет без дополнительных "всплывающих окон" и редиректов.

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

Предупреждение

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

Требования

  • Eltex WLC не ниже версии 1.30.6
  • Eltex AP не ниже версии 2.8.0 с моделью из списка: WEP-30L, WEP-30L-Z, WOP-30L, WOP-30LI, WOP-30LS

Описание

Данная схема работает исключительно посредством MAB-авторизации.

  1. На ТД настраивается preAuth_ACL (namedACL).
  2. Ссылка редиректа на портал и имя ACL пересылаются точке доступа в пакете Radius Access-Accept посредством атрибутов:
    Блок кода
    languagebash
    cisco-av-pair = url-redirect-acl=<<Имя настроенного на контроллере ACL>>
    cisco-av-pair = url-redirect=<<Ссылка на портал WNAM>>

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

Якорь
Взаимодействие ТД с порталом Cisco ISE
Взаимодействие ТД с порталом Cisco ISE

  1. При первом подключении клиента (WNAM ничего о нем не знает, ТД тоже), ТД пытается пройти MAB-авторизацию на NAC-сервере, подставляя MAC-адрес клиента в атрибуты User-Name и User-Password запроса access-request к Radius-серверу. WNAM ничего не знает о данном клиенте (не находит его в своей базе гостевых endpoints), отправляет access-accept, содержащий два атрибута (ссылку редиректа на гостевой портал и имя ограничивающего доступ preAuth-ACL):
    Блок кода
    languagebash
    cisco-av-pair = url-redirect-acl=test1
    cisco-av-pair = url-redirect=http://100.127.2.150/cp/cisco?client_mac=78:98:E8:1E:67:07&switch_url=100.127.2.200&redirect=&wlan=!WNAM.test-portal&ap_mac=68:13:E2:C2:F7:40&sessionId=2564CCA4-772DE0CA
  2. Клиент получает ограниченный доступ (правилами ACL) и перенаправляется на портал.
  3. Пользователь попадает на страницу саморегистрации, где вводит идентификационные данные (в нашем случае, ваучер).
  4. После ввода кода ваучера, портал инициирует процесс ре-аутентификации клиента, отправляя на ТД CoA-request c атрибутом:
    Блок кода
    Cisco-AVPair: subscriber:command=reauthenticate
  5. ТД запускает повторную MAB-авторизацию, отправляя запрос access-request к Radius-серверу, и получает в ответ пакет Access-Accept, не содержащий дополнительных атрибутов (ссылки редиректа и ACL).
  6. ТД предоставляет клиенту полный доступ и осуществляет редирект на заданную в сценарии портальной авторизации страницу (в нашем случае https://eltex.ru/).
Примечание

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

Диаграмма подключения

Диаграмма портальной авторизации на ТД, подключенной через контроллер WLC

...

Image Added

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

  1. Подключается к ТД.
  2. ТД выполняет MAB-аутентификацию устройства пользователя.
  3. WLC выполняет проксирование RADIUS-запроса авторизации, чтобы со стороны WNAM выглядело как подключение со стороны одного устройства (WLC).
  4. RADIUS-запрос приходит в WNAM и он в соответствии с настройкой политик проверяет наличие гостевого эндпоинта в БД.
  5. Т.к. подключение происходит в первый раз – эндпоинт не найден, вместе с ответом Access-Accept возвращаются параметры с адресом портала для редиректа и именем ACL (настроенном на WLC, включающий список разрешенных ресурсов, в который должен быть включен адрес портала).
  6. WLC проксирует ответ на ТД, от которой был получен запрос.
  7. Клиент получает IP-адрес и пытается получить доступ в Интернет. В ответ ТД начинает возвращать редирект со ссылкой на портал.
  8. Пользовательское устройство, получая ссылку редиректа, открывает всплывающий браузер и страницу портальной авторизации.
  9. Успешно пройдя саморегистрацию и авторизацию на портале (посредством ввода ваучера), для устройства клиента добавляется запись о гостевом эндпоинте, содержащая MAC-адрес клиента.
  10. После успешной авторизации на портале на WLC отправляется запрос CoA re-authenticate.
  11. WLC перенаправляет данный запрос на ТД.
  12. ТД выполняет повторную ре-аутентификацию устройства пользователя с использованием MAB-аутентификации.
  13. WNAM, повторно получив запрос, в соответствии с настройкой политик проверяет наличие гостевого эндпоинта в БД. 
  14. Т.к. ранее пользователь прошел регистрацию на портале – гостевой эндпоинт в БД есть. На ТД отправляется Access-Accept и пользователь получает доступ в сеть.

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

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

Настройка конфигурации контроллера

...

Image Added

Добавьте WNAM, как радиус сервер, и настройте проксирование RADIUS-запросов от ТД на него. Также настройте проксирование CoA-запросов со стороны WNAM на ТД через WLC:

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

Создайте ACL с тем же именем, которое было указано при настройке профиля авторизации в WNAM:

Блок кода
languageplain
ip access-list extended test1
  rule 1
    action permit
    match destination-address 100.127.2.150 255.255.255.255   # Адрес WNAM
    enable
  exit
  rule 2
    action permit
    match protocol udp
    match destination-port port-range 53
    enable
  exit
  rule 3
    action permit
    match protocol udp
    match source-port port-range 68
    match destination-port port-range 67
    enable
  exit
exit

В настройке WLC настройте профиль SSID, включите портальную авторизацию, создайте профиль для портала, включите das-server на ТД и в настройках RADIUS-профиля укажите настройку, чтобы MAC-адрес пользователя подставлялся в пароль:

Блок кода
languageplain
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
    services
      das-server enable
      das-server key ascii-text testing123
    exit
    ipv4-acl test1
  exit
  portal-profile default-portal
    preauth-filter-mode acl
    disconnect-on-reject
    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:

Блок кода
languageplain
object-group service das
  port-range 1700
exit

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 udp
    match destination-port object-group das          # Разрешить UDP-трафик для CoA-запросов
    enable
  exit
  rule 4
    action permit
    match protocol tcp
    match destination-port object-group ssh          # Разрешить подключение по SSH (Используйте осторожно, если контроллер подключен напрямую к ISP) 
    enable
  exit
  rule 5
    action permit
    match protocol icmp
    enable
  exit
exit

...

Блок кода
languageplain
titleПолная конфигурация Eltex WLC-30 (v.1.30.6)
collapsetrue
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
object-group service das
  port-range 1700
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
  nas wnam
    key ascii-text testing123
    network 100.127.2.150/32
  exit
  domain default
  exit
  virtual-server default
    mode proxy
    upstream-pool wnam
    das-server enable
    nas-ip-address 100.127.2.200
    enable
  exit
  upstream-server wnam
    host 100.127.2.150
    server-type all
    key ascii-text testing123
  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

ip access-list extended test1
  rule 1
    action permit
    match destination-address 100.127.2.150 255.255.255.255
  exit
  rule 2
    action permit
    match protocol udp
    match destination-port port-range 53
    enable
  exit
  rule 3
    action permit
    match protocol udp
    match source-port port-range 67-68
    match destination-port port-range 67
    enable
  exit
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 udp
    match destination-port object-group das
    enable
  exit
  rule 4
    action permit
    match protocol tcp
    match destination-port object-group ssh
    enable
  exit
  rule 5
    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
    services
      das-server enable
      das-server key ascii-text testing123
    exit
    ipv4-acl test1
  exit
  portal-profile default-portal
    preauth-filter-mode acl
    disconnect-on-reject
    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

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

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

Настройка WNAM

Якорь
Настройка WNAM
Настройка WNAM

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

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

Image Added

Во вкладке RADIUS в параметрах "Атрибуты предварительной авторизации" укажите:

...

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

 Image RemovedImage Added

Предупреждение

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

Для возможности сброса сессии абонента с контроллера из интерфейса администратора системы WNAM, необходимо установить параметр "uppercase_session_id" в поле "true" в разделе "Конфигурация" → "Дополнительные настройки".

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

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

 Image RemovedImage Added

На вкладке "Авторизация" выберите метод "Ввод кода с ваучера" и "Запомнить авторизацию" на 3 минуты (что для теста авторизации вполне достаточно).

 Image RemovedImage Added

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

Image Added 

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

 Image RemovedImage Added

Создание ваучеров для авторизации

Конфигурация → Гостевая авторизация → Ваучеры → Создать группу ваучеров
Image RemovedImage Added

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

Image RemovedImage Added

...

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

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

В разделе "Конфигурация" → "Правила аутентификации" настройте настройте правило, как на скрине ниже.

  • Источник запроса – беспроводной;
  • Эндпоинт – не известен и просрочен/не валиден (т. к.
  •  при
  •  при первом подключении наш клиент неизвестен и его MAC-адрес не изучен);
  • Результат
  • – Redirect
  • – Redirect на гостевой портал авторизации (будут переданы атрибуты указанные нами ранее при создании "Сервера доступа").

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

Примечание

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

...

Image Added

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

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

Image RemovedImage Added

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

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

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

Примечание

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

 Image RemovedImage Added

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

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

Image RemovedImage Added

Тестирование работоспособности

Якорь
Тестирование работоспособности
Тестирование работоспособности

После подключения к сети (если клиент не идентифицировался ранее на портале или его сессия не истекла), то клиент будет перенаправлен на гостевой портал.Image Removed

Image Added

На данной странице введите код ваучера и нажмите "Подтвердить код".Image Removed

Image Added

Клиент будет перенаправлен на страницу, которая была настроена для финального редиректа при настройке "Площадки" в закладке "Приветствие".

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

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

Якорь
Результаты тестирования
Результаты тестирования

...

Блок кода
languagebash
titleradius-debug проксирования radius обмена
collapsetrue
wlc-30(debug)# sh radius-debug t 0
(302) Wed Feb 11 10:01:03 2026: Debug: Received Access-Request Id 20 from 192.168.1.3:51780 to 192.168.1.1:1812 length 302
(302) Wed Feb 11 10:01:03 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(302) Wed Feb 11 10:01:03 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-IP-Address = 0.0.0.0
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-MTU = 1500
(302) Wed Feb 11 10:01:03 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(302) Wed Feb 11 10:01:03 2026: Debug:   Eltex-AP-Domain = "default-location"
(302) Wed Feb 11 10:01:03 2026: Debug:   Eltex-Domain = "default"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(302) Wed Feb 11 10:01:03 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(302) Wed Feb 11 10:01:03 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port = 1
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-MTU = 1500
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port-Type = Wireless-802.11
(302) Wed Feb 11 10:01:03 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-IP-Address = 192.168.1.3
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(302) Wed Feb 11 10:01:03 2026: Debug:   Service-Type = Call-Check
(302) Wed Feb 11 10:01:03 2026: Debug:   Message-Authenticator = 0x6a10e91f1eb8f383bf2236464af8a8a2
(302) Wed Feb 11 10:01:03 2026: Debug: # Executing section authorize from file /etc/raddb/sites-enabled/_default
(302) Wed Feb 11 10:01:03 2026: Debug:   authorize {
(302) Wed Feb 11 10:01:03 2026: Debug:     policy filter_username {
(302) Wed Feb 11 10:01:03 2026: Debug:       if (&User-Name) {
(302) Wed Feb 11 10:01:03 2026: Debug:       if (&User-Name)  -> TRUE
(302) Wed Feb 11 10:01:03 2026: Debug:       if (&User-Name)  {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ / /) {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ / /)  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /@[^@]*@/ ) {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /\.\./ ) {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /\.\./ )  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(302) Wed Feb 11 10:01:03 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /\.$/)  {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /\.$/)   -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /@\./)  {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&User-Name =~ /@\./)   -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:       } # if (&User-Name)  = notfound
(302) Wed Feb 11 10:01:03 2026: Debug:     } # policy filter_username = notfound
(302) Wed Feb 11 10:01:03 2026: Debug:     [preprocess] = ok
(302) Wed Feb 11 10:01:03 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper") {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper")  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     else {
(302) Wed Feb 11 10:01:03 2026: Debug:       policy get_ssid {
(302) Wed Feb 11 10:01:03 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}") {
(302) Wed Feb 11 10:01:03 2026: Debug:         EXPAND %{8}
(302) Wed Feb 11 10:01:03 2026: Debug:            --> !WNAM.test-portal
(302) Wed Feb 11 10:01:03 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
(302) Wed Feb 11 10:01:03 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}")  {
(302) Wed Feb 11 10:01:03 2026: Debug:           update request {
(302) Wed Feb 11 10:01:03 2026: Debug:             EXPAND %{8}
(302) Wed Feb 11 10:01:03 2026: Debug:                --> !WNAM.test-portal
(302) Wed Feb 11 10:01:03 2026: Debug:           } # update request = noop
(302) Wed Feb 11 10:01:03 2026: Debug:           [updated] = updated
(302) Wed Feb 11 10:01:03 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
(302) Wed Feb 11 10:01:03 2026: Debug:         ... skipping else: Preceding "if" was taken
(302) Wed Feb 11 10:01:03 2026: Debug:       } # policy get_ssid = updated
(302) Wed Feb 11 10:01:03 2026: Debug:       policy auth_by_ssid_default {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&Called-Station-SSID) {
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&Called-Station-SSID)  -> TRUE
(302) Wed Feb 11 10:01:03 2026: Debug:         if (&Called-Station-SSID)  {
(302) Wed Feb 11 10:01:03 2026: Debug:           policy auth_default {
(302) Wed Feb 11 10:01:03 2026: Debug:             update request {
(302) Wed Feb 11 10:01:03 2026: Debug:             } # update request = noop
(302) Wed Feb 11 10:01:03 2026: Debug:             update control {
(302) Wed Feb 11 10:01:03 2026: Debug:             } # update control = noop
(302) Wed Feb 11 10:01:03 2026: Debug:           } # policy auth_default = noop
(302) Wed Feb 11 10:01:03 2026: Debug:         } # if (&Called-Station-SSID)  = noop
(302) Wed Feb 11 10:01:03 2026: Debug:         ... skipping else: Preceding "if" was taken
(302) Wed Feb 11 10:01:03 2026: Debug:       } # policy auth_by_ssid_default = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     } # else = updated
(302) Wed Feb 11 10:01:03 2026: Debug:     [chap] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     [mschap] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     [digest] = noop
(302) Wed Feb 11 10:01:03 2026: Debug: suffix: Checking for suffix after "@"
(302) Wed Feb 11 10:01:03 2026: Debug: suffix: No '@' in User-Name = "78:98:e8:1e:67:07", looking up realm NULL
(302) Wed Feb 11 10:01:03 2026: Debug: suffix: No such realm "NULL"
(302) Wed Feb 11 10:01:03 2026: Debug:     [suffix] = noop
(302) Wed Feb 11 10:01:03 2026: Debug: files_multi: users: Matched entry DEFAULT at line 1
(302) Wed Feb 11 10:01:03 2026: Debug:     [files_multi] = ok
(302) Wed Feb 11 10:01:03 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1) {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1)  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     else {
(302) Wed Feb 11 10:01:03 2026: Debug: eap: No EAP-Message, not doing EAP
(302) Wed Feb 11 10:01:03 2026: Debug:       [eap] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     } # else = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     if (ok) {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (ok)  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     [expiration] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     [logintime] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     [pap] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:   } # authorize = updated
(302) Wed Feb 11 10:01:03 2026: Debug: Starting proxy to home server 100.127.2.150 port 1812
(302) Wed Feb 11 10:01:03 2026: Debug: server default {
(302) Wed Feb 11 10:01:03 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(302) Wed Feb 11 10:01:03 2026: Debug:     pre-proxy {
(302) Wed Feb 11 10:01:03 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(302) Wed Feb 11 10:01:03 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     } # pre-proxy = noop
(302) Wed Feb 11 10:01:03 2026: Debug: }
(302) Wed Feb 11 10:01:03 2026: Debug: Sent Access-Request Id 1 from 0.0.0.0:37773 to 100.127.2.150:1812 length 312
(302) Wed Feb 11 10:01:03 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(302) Wed Feb 11 10:01:03 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-IP-Address = 0.0.0.0
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-MTU = 1500
(302) Wed Feb 11 10:01:03 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(302) Wed Feb 11 10:01:03 2026: Debug:   Eltex-AP-Domain = "default-location"
(302) Wed Feb 11 10:01:03 2026: Debug:   Eltex-Domain = "default"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(302) Wed Feb 11 10:01:03 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(302) Wed Feb 11 10:01:03 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port = 1
(302) Wed Feb 11 10:01:03 2026: Debug:   Framed-MTU = 1500
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Port-Type = Wireless-802.11
(302) Wed Feb 11 10:01:03 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-IP-Address := 100.127.2.200
(302) Wed Feb 11 10:01:03 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(302) Wed Feb 11 10:01:03 2026: Debug:   Service-Type = Call-Check
(302) Wed Feb 11 10:01:03 2026: Debug:   Message-Authenticator = 0x6a10e91f1eb8f383bf2236464af8a8a2
(302) Wed Feb 11 10:01:03 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:03 GMT+7"
(302) Wed Feb 11 10:01:03 2026: Debug:   Proxy-State = 0x3230
(302) Wed Feb 11 10:01:03 2026: Debug: Clearing existing &reply: attributes
(302) Wed Feb 11 10:01:03 2026: Debug: Received Access-Accept Id 1 from 100.127.2.150:1812 to 100.127.2.200:37773 length 244
(302) Wed Feb 11 10:01:03 2026: Debug:   Cisco-AVPair = "url-redirect=http://100.127.2.150/cp/cisco?client_mac=78:98:E8:1E:67:07&switch_url=100.127.2.200&redirect=&wlan=!WNAM.test-portal&ap_mac=68:13:E2:C2:F7:40&sessionId=3A03EB20-4E1933E6"
(302) Wed Feb 11 10:01:03 2026: Debug:   Cisco-AVPair = "url-redirect-acl=test1"
(302) Wed Feb 11 10:01:03 2026: Debug:   Proxy-State = 0x3230
(302) Wed Feb 11 10:01:03 2026: Debug: server default {
(302) Wed Feb 11 10:01:03 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(302) Wed Feb 11 10:01:03 2026: Debug:     post-proxy {
(302) Wed Feb 11 10:01:03 2026: Debug: eap: No pre-existing handler found
(302) Wed Feb 11 10:01:03 2026: Debug:       [eap] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     } # post-proxy = noop
(302) Wed Feb 11 10:01:03 2026: Debug: }
(302) Wed Feb 11 10:01:03 2026: Debug: Found Auth-Type = Accept
(302) Wed Feb 11 10:01:03 2026: Debug: Auth-Type = Accept, accepting the user
(302) Wed Feb 11 10:01:03 2026: Debug: # Executing section post-auth from file /etc/raddb/sites-enabled/_default
(302) Wed Feb 11 10:01:03 2026: Debug:   post-auth {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name)) {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name))  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     update {
(302) Wed Feb 11 10:01:03 2026: Debug:       No attributes updated for RHS &session-state:
(302) Wed Feb 11 10:01:03 2026: Debug:     } # update = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     [exec] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     policy remove_reply_message_if_eap {
(302) Wed Feb 11 10:01:03 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message) {
(302) Wed Feb 11 10:01:03 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:       else {
(302) Wed Feb 11 10:01:03 2026: Debug:         [noop] = noop
(302) Wed Feb 11 10:01:03 2026: Debug:       } # else = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     } # policy remove_reply_message_if_eap = noop
(302) Wed Feb 11 10:01:03 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id) {
(302) Wed Feb 11 10:01:03 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id)  -> FALSE
(302) Wed Feb 11 10:01:03 2026: Debug:     update reply {
(302) Wed Feb 11 10:01:03 2026: Debug:     } # update reply = noop
(302) Wed Feb 11 10:01:03 2026: Debug:   } # post-auth = noop
(302) Wed Feb 11 10:01:03 2026: Debug: Sent Access-Accept Id 20 from 192.168.1.1:1812 to 192.168.1.3:51780 length 240
(302) Wed Feb 11 10:01:03 2026: Debug:   Cisco-AVPair = "url-redirect=http://100.127.2.150/cp/cisco?client_mac=78:98:E8:1E:67:07&switch_url=100.127.2.200&redirect=&wlan=!WNAM.test-portal&ap_mac=68:13:E2:C2:F7:40&sessionId=3A03EB20-4E1933E6"
(302) Wed Feb 11 10:01:03 2026: Debug:   Cisco-AVPair = "url-redirect-acl=test1"
(302) Wed Feb 11 10:01:03 2026: Debug: Finished request
(302) Wed Feb 11 10:01:08 2026: Debug: Cleaning up request packet ID 20 with timestamp +514260
(303) Wed Feb 11 10:01:48 2026: Debug: Received CoA-Request Id 195 from 100.127.2.150:40057 to 100.127.2.200:1700 length 166
(303) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78:98:E8:1E:67:07"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "audit-session-id=3A03EB20-4E1933E6"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "subscriber:command=reauthenticate"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "subscriber:reauthenticate-type=rerun"
(303) Wed Feb 11 10:01:48 2026: Debug: # Executing section recv-coa from file /etc/raddb/sites-enabled/_default
(303) Wed Feb 11 10:01:48 2026: Debug:   recv-coa {
(303) Wed Feb 11 10:01:48 2026: Debug:     [wlc_coa_proxy] = ok
(303) Wed Feb 11 10:01:48 2026: Debug:     [ok] = ok
(303) Wed Feb 11 10:01:48 2026: Debug:   } # recv-coa = ok
(303) Wed Feb 11 10:01:48 2026: Debug: Starting proxy to home server 192.168.1.3 port 3799
(303) Wed Feb 11 10:01:48 2026: Debug: server default {
(303) Wed Feb 11 10:01:48 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(303) Wed Feb 11 10:01:48 2026: Debug:     pre-proxy {
(303) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(303) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> TRUE
(303) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  {
(303) Wed Feb 11 10:01:48 2026: Debug:         update proxy-request {
(303) Wed Feb 11 10:01:48 2026: Debug:         } # update proxy-request = noop
(303) Wed Feb 11 10:01:48 2026: Debug:         [ok] = ok
(303) Wed Feb 11 10:01:48 2026: Debug:       } # if ((control:Eltex-WLC-CoA-Proxy))  = ok
(303) Wed Feb 11 10:01:48 2026: Debug:     } # pre-proxy = ok
(303) Wed Feb 11 10:01:48 2026: Debug: }
(303) Wed Feb 11 10:01:48 2026: Debug: Sent CoA-Request Id 207 from 0.0.0.0:37773 to 192.168.1.3:3799 length 166
(303) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78:98:E8:1E:67:07"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "audit-session-id=3A03EB20-4E1933E6"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "subscriber:command=reauthenticate"
(303) Wed Feb 11 10:01:48 2026: Debug:   Cisco-AVPair = "subscriber:reauthenticate-type=rerun"
(304) Wed Feb 11 10:01:48 2026: Debug: Received Access-Request Id 21 from 192.168.1.3:51780 to 192.168.1.1:1812 length 302
(304) Wed Feb 11 10:01:48 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(304) Wed Feb 11 10:01:48 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-IP-Address = 192.168.2.45
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(304) Wed Feb 11 10:01:48 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(304) Wed Feb 11 10:01:48 2026: Debug:   Eltex-AP-Domain = "default-location"
(304) Wed Feb 11 10:01:48 2026: Debug:   Eltex-Domain = "default"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(304) Wed Feb 11 10:01:48 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(304) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port = 1
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Type = Wireless-802.11
(304) Wed Feb 11 10:01:48 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-IP-Address = 192.168.1.3
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(304) Wed Feb 11 10:01:48 2026: Debug:   Service-Type = Call-Check
(304) Wed Feb 11 10:01:48 2026: Debug:   Message-Authenticator = 0xe0f6df61e6610ab12dd4f21374940c34
(304) Wed Feb 11 10:01:48 2026: Debug: # Executing section authorize from file /etc/raddb/sites-enabled/_default
(304) Wed Feb 11 10:01:48 2026: Debug:   authorize {
(304) Wed Feb 11 10:01:48 2026: Debug:     policy filter_username {
(304) Wed Feb 11 10:01:48 2026: Debug:       if (&User-Name) {
(304) Wed Feb 11 10:01:48 2026: Debug:       if (&User-Name)  -> TRUE
(304) Wed Feb 11 10:01:48 2026: Debug:       if (&User-Name)  {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ / /) {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ / /)  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /@[^@]*@/ ) {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /\.\./ ) {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /\.\./ )  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(304) Wed Feb 11 10:01:48 2026: Debug:         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /\.$/)  {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /\.$/)   -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /@\./)  {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&User-Name =~ /@\./)   -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:       } # if (&User-Name)  = notfound
(304) Wed Feb 11 10:01:48 2026: Debug:     } # policy filter_username = notfound
(304) Wed Feb 11 10:01:48 2026: Debug:     [preprocess] = ok
(304) Wed Feb 11 10:01:48 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper") {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (&Cisco-AVPair && &Cisco-AVPair == "subscriber:command=ip-shaper")  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     else {
(304) Wed Feb 11 10:01:48 2026: Debug:       policy get_ssid {
(304) Wed Feb 11 10:01:48 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}") {
(304) Wed Feb 11 10:01:48 2026: Debug:         EXPAND %{8}
(304) Wed Feb 11 10:01:48 2026: Debug:            --> !WNAM.test-portal
(304) Wed Feb 11 10:01:48 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
(304) Wed Feb 11 10:01:48 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}")  {
(304) Wed Feb 11 10:01:48 2026: Debug:           update request {
(304) Wed Feb 11 10:01:48 2026: Debug:             EXPAND %{8}
(304) Wed Feb 11 10:01:48 2026: Debug:                --> !WNAM.test-portal
(304) Wed Feb 11 10:01:48 2026: Debug:           } # update request = noop
(304) Wed Feb 11 10:01:48 2026: Debug:           [updated] = updated
(304) Wed Feb 11 10:01:48 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
(304) Wed Feb 11 10:01:48 2026: Debug:         ... skipping else: Preceding "if" was taken
(304) Wed Feb 11 10:01:48 2026: Debug:       } # policy get_ssid = updated
(304) Wed Feb 11 10:01:48 2026: Debug:       policy auth_by_ssid_default {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&Called-Station-SSID) {
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&Called-Station-SSID)  -> TRUE
(304) Wed Feb 11 10:01:48 2026: Debug:         if (&Called-Station-SSID)  {
(304) Wed Feb 11 10:01:48 2026: Debug:           policy auth_default {
(304) Wed Feb 11 10:01:48 2026: Debug:             update request {
(304) Wed Feb 11 10:01:48 2026: Debug:             } # update request = noop
(304) Wed Feb 11 10:01:48 2026: Debug:             update control {
(304) Wed Feb 11 10:01:48 2026: Debug:             } # update control = noop
(304) Wed Feb 11 10:01:48 2026: Debug:           } # policy auth_default = noop
(304) Wed Feb 11 10:01:48 2026: Debug:         } # if (&Called-Station-SSID)  = noop
(304) Wed Feb 11 10:01:48 2026: Debug:         ... skipping else: Preceding "if" was taken
(304) Wed Feb 11 10:01:48 2026: Debug:       } # policy auth_by_ssid_default = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     } # else = updated
(304) Wed Feb 11 10:01:48 2026: Debug:     [chap] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     [mschap] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     [digest] = noop
(304) Wed Feb 11 10:01:48 2026: Debug: suffix: Checking for suffix after "@"
(304) Wed Feb 11 10:01:48 2026: Debug: suffix: No '@' in User-Name = "78:98:e8:1e:67:07", looking up realm NULL
(304) Wed Feb 11 10:01:48 2026: Debug: suffix: No such realm "NULL"
(304) Wed Feb 11 10:01:48 2026: Debug:     [suffix] = noop
(304) Wed Feb 11 10:01:48 2026: Debug: files_multi: users: Matched entry DEFAULT at line 1
(304) Wed Feb 11 10:01:48 2026: Debug:     [files_multi] = ok
(304) Wed Feb 11 10:01:48 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1) {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (&reply:Eltex-Tls-Enabled == 1)  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     else {
(304) Wed Feb 11 10:01:48 2026: Debug: eap: No EAP-Message, not doing EAP
(304) Wed Feb 11 10:01:48 2026: Debug:       [eap] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     } # else = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     if (ok) {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (ok)  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     [expiration] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     [logintime] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     [pap] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:   } # authorize = updated
(304) Wed Feb 11 10:01:48 2026: Debug: Starting proxy to home server 100.127.2.150 port 1812
(304) Wed Feb 11 10:01:48 2026: Debug: server default {
(304) Wed Feb 11 10:01:48 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(304) Wed Feb 11 10:01:48 2026: Debug:     pre-proxy {
(304) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(304) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     } # pre-proxy = noop
(304) Wed Feb 11 10:01:48 2026: Debug: }
(304) Wed Feb 11 10:01:48 2026: Debug: Sent Access-Request Id 165 from 0.0.0.0:37773 to 100.127.2.150:1812 length 312
(304) Wed Feb 11 10:01:48 2026: Debug:   User-Name = "78:98:e8:1e:67:07"
(304) Wed Feb 11 10:01:48 2026: Debug:   User-Password = "78:98:e8:1e:67:07"
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-IP-Address = 192.168.2.45
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(304) Wed Feb 11 10:01:48 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(304) Wed Feb 11 10:01:48 2026: Debug:   Eltex-AP-Domain = "default-location"
(304) Wed Feb 11 10:01:48 2026: Debug:   Eltex-Domain = "default"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(304) Wed Feb 11 10:01:48 2026: Debug:   Called-Station-Id = "68-13-e2-c2-f7-40:!WNAM.test-portal"
(304) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78-98-e8-1e-67-07"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port = 1
(304) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Type = Wireless-802.11
(304) Wed Feb 11 10:01:48 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-IP-Address := 100.127.2.200
(304) Wed Feb 11 10:01:48 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(304) Wed Feb 11 10:01:48 2026: Debug:   Service-Type = Call-Check
(304) Wed Feb 11 10:01:48 2026: Debug:   Message-Authenticator = 0xe0f6df61e6610ab12dd4f21374940c34
(304) Wed Feb 11 10:01:48 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:48 GMT+7"
(304) Wed Feb 11 10:01:48 2026: Debug:   Proxy-State = 0x3231
(303) Wed Feb 11 10:01:48 2026: Debug: Clearing existing &reply: attributes
(303) Wed Feb 11 10:01:48 2026: Debug: Received CoA-ACK Id 207 from 192.168.1.3:3799 to 192.168.1.1:37773 length 44
(303) Wed Feb 11 10:01:48 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:48 GMT+7"
(303) Wed Feb 11 10:01:48 2026: Debug:   Message-Authenticator = 0xf581712c6a7380f18f25ac4fe895b155
(303) Wed Feb 11 10:01:48 2026: Debug: server default {
(303) Wed Feb 11 10:01:48 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(303) Wed Feb 11 10:01:48 2026: Debug:     post-proxy {
(303) Wed Feb 11 10:01:48 2026: Debug: eap: No pre-existing handler found
(303) Wed Feb 11 10:01:48 2026: Debug:       [eap] = noop
(303) Wed Feb 11 10:01:48 2026: Debug:     } # post-proxy = noop
(303) Wed Feb 11 10:01:48 2026: Debug: }
(303) Wed Feb 11 10:01:48 2026: Debug: # Executing section send-coa from file /etc/raddb/sites-enabled/_default
(303) Wed Feb 11 10:01:48 2026: Debug:   send-coa {
(303) Wed Feb 11 10:01:48 2026: Debug:     [ok] = ok
(303) Wed Feb 11 10:01:48 2026: Debug:   } # send-coa = ok
(303) Wed Feb 11 10:01:48 2026: Debug: Sent CoA-ACK Id 195 from 100.127.2.200:1700 to 100.127.2.150:40057 length 44
(303) Wed Feb 11 10:01:48 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:48 GMT+7"
(303) Wed Feb 11 10:01:48 2026: Debug:   Message-Authenticator = 0xf581712c6a7380f18f25ac4fe895b155
(303) Wed Feb 11 10:01:48 2026: Debug: Finished request
(304) Wed Feb 11 10:01:48 2026: Debug: Clearing existing &reply: attributes
(304) Wed Feb 11 10:01:48 2026: Debug: Received Access-Accept Id 165 from 100.127.2.150:1812 to 100.127.2.200:37773 length 24
(304) Wed Feb 11 10:01:48 2026: Debug:   Proxy-State = 0x3231
(304) Wed Feb 11 10:01:48 2026: Debug: server default {
(304) Wed Feb 11 10:01:48 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(304) Wed Feb 11 10:01:48 2026: Debug:     post-proxy {
(304) Wed Feb 11 10:01:48 2026: Debug: eap: No pre-existing handler found
(304) Wed Feb 11 10:01:48 2026: Debug:       [eap] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     } # post-proxy = noop
(304) Wed Feb 11 10:01:48 2026: Debug: }
(304) Wed Feb 11 10:01:48 2026: Debug: Found Auth-Type = Accept
(304) Wed Feb 11 10:01:48 2026: Debug: Auth-Type = Accept, accepting the user
(304) Wed Feb 11 10:01:48 2026: Debug: # Executing section post-auth from file /etc/raddb/sites-enabled/_default
(304) Wed Feb 11 10:01:48 2026: Debug:   post-auth {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name)) {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name))  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     update {
(304) Wed Feb 11 10:01:48 2026: Debug:       No attributes updated for RHS &session-state:
(304) Wed Feb 11 10:01:48 2026: Debug:     } # update = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     [exec] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     policy remove_reply_message_if_eap {
(304) Wed Feb 11 10:01:48 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message) {
(304) Wed Feb 11 10:01:48 2026: Debug:       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:       else {
(304) Wed Feb 11 10:01:48 2026: Debug:         [noop] = noop
(304) Wed Feb 11 10:01:48 2026: Debug:       } # else = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     } # policy remove_reply_message_if_eap = noop
(304) Wed Feb 11 10:01:48 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id) {
(304) Wed Feb 11 10:01:48 2026: Debug:     if (EAP-Key-Name && &reply:EAP-Session-Id)  -> FALSE
(304) Wed Feb 11 10:01:48 2026: Debug:     update reply {
(304) Wed Feb 11 10:01:48 2026: Debug:     } # update reply = noop
(304) Wed Feb 11 10:01:48 2026: Debug:   } # post-auth = noop
(304) Wed Feb 11 10:01:48 2026: Debug: Sent Access-Accept Id 21 from 192.168.1.1:1812 to 192.168.1.3:51780 length 20
(304) Wed Feb 11 10:01:48 2026: Debug: Finished request
(305) Wed Feb 11 10:01:48 2026: Debug: Received Accounting-Request Id 22 from 192.168.1.3:52818 to 192.168.1.1:1813 length 245
(305) Wed Feb 11 10:01:48 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(305) Wed Feb 11 10:01:48 2026: Debug:   Acct-Status-Type = Start
(305) Wed Feb 11 10:01:48 2026: Debug:   User-Name = "7898e81e6707"
(305) Wed Feb 11 10:01:48 2026: Debug:   Service-Type = Login-User
(305) Wed Feb 11 10:01:48 2026: Debug:   Eltex-Domain = "default"
(305) Wed Feb 11 10:01:48 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:48 GMT+7"
(305) Wed Feb 11 10:01:48 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(305) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Type = Wireless-802.11
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-IP-Address = 192.168.1.3
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(305) Wed Feb 11 10:01:48 2026: Debug:   Framed-IP-Address = 192.168.2.45
(305) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(305) Wed Feb 11 10:01:48 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(305) Wed Feb 11 10:01:48 2026: Debug:   Eltex-AP-Domain = "default-location"
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(305) Wed Feb 11 10:01:48 2026: Debug: # Executing section preacct from file /etc/raddb/sites-enabled/_default
(305) Wed Feb 11 10:01:48 2026: Debug:   preacct {
(305) Wed Feb 11 10:01:48 2026: Debug:     [preprocess] = ok
(305) Wed Feb 11 10:01:48 2026: Debug:     policy acct_unique {
(305) Wed Feb 11 10:01:48 2026: Debug:       update request {
(305) Wed Feb 11 10:01:48 2026: Debug:       } # update request = noop
(305) Wed Feb 11 10:01:48 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&            ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i)) {
(305) Wed Feb 11 10:01:48 2026: Debug:       EXPAND %{hex:&Class}
(305) Wed Feb 11 10:01:48 2026: Debug:          -->
(305) Wed Feb 11 10:01:48 2026: Debug:       EXPAND ^%{hex:&Tmp-String-9}
(305) Wed Feb 11 10:01:48 2026: Debug:          --> ^61693a
(305) Wed Feb 11 10:01:48 2026: Debug:       if (("%{hex:&Class}" =~ /^%{hex:&Tmp-String-9}/) &&            ("%{string:&Class}" =~ /^ai:([0-9a-f]{32})/i))  -> FALSE
(305) Wed Feb 11 10:01:48 2026: Debug:       else {
(305) Wed Feb 11 10:01:48 2026: Debug:         update request {
(305) Wed Feb 11 10:01:48 2026: Debug:           EXPAND %{md5:%{User-Name},%{Acct-Session-ID},%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}},%{NAS-Identifier},%{NAS-Port-ID},%{NAS-Port}}
(305) Wed Feb 11 10:01:48 2026: Debug:              --> 98176558f40a11af646270971625a7ed
(305) Wed Feb 11 10:01:48 2026: Debug:         } # update request = noop
(305) Wed Feb 11 10:01:48 2026: Debug:       } # else = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     } # policy acct_unique = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     policy get_ssid {
(305) Wed Feb 11 10:01:48 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}") {
(305) Wed Feb 11 10:01:48 2026: Debug:       EXPAND %{8}
(305) Wed Feb 11 10:01:48 2026: Debug:          --> !WNAM.test-portal
(305) Wed Feb 11 10:01:48 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
(305) Wed Feb 11 10:01:48 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}")  {
(305) Wed Feb 11 10:01:48 2026: Debug:         update request {
(305) Wed Feb 11 10:01:48 2026: Debug:           EXPAND %{8}
(305) Wed Feb 11 10:01:48 2026: Debug:              --> !WNAM.test-portal
(305) Wed Feb 11 10:01:48 2026: Debug:         } # update request = noop
(305) Wed Feb 11 10:01:48 2026: Debug:         [updated] = updated
(305) Wed Feb 11 10:01:48 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
(305) Wed Feb 11 10:01:48 2026: Debug:       ... skipping else: Preceding "if" was taken
(305) Wed Feb 11 10:01:48 2026: Debug:     } # policy get_ssid = updated
(305) Wed Feb 11 10:01:48 2026: Debug: suffix: Checking for suffix after "@"
(305) Wed Feb 11 10:01:48 2026: Debug: suffix: No '@' in User-Name = "7898e81e6707", looking up realm NULL
(305) Wed Feb 11 10:01:48 2026: Debug: suffix: No such realm "NULL"
(305) Wed Feb 11 10:01:48 2026: Debug:     [suffix] = noop
(305) Wed Feb 11 10:01:48 2026: Debug: files_multi: acct_users: Matched entry DEFAULT at line 1
(305) Wed Feb 11 10:01:48 2026: Debug:     [files_multi] = ok
(305) Wed Feb 11 10:01:48 2026: Debug:   } # preacct = updated
(305) Wed Feb 11 10:01:48 2026: Debug: # Executing section accounting from file /etc/raddb/sites-enabled/_default
(305) Wed Feb 11 10:01:48 2026: Debug:   accounting {
(305) Wed Feb 11 10:01:48 2026: Debug:     [exec] = noop
(305) Wed Feb 11 10:01:48 2026: Debug: attr_filter.accounting_response: EXPAND %{User-Name}
(305) Wed Feb 11 10:01:48 2026: Debug: attr_filter.accounting_response:    --> 7898e81e6707
(305) Wed Feb 11 10:01:48 2026: Debug: attr_filter.accounting_response: Matched entry DEFAULT at line 12
(305) Wed Feb 11 10:01:48 2026: Debug:     [attr_filter.accounting_response] = updated
(305) Wed Feb 11 10:01:48 2026: Debug:     policy acct_by_ssid_default {
(305) Wed Feb 11 10:01:48 2026: Debug:       if (&Called-Station-SSID) {
(305) Wed Feb 11 10:01:48 2026: Debug:       if (&Called-Station-SSID)  -> TRUE
(305) Wed Feb 11 10:01:48 2026: Debug:       if (&Called-Station-SSID)  {
(305) Wed Feb 11 10:01:48 2026: Debug:         policy acct_default {
(305) Wed Feb 11 10:01:48 2026: Debug:           update request {
(305) Wed Feb 11 10:01:48 2026: Debug:           } # update request = noop
(305) Wed Feb 11 10:01:48 2026: Debug:           update control {
(305) Wed Feb 11 10:01:48 2026: Debug:           } # update control = noop
(305) Wed Feb 11 10:01:48 2026: Debug:         } # policy acct_default = noop
(305) Wed Feb 11 10:01:48 2026: Debug:       } # if (&Called-Station-SSID)  = noop
(305) Wed Feb 11 10:01:48 2026: Debug:       ... skipping else: Preceding "if" was taken
(305) Wed Feb 11 10:01:48 2026: Debug:     } # policy acct_by_ssid_default = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     if (&control:Proxy-To-Realm) {
(305) Wed Feb 11 10:01:48 2026: Debug:     if (&control:Proxy-To-Realm)  -> TRUE
(305) Wed Feb 11 10:01:48 2026: Debug:     if (&control:Proxy-To-Realm)  {
(305) Wed Feb 11 10:01:48 2026: Debug:       [noop] = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     } # if (&control:Proxy-To-Realm)  = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     ... skipping else: Preceding "if" was taken
(305) Wed Feb 11 10:01:48 2026: Debug:   } # accounting = updated
(305) Wed Feb 11 10:01:48 2026: Debug: Starting proxy to home server 100.127.2.150 port 1813
(305) Wed Feb 11 10:01:48 2026: Debug: server default {
(305) Wed Feb 11 10:01:48 2026: Debug:   # Executing section pre-proxy from file /etc/raddb/sites-enabled/_default
(305) Wed Feb 11 10:01:48 2026: Debug:     pre-proxy {
(305) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy)) {
(305) Wed Feb 11 10:01:48 2026: Debug:       if ((control:Eltex-WLC-CoA-Proxy))  -> FALSE
(305) Wed Feb 11 10:01:48 2026: Debug:     } # pre-proxy = noop
(305) Wed Feb 11 10:01:48 2026: Debug: }
(305) Wed Feb 11 10:01:48 2026: Debug: Sent Accounting-Request Id 149 from 0.0.0.0:37773 to 100.127.2.150:1813 length 249
(305) Wed Feb 11 10:01:48 2026: Debug:   Acct-Session-Id = "3A03EB20-4E1933E6"
(305) Wed Feb 11 10:01:48 2026: Debug:   Acct-Status-Type = Start
(305) Wed Feb 11 10:01:48 2026: Debug:   User-Name = "7898e81e6707"
(305) Wed Feb 11 10:01:48 2026: Debug:   Service-Type = Login-User
(305) Wed Feb 11 10:01:48 2026: Debug:   Eltex-Domain = "default"
(305) Wed Feb 11 10:01:48 2026: Debug:   Event-Timestamp = "Feb 11 2026 10:01:48 GMT+7"
(305) Wed Feb 11 10:01:48 2026: Debug:   Called-Station-Id = "68-13-E2-C2-F7-40:!WNAM.test-portal"
(305) Wed Feb 11 10:01:48 2026: Debug:   Calling-Station-Id = "78-98-E8-1E-67-07"
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Type = Wireless-802.11
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-IP-Address := 100.127.2.200
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Identifier = "68-13-E2-C2-F7-40"
(305) Wed Feb 11 10:01:48 2026: Debug:   Framed-IP-Address = 192.168.2.45
(305) Wed Feb 11 10:01:48 2026: Debug:   Framed-MTU = 1500
(305) Wed Feb 11 10:01:48 2026: Debug:   Connect-Info = "CONNECT 0Mbps 802.11a"
(305) Wed Feb 11 10:01:48 2026: Debug:   Eltex-AP-Domain = "default-location"
(305) Wed Feb 11 10:01:48 2026: Debug:   NAS-Port-Id = "7;Vlan-ID=3"
(305) Wed Feb 11 10:01:48 2026: Debug:   Proxy-State = 0x3232
(305) Wed Feb 11 10:01:48 2026: Debug: Clearing existing &reply: attributes
(305) Wed Feb 11 10:01:48 2026: Debug: Received Accounting-Response Id 149 from 100.127.2.150:1813 to 100.127.2.200:37773 length 24
(305) Wed Feb 11 10:01:48 2026: Debug:   Proxy-State = 0x3232
(305) Wed Feb 11 10:01:48 2026: Debug: server default {
(305) Wed Feb 11 10:01:48 2026: Debug:   # Executing section post-proxy from file /etc/raddb/sites-enabled/_default
(305) Wed Feb 11 10:01:48 2026: Debug:     post-proxy {
(305) Wed Feb 11 10:01:48 2026: Debug: eap: No pre-existing handler found
(305) Wed Feb 11 10:01:48 2026: Debug:       [eap] = noop
(305) Wed Feb 11 10:01:48 2026: Debug:     } # post-proxy = noop
(305) Wed Feb 11 10:01:48 2026: Debug: }
(305) Wed Feb 11 10:01:48 2026: Debug: Sent Accounting-Response Id 22 from 192.168.1.1:1813 to 192.168.1.3:52818 length 20
(305) Wed Feb 11 10:01:48 2026: Debug: Finished request
(305) Wed Feb 11 10:01:49 2026: Debug: Cleaning up request packet ID 22 with timestamp +514305
(303) Wed Feb 11 10:01:53 2026: Debug: Cleaning up request packet ID 195 with timestamp +514305
(304) Wed Feb 11 10:01:53 2026: Debug: Cleaning up request packet ID 21 with timestamp +514305

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

dump_radius+CoA.pcap

Диагностика на стороне WNAM
Якорь
Radius Logs
Radius Logs

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

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

 Image RemovedImage Added

Первоначальная авторизация с ограничением по ACL и редиректом на портал

 Image RemovedImage Added

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

 Image RemovedImage Added

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

 Image RemovedImage Added

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

 Image RemovedImage Added

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

 Image RemovedImage Added

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

 Image RemovedImage Added

Логи системы (shell)

Radiuslog

Блок кода
languagebash
titleradiuslog
tester@tester:~$ tail  -n 100 /home/wnam/radiuslog/100.127.2.200/2026-02-11.log               # Где 100.127.2.200 -- NAS-IP
                                                                                              # Где 2026-02-11 -- Дата подключения
10:17:21.629 AUTH REQ : User-Name - 78:98:e8:1e:67:07
10:17:21.629 AUTH REQ : User-Password - 78:98:e8:1e:67:07
10:17:21.629 AUTH REQ : Framed-IP-Address - 192.168.2.45
10:17:21.629 AUTH REQ : Framed-MTU - 1500
10:17:21.629 AUTH REQ : Connect-Info - CONNECT 0Mbps 802.11a
10:17:21.629 AUTH REQ : VSA:   Eltex-AP-Domain: default-location
10:17:21.629 AUTH REQ : VSA, vendor-id=35265 - Eltex-AP-Domain - default-location
10:17:21.629 AUTH REQ : Eltex-AP-Domain - default-location
10:17:21.629 AUTH REQ : VSA:   Eltex-Domain: default
10:17:21.629 AUTH REQ : VSA, vendor-id=35265 - Eltex-Domain - default
10:17:21.629 AUTH REQ : Eltex-Domain - default
10:17:21.630 AUTH REQ : NAS-Port-Id - 7;Vlan-ID=3
10:17:21.630 AUTH REQ : Called-Station-Id - 68-13-e2-c2-f7-40:!WNAM.test-portal
10:17:21.630 AUTH REQ : Calling-Station-Id - 78-98-e8-1e-67-07
10:17:21.630 AUTH REQ : NAS-Port - 1
10:17:21.630 AUTH REQ : Framed-MTU - 1500
10:17:21.630 AUTH REQ : NAS-Port-Type - Wireless-802.11
10:17:21.630 AUTH REQ : Acct-Session-Id - 5F5A25D1-7D3F27EE
10:17:21.630 AUTH REQ : NAS-IP-Address - 100.127.2.200
10:17:21.630 AUTH REQ : NAS-Identifier - 68-13-E2-C2-F7-40
10:17:21.630 AUTH REQ : Service-Type - Call-Check
10:17:21.630 AUTH REQ : Message-Authenticator - 0x00dcf9adcac533e3772d214a55cd85ac
10:17:21.630 AUTH REQ : Event-Timestamp - 1770779841
10:17:21.630 AUTH REQ : Proxy-State - 0x3236
10:17:21.631 CoA ACK : Event-Timestamp - 1770779841
10:17:21.631 CoA ACK : Message-Authenticator - 0x57a80eb3aad62d0aa1bcb07e11eb5170

10:17:21.663 AUTH RSP : Access-Accept, ID 86
10:17:21.663 AUTH RSP : AVP: Proxy-State = 0x3236
10:17:21.663 AUTH RSP : AVP_LEN=1*

10:17:21.671 ACCT REQ : Acct-Session-Id - 5F5A25D1-7D3F27EE
10:17:21.671 ACCT REQ : Acct-Status-Type - Start
10:17:21.671 ACCT REQ : User-Name - 7898e81e6707
10:17:21.671 ACCT REQ : Service-Type - Login-User
10:17:21.671 ACCT REQ : VSA:   Eltex-Domain: default
10:17:21.671 ACCT REQ : VSA, vendor-id=35265 - Eltex-Domain - default
10:17:21.672 ACCT REQ : Eltex-Domain - default
10:17:21.672 ACCT REQ : Event-Timestamp - 1770779841
10:17:21.672 ACCT REQ : Called-Station-Id - 68-13-E2-C2-F7-40:!WNAM.test-portal
10:17:21.672 ACCT REQ : Calling-Station-Id - 78-98-E8-1E-67-07
10:17:21.672 ACCT REQ : NAS-Port-Type - Wireless-802.11
10:17:21.672 ACCT REQ : NAS-IP-Address - 100.127.2.200
10:17:21.672 ACCT REQ : NAS-Identifier - 68-13-E2-C2-F7-40
10:17:21.672 ACCT REQ : Framed-IP-Address - 192.168.2.45
10:17:21.672 ACCT REQ : Framed-MTU - 1500
10:17:21.672 ACCT REQ : Connect-Info - CONNECT 0Mbps 802.11a
10:17:21.672 ACCT REQ : VSA:   Eltex-AP-Domain: default-location
10:17:21.672 ACCT REQ : VSA, vendor-id=35265 - Eltex-AP-Domain - default-location
10:17:21.672 ACCT REQ : Eltex-AP-Domain - default-location
10:17:21.672 ACCT REQ : NAS-Port-Id - 7;Vlan-ID=3
10:17:21.672 ACCT REQ : Proxy-State - 0x3237
10:17:21.699 ACCT RSP : AVP: Proxy-State = 0x3237
10:17:21.699 ACCT RSP : OK

wnam.log

Блок кода
languagebash
titlewnam.log
tester@tester:~$ tail -n 14 /home/wnam/logs/wnam.log
11:28:23.006 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.127.2.200, secret_len=10, attrs=[Acct-Session-Id: 5B9A0542-66C23FF6, Acct-Status-Type: Interim-Update, User-Name: 7898e81e6707, Service-Type: Login-User, Vendor-Specific: 0x, Event-Timestamp: 1770784103, Called-Station-Id: 68-13-E2-C2-F7-40:!WNAM.test-portal, Calling-Station-Id: 78-98-E8-1E-67-07, NAS-Port-Type: Wireless-802.11, Acct-Session-Time: 600, Acct-Input-Packets: 186, Acct-Output-Packets: 148, Acct-Input-Octets: 34830, Acct-Input-Gigawords: 0, Acct-Output-Octets: 26808, Acct-Output-Gigawords: 0, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-IP-Address: 100.127.2.200, NAS-Identifier: 68-13-E2-C2-F7-40, Framed-IP-Address: 192.168.2.45, Framed-MTU: 1500, Connect-Info: CONNECT 0Mbps 802.11g, NAS-Port-Id: 0;Vlan-ID=3, Proxy-State: 0x32]
11:28:23.008 TRACE [A12Service.java:3179] - fixRecentASessionWithIP ip=192.168.2.45, session_id=5B9A0542-66C23FF6
11:28:23.022 DEBUG [WnamCmdService.java:630] - ACCT Interim-Update existing session ID=5B9A0542-66C23FF6, duration=00:10:00, MAC=78:98:E8:1E:67:07, IP=192.168.2.45, User=7898e81e6707, NAS_IP=100.127.2.200, site_id=test
11:28:48.066 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket AUTH as=100.127.2.200, secret_len=10, attrs=[User-Name: 78:98:e8:1e:67:07, User-Password: <stripped out>, Framed-IP-Address: 0.0.0.0, Framed-MTU: 1500, Connect-Info: CONNECT 0Mbps 802.11a, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-Port-Id: 7;Vlan-ID=3, Called-Station-Id: 68-13-e2-c2-f7-40:!WNAM.test-portal, Calling-Station-Id: 78-98-e8-1e-67-07, NAS-Port: 1, Framed-MTU: 1500, NAS-Port-Type: Wireless-802.11, Acct-Session-Id: 3BD18350-41967221, NAS-IP-Address: 100.127.2.200, NAS-Identifier: 68-13-E2-C2-F7-40, Service-Type: Call-Check, Message-Authenticator: 0x..., Event-Timestamp: 1770784128, Proxy-State: 0x3338]
11:28:48.068 DEBUG [ProfilingService.java:440] - handleMac on MAC: 78:98:E8:1E:67:07 for vendor D-Link International
11:28:48.068 DEBUG [ProfilingService.java:469] - handleMac on MAC: 78:98:E8:1E:67:07 profiled in 0 ms.
11:28:48.106 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.127.2.200, secret_len=10, attrs=[Acct-Session-Id: 5B9A0542-66C23FF6, Acct-Status-Type: Stop, User-Name: 7898e81e6707, Service-Type: Login-User, Vendor-Specific: 0x, Event-Timestamp: 1770784128, Called-Station-Id: 68-13-E2-C2-F7-40:!WNAM.test-portal, Calling-Station-Id: 78-98-E8-1E-67-07, NAS-Port-Type: Wireless-802.11, Acct-Session-Time: 625, Acct-Input-Packets: 203, Acct-Output-Packets: 160, Acct-Input-Octets: 39517, Acct-Input-Gigawords: 0, Acct-Output-Octets: 28954, Acct-Output-Gigawords: 0, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, Acct-Terminate-Cause: User-Request, NAS-IP-Address: 100.127.2.200, NAS-Identifier: 68-13-E2-C2-F7-40, Framed-IP-Address: 192.168.2.45, Framed-MTU: 1500, Connect-Info: CONNECT 0Mbps 802.11g, NAS-Port-Id: 0;Vlan-ID=3, Proxy-State: 0x33]
11:28:48.108 TRACE [A12Service.java:3179] - fixRecentASessionWithIP ip=192.168.2.45, session_id=5B9A0542-66C23FF6
11:28:48.127 DEBUG [WnamCmdService.java:630] - ACCT Stop existing session ID=5B9A0542-66C23FF6, duration=00:10:25, MAC=78:98:E8:1E:67:07, IP=192.168.2.45, User=7898e81e6707, NAS_IP=100.127.2.200, site_id=test
11:28:48.988 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.127.2.200, secret_len=10, attrs=[Acct-Session-Id: 3BD18350-41967221, Acct-Status-Type: Start, User-Name: 7898e81e6707, Service-Type: Login-User, Vendor-Specific: 0x, Event-Timestamp: 1770784128, Called-Station-Id: 68-13-E2-C2-F7-40:!WNAM.test-portal, Calling-Station-Id: 78-98-E8-1E-67-07, NAS-Port-Type: Wireless-802.11, NAS-IP-Address: 100.127.2.200, NAS-Identifier: 68-13-E2-C2-F7-40, Framed-IP-Address: 192.168.2.45, Framed-MTU: 1500, Connect-Info: CONNECT 0Mbps 802.11a, Vendor-Specific: 0x, NAS-Port-Id: 7;Vlan-ID=3, Proxy-State: 0x3339]
11:28:48.989 TRACE [A12Service.java:3179] - fixRecentASessionWithIP ip=192.168.2.45, session_id=3BD18350-41967221
11:28:49.008 DEBUG [WnamCmdService.java:630] - ACCT Start new session ID=3BD18350-41967221, MAC=78:98:E8:1E:67:07, IP=192.168.2.45, User=7898e81e6707, NAS_IP=100.127.2.200, site_id=test
11:28:49.012 DEBUG [WnamCmdService.java:878] - ACCT-Start uhid task NAS_IP=100.127.2.200, CUST=78:98:E8:1E:67:07, IP=192.168.2.45
11:28:49.012 DEBUG [WnamCmdService.java:199] - ACCT-Start uhiq processing [NAS_IP=100.127.2.200, CUST=78:98:E8:1E:67:07, IP=192.168.2.45], queue_size: 0