Описание

В статье рассматривается настройка проксирования RADIUS-запросов от ТД через контроллер WLC в NAC-систему. ТД является устройством идентификации (NAS-клиент), RADIUS-запросы будут исходить от ТД. Контроллер WLC выполняет роль посредника в общении ТД и NAC-системы.

Диаграмма взаимодействия 

ТД — самостоятельное устройство идентификации. Возможно несколько схем взаимодействия ТД и RADIUS-сервера:

  1. Авторизация на локальном RADIUS-сервере контроллера WLC:
    Список пользователей Wi-Fi хранится в конфигурации контроллера. На контроллере запущен RADIUS-сервер, который выполняет проверку пользователей самостоятельно. Подробное описание представлено в статье Настройка локального RADIUS-сервера.
  2. Авторизация на внешнем RADIUS-сервере:
    Список пользователей хранится на внешнем сервере. На контроллере запущен RADIUS-сервер, который выполняет проксирование RADIUS-запросов на вышестоящий сервер.

В статье описана настройка контроллера для проксирования RADIUS-запросов при работе с внешним RADIUS-сервером, т.е. вторая схема.

Проксирование RADIUS-запросов позволяет использовать общее хранилище учетных данных пользователи Wi-Fi. 

Для успешной авторизации на внешнем RADIUS-сервере необходимо:

  • Наличие учетных записей пользователей;
  • IP-адреса контроллера WLC нужно прописать в качестве NAS-клиента;
  • Настроить подмену NAS-IP в конфигурации WLC. NAS-IP будет меняться в RADIUS-запросах от ТД при прохождении через контроллер. В таком случае на внешнем RADIUS-сервере нужно добавить один NAS-объект, которым является WLC.

Рекомендуется ознакомиться с базовой настройкой подключения ТД к контроллеру WLC, которая описана в разделе Настрoйка WLC руководства по эксплуатации.

Логика работы Enterprise-авторизации

Успешная авторизация клиента

Рассмотрим поэтапную работу при Enterprise-авторизации. Ниже на диаграмме представлен пример успешной авторизации пользователя с проксированием на внешний RADIUS-сервер.

При подключении к SSID клиент вводит учетные данные в виде логина (username) и пароля (password), которые приходят на ТД. ТД отправляет запрос (Access-Request) на RADIUS-сервер WLC, в атрибуте NAS-IP будет задан IP-адрес ТД. На WLC настроено проксирование на внешний RADIUS-сервер. Получив от ТД запрос (Access-Request), WLC подменит NAS-IP на IP-адрес, который указан в конфигурации и отправит запрос на внешний RADIUS-сервер. Внешний RADIUS-сервер может проверить наличие записи NAS-IP WLC в своей конфигурации. Если запись найдена, происходит проверка учетной записи пользователя и в случае успешной проверки, внешний RADIUS-сервер отправляет ответ (Access-Accept) в сторону WLC. WLC в свою очередь, получив ответ от внешнего RADIUS-сервера, пересылает ответ ТД.

После успешного подключения клиента ТД отправляет запрос (Accounting-Request) на WLC (если отправка включена в конфигурации). WLC подменяет NAS-IP и пересылает запрос на внешний RADIUS-сервер. Внешний RADIUS-сервер отправляет ответ (Accounting-Response) WLC. WLC пересылает запрос ТД.

Задача

Настроить перенаправление всех RADIUS-запросов от ТД из сети 192.168.1.0/24 на вышестоящий сервер: 

Производить подмену NAS-IP на 10.10.20.1 

Решение

Настройка будет выполнена на базе заводской конфигурации (Factory).

Шаги выполнения:

  1. Настроить локальный RADIUS-сервер:
    1. Прописать nas – разрешить прием RADIUS-пакетов от ТД;
    2. Настроить virtual-server – включить режим проксирования и настроить подмену NAS-IP;
    3. Настроить upstream-server – указать параметры вышестоящего сервера.
  2. Настройка в разделе WLC:
    1. Настроить radius-profile – настроить radius-profile, который будет использоваться для ТД;
    2. Настроить ssid-profile – настроить SSID и выбрать ранее созданный radius-profile;
    3. Включить ssid-profile в локацию.
  3. Настроить firewall.
  4. Применить конфигурацию.

Пример настройки

  1. Настройка локального RADIUS-сервера.
    Перейти в конфигурационный режим:

    wlc# configure
    wlc(config)#

    Перейти в раздел radius-server local:

    wlc(config)# radius-server local
    wlc(config-radius)#


    1. Прописать NAS.
      Необходимо добавить подсети ТД (адресное пространство ТД, т.е. их IP-адреса), которые будут обслуживаться локальным RADIUS-сервером при Enterprise-авторизации пользователей Wi-Fi в nas ap:

      wlc(config-radius)# nas ap
      wlc(config-radius-nas)# network 192.168.1.0/24
      wlc(config-radius-nas)# key ascii-text password
      wlc(config-radius-nas)# exit
      


      При схеме подключения ТД через L3-сеть (с SoftGRE-туннелями) в конфигурации должна быть настроена запись для nas local, если она отсутствует, нужно её добавить:

      wlc(config-radius)# nas local
      wlc(config-radius-nas)# key ascii-text password
      wlc(config-radius-nas)# network 127.0.0.1/32
      wlc(config-radius-nas)# exit



    2. Настроить virtual-server.
      Настроить virtual-server для проксирования RADIUS-запросов на внешний сервер. 
      Задать имя virtual-server:

      wlc(config-radius)# virtual-server default

      Задать nas-ip.

      В локальном RADIUS-сервере есть возможность изменять NAS-IP во всех входящих RADIUS-запросах от ТД к WLC.
      Если параметр не задан, при пересылке RADIUS-запросов на внешний сервер в атрибуте NAS-IP будет записан адрес ТД. Это может повлечь за собой ошибки в процессе аутентификации, которые подробно рассмотрены в разделе Возможные проблемы при авторизации.


      wlc(config-radius-vserver)# nas-ip-address 10.10.20.1 

      Включить режим проксирования.

      wlc(config-radius-vserver)# proxy-mode

      Включить virtual-server.

      wlc(config-radius-vserver)# enable


    3. Настроить upstream-server.

      Настройка upstream-server доступна из раздела virtual-server. Создать upstream-server для настройки параметров вышестоящего сервера:

      wlc(config-radius-vserver)# upstream-server eltex

      Задать адрес вышестоящего сервера. На этот сервер будут перенаправляться запросы от ТД:

      wlc(config-radius-upstream-server)# host 10.10.10.12

      Включить режим проксирования для запросов аутентификации и аккаунтинга.

      Server-type auth — проксирование только запросов аутентификации. Запросы будут проксироваться на порт, указанный в параметре port (по умолчанию – 1812).

      Server-type acct — проксирование только аккаунтинга. Проксирование осуществляется на порт, указанный в параметре port (по умолчанию – 1812). При необходимости порт может быть изменен (стандартный порт для аккаунтинга – 1813).

      Server-type all — проксирование запросов аутентификации и аккаунтинга. Запросы аутентификации будут проксироваться на порт, указанный в параметре port (по умолчанию – 1812), а аккаунтинг будет проксироваться на порт = 'port'+1 (то есть по умолчанию – 1813).

      Выбрать режим all, так как нужно перенаправлять все запросы.

      wlc(config-radius-upstream-server)# server-type all

      Задать ключ для вышестоящего сервера.

      wlc(config-radius-upstream-server)# key ascii-text password
      wlc(config-radius-upstream-server)# exit
      wlc(config-radius-vserver)#   exit

      Конфигурация раздела radius-server.

      radius-server local
        nas local
          key ascii-text encrypted 8CB5107EA7005AFF
          network 127.0.0.1/32
        exit
        nas ap
          key ascii-text encrypted 8CB5107EA7005AFF
          network 192.168.1.0/24
        exit
        virtual-server default
          proxy-mode
          nas-ip-address 10.10.20.1 
          upstream-server eltex
            host 10.10.10.12
            server-type all
            key ascii-text password
          exit
        enable
        exit
      exit


  2. Настройка в разделе WLC.
    Перейти в раздел wlc:

    wlc(config)# wlc
    1. Настроить radius-profile.
      Настроить профиль default-radius:

      wlc(config-wlc)# radius-profile default-radius

      Поскольку настраивается проксирование запросов аутентификации и аккаунтинга, то в auth-address и acct-address должен быть указан адрес контроллера, который доступен для ТД. Ключ RADIUS-сервера (auth-password/acct-password) должен совпадать с ключом, указанным для nas ap, который был указан в radius-server local

      wlc(config-wlc-radius-profile)# auth-address 192.168.1.1
      wlc(config-wlc-radius-profile)# auth-password ascii-text password
      wlc(config-wlc-radius-profile)# acct-address 192.168.1.1
      wlc(config-wlc-radius-profile)# acct-password ascii-text password


      Если используется проксирование на SoftWLC, необходимо указать домен RADIUS. Этот домен должен совпадать с доменом, в котором созданы учетные записи пользователей Enterprise на SoftWLC.

      wlc(config-wlc-radius-profile)# domain root


      Включить отправку аккаунтинга на RADIUS-сервер.

      wlc(config-wlc-radius-profile)# acct-enable

      Включить добавление идентификатора RADIUS-сессии в запросах аккаунтинга.

      wlc(config-wlc-radius-profile)# auth-acct-id-send

      Задать временной интервал обновления аккаунтинга.

      wlc(config-wlc-radius-profile)# acct-interval 600

      Конфигурация radius-profile.

      radius-profile default-radius
        auth-address 192.168.1.1
        auth-password ascii-text password
        auth-acct-id-send
        acct-enable
        acct-address 192.168.1.1
        acct-password ascii-text password
        acct-periodic
        acct-interval 600
      exit


    2. Создать ssid-profile.
      Создать новый профиль SSID:

      wlc(config-wlc)# ssid-profile test_enterprise

      Указать в ssid-profile ранее настроенный профиль radius-profile.

      wlc(config-wlc-ssid-profile)# radius-profile default-radius

      Задать имя SSID.

      wlc(config-wlc-ssid-profile)#   ssid "test_enterprise"

      Задать режим безопасности.

      wlc(config-wlc-ssid-profile)#   security-mode WPA2_1X

      Задать VLAN.

      wlc(config-wlc-ssid-profile)# vlan-id 3

      Задать остальные параметры SSID.

      wlc(config-wlc-ssid-profile)# description "SSID  for enterprise users"
      wlc(config-wlc-ssid-profile)# 802.11kv
      wlc(config-wlc-ssid-profile)# band 2g
      wlc(config-wlc-ssid-profile)# band 5g
      wlc(config-wlc-ssid-profile)# enable
      wlc(config-wlc-ssid-profile)# exit

      Конфигурация ssid-profile.

      ssid-profile test_enterprise
        description "SSID for enterprise users"
        ssid "test_enterprise"
        radius-profile default-radius
        vlan-id 3
        security-mode WPA2_1X
        802.11kv
        band 2g
        band 5g
        enable
      exit


    3. Включить ssid-profile в локацию.
      Нужно включить созданный SSID в локацию. ТД получит конфигурацию и начнёт вещать данные SSID. В римере ниже ssid-profile включен в локацию default-location.

      ap-location default-location
        ssid-profile test_enterprise
      exit

      Конфигурация раздела wlc.

      wlc
        outside-address 192.168.1.1
        service-activator
          aps join auto
        exit
        airtune
          enable
        exit
        ap-location default-location
          description "default-location"
          mode tunnel
          ap-profile default-ap
          airtune-profile default_airtune
          ssid-profile default-ssid
          ssid-profile test_enterprise
        exit
        airtune-profile default_airtune
          description "default_airtune"
        exit
        ssid-profile default-ssid
          description "default-ssid"
          ssid "default-ssid"
          radius-profile default-radius
          vlan-id 3
          security-mode WPA2_1X
          802.11kv
          band 2g
          band 5g
          enable
        exit
        ssid-profile test_enterprise
          description "SSID for enterprise users"
          ssid "test_enterprise"
          radius-profile default-radius
          vlan-id 3
          security-mode WPA2_1X
          802.11kv
          band 2g
          band 5g
          enable
        exit
        radio-2g-profile default_2g
          description "default_2g"
        exit
        radio-5g-profile default_5g
          description "default_5g"
        exit
        ap-profile default-ap
          description "default-ap"
          password ascii-text encrypted 8CB5107EA7005AFF
        exit
        radius-profile default-radius
          description "default-radius"
          auth-address 192.168.1.1
          auth-password ascii-text encrypted 8CB5107EA7005AFF
          auth-acct-id-send
          acct-enable
          acct-address 192.168.1.1
          acct-password ascii-text encrypted 8CB5107EA7005AFF
          acct-periodic
          domain default
        exit
        wids-profile default-wids
          description "default-wids"
        exit
        ip-pool default-ip-pool
          description "default-ip-pool"
          ap-location default-location
        exit
        enable
      exit


  3. Настройка firewall.
    Для приёма аккаунтинга нужно разрешить прохождение UDP-трафика по порту 1813 из зоны trusted в зону self. В заводской конфигурации порт 1813 закрыт.
    1. Перейти в конфигурационный режим:

      wlc# configure
      wlc(config)#


    2. Создать группу radius_acct:

      object-group service radius_acct
        port-range 1813
      exit


    3. Добавить правило в zone-pair trusted self:

      security zone-pair trusted self
        rule 91
          action permit
          match protocol udp
          match destination-port object-group radius_acct
          enable
        exit
      exit


  4. Применить и подтвердить конфигурацию.

    wlc# commit
    wlc# confirm


Для настройки внешнего RADIUS-сервера необходимо записать в таблицу NAS внешнего RADIUS-сервера адрес и ключ локального RADIUS-сервера WLС.

Полная конфигурация

Конфигурация устройства:


#!/usr/bin/clish
#270
#1.30.0
#2024-12-18
#09:24:58
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 dns
  port-range 53
exit
object-group service netconf
  port-range 830
exit
object-group service radius_auth
  port-range 1812
exit
object-group service sa
  port-range 8043-8044
exit
object-group service airtune
  port-range 8099
exit
object-group service web
  port-range 443
exit
object-group service radius_acct
  port-range 1813
exit

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

radius-server local
  nas ap
    key ascii-text encrypted 8CB5107EA7005AFF
    network 192.168.1.0/24
  exit
  nas local
    key ascii-text encrypted 8CB5107EA7005AFF
    network 127.0.0.1/32
  exit
  domain default
  exit
  virtual-server default
    proxy-mode
    nas-ip-address 10.10.20.1
    upstream-server eltex
      host 10.10.10.12
      server-type all
      key ascii-text encrypted 8CB5107EA7005AFF
    exit
    enable
  exit
  enable
exit
radius-server host 127.0.0.1
  key ascii-text encrypted 8CB5107EA7005AFF
exit
aaa radius-profile default_radius
  radius-server host 127.0.0.1
exit

boot host auto-config
boot host auto-update

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 tengigabitethernet 1/0/1
  mode switchport
  switchport access vlan 2
exit
interface tengigabitethernet 1/0/2
  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
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
  airtune
    enable
  exit
  ap-location default-location
    description "default-location"
    mode tunnel
    ap-profile default-ap
    airtune-profile default_airtune
    ssid-profile default-ssid
  exit
  airtune-profile default_airtune
    description "default_airtune"
  exit
  ssid-profile default-ssid
    description "default-ssid"
    ssid "default-ssid"
    radius-profile default-radius
    vlan-id 3
    security-mode WPA2_1X
    802.11kv
    band 2g
    band 5g
    enable
  exit
  ssid-profile test_enterprise
    description "SSID for enterprise users"
    ssid "test_enterprise"
    radius-profile default-radius
    vlan-id 3
    security-mode WPA2_1X
    802.11kv
    band 2g
    band 5g
    enable
  exit
  radio-2g-profile default_2g
    description "default_2g"
  exit
  radio-5g-profile default_5g
    description "default_5g"
  exit
  ap-profile default-ap
    description "default-ap"
    password ascii-text encrypted 8CB5107EA7005AFF
  exit
  radius-profile default-radius
    description "default-radius"
    auth-address 192.168.1.1
    auth-password ascii-text encrypted 8CB5107EA7005AFF
    auth-acct-id-send
    acct-enable
    acct-address 192.168.1.1
    acct-password ascii-text encrypted 8CB5107EA7005AFF
    acct-periodic
    domain default
  exit
  wids-profile default-wids
    description "default-wids"
  exit
  ip-pool default-ip-pool
    description "default-ip-pool"
    ap-location default-location
  exit
  enable
exit

wlc-journal all
  limit days 365
exit

ip ssh server

ip tftp client timeout 45
ntp enable
ntp server 100.110.0.65
exit

ip https server


Возможные проблемы

Рассмотрим возможные проблемы при авторизации.

Запрет доступа по причине неправильного NAS-IP

Рассмотрим один из вариантов запрета доступа, где причиной является отсутствие записи NAS-IP в конфигурации внешнего RADIUS-сервера.

В данном примере внешний RADIUS-сервер на входящий запрос (Access-Request), ответит (Access-Reject). Может быть две причины такого ответа.

При настройке проксирования RADIUS запросов на WLC указывается параметр подмены NAS-IP. В случае, если он не указан, запросы будут пересылаться на внешний RADIUS-сервер без подмены NAS-IP. В результате внешний RADIUS-сервер получит запрос с NAS-IP ТД. Если на внешнем RADIUS-сервере включена проверка по NAS-IP,  запрос на подключение будет отклонён. Если подмена NAS-IP в конфигурации проксирования RADIUS на WLC настроена, но внешний RADIUS-сервер присылает ответ (Access-Reject), необходимо проверить наличие адреса WLC в NAS-клиентах в конфигурации внешнего RADIUS-сервера.

Запрет доступа по причине ошибки аутентификации

Данный пример описывает проблему ответа о запрете доступа (Access-Reject) на запрос (Access-Request).

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