Начиная с версии 1.1.490 система управления беспроводным доступом WNAM поддерживает работу в сетях, маршрутизацию в которых осуществляют устройства Cisco ISG. К семейству устройств ISG (Intelligent Services Gateway) относятся высокопроизводительные маршрутизаторы операторского уровня, такие как Cisco 7200, 7300, 7600, 10000, ASR1000 и другие. При использовании специальной версии ПО они позволяют обеспечивать агрегацию и контроль доступа больших сетей передачи данных с сотнями тысяч абонентов. Маршрутизаторы ISG - единственные в линейке маршрутизаторов Cisco, способные обеспечить функционал "портала перехвата", необходимый для проведения авторизации пользователя сети, в том числе беспроводного.

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

В отличие от типовых настроек сервера доступа, необходимо указать ещё два дополнительных параметра, определяющих наборы RADIUS-атрибутов, передаваемых маршрутизатору. В качестве атрибутов предварительной авторизации необходимо передать имя сервиса, вызывающее перенаправление неавторизованной сессии на сервер WNAM (для проведения авторизации). Сервис LOCAL_L4R, в свою очередь, ссылается на список доступа 197, в котором определены правила перенаправления всего трафика, кроме трафика до сервера авторизации, а также указание на сервер (через правило REDIRECT_NOPAY) 10.219.7.71 порт 81.

Для перехвата всего трафика, попадающего на сервер авторизации, установлен прокси-сервер Nginx со следующим конфигурационным файлом /etc/nginx/sites-enabled/wnam-redirect и его содержимым:

server {
listen *:81;
server_name vnam;
expires -10s;
keepalive_timeout 0;
rewrite ^(.*)$ http://10.219.7.71/cp/isg?dst=$scheme://$host$request_uri redirect;
}

Согласно этой конфигурации, все HTTP-запросы неавторизованных пользователей перенаправляются на портал авторизации системы WNAM. Аналогичным способом надо настроить HTTPS-перенаправление. Для корректной работы системы WNAM необходима связка MAC-адреса клиента и его текущего IP-адреса. Поскольку ISG работает на 3-м уровне, про МАС-адреса ему не известно, и идентификация без дополнительных компонентов не пройдет. Необходимо каким-то образом связывать текущий IP-адрес клиента с его МАС-адресом. Для этого возможны два варианта представленные далее.

1. При помощи скрипта /usr/local/bin/wnam-leases.pl

DHCP-сервер должен быть запущен на сервере WNAM. Допускается использование маршрутизатора между ISG и клиентской подсетью. В данном примере клиентская подсеть имеет адреса 10.10.100.0/24.

Необходимо указывать в файле /etc/wnam.properties параметр:

linuxcp_leasescheck_script=/usr/local/bin/wnam-leases.pl

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

2. При помощи уведомлений, отправляемых утилитой /usr/local/bin/wnam-dhcpd-bridge

Необходимо в конфигурационном файле DHCP-сервера /etc/dhcp/dhcpd.conf прописать обработчики событий:

group "wifi" {
on commit {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set clhost = pick-first-value(host-decl-name, option fqdn.hostname, option host-name, "");
execute ("/usr/local/bin/wnam-dhcpd-bridge", "127.0.0.1", "password", "commit", "wnam", clip, clhw, clhost);
}

on release {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set clhost = pick-first-value(host-decl-name, option fqdn.hostname, option host-name, "");
execute ("/usr/local/bin/wnam-dhcpd-bridge", "127.0.0.1", "password", "release", "wnam", clip, clhw, clhost);
}

on expiry {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set clhost = pick-first-value(host-decl-name, option fqdn.hostname, option host-name, "");
execute ("/usr/local/bin/wnam-dhcpd-bridge", "127.0.0.1", "password", "expiry", "wnam", clip, clhw, clhost);
 }
}

В таком случае уведомления работают по методу push, т.е. происходит информирование системы WNAM о каждом факте выделения адреса абонента. Система WNAM кэширует эти сведения, в лог-файле появляется запись:

16:34:36.749 DEBUG [c.n.wnam.services.WnamApiService:154] - DHCP commit IP=10.1.0.158, MAC=00:1F:27:90:74:CA, cust_clientid='tst-sw1'

Утилита  /usr/local/bin/wnam-dhcpd-bridge при этом принимает параметры:

  • IP адрес сервера WNAM;
  • пароль обмена (должен соответствовать параметру "password" из /etc/wnam.properties;
  • команда;
  • идентификатор сервера (не используется);
  • IP-адрес;
  • MAC-адрес;
  • имя устройства клиента.

В файле конфигурации также настраиваются два таймаута (в секундах):

dhcp_cache_timeout=43200 # время жизни записи в кэше DHCP
isg_cache_timeout=43200 # время жизни записи в кэше ISG, т.н. "неавторизованная сессия".
Конфигурационные файлы и скрипты можно получить по адресу: http://www.netams.com/files/wnam/misc/.

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

Тэг - произвольный параметр, используемый в интеграции с СОРМ.

После успешной авторизации абонента на портале, сервер WNAM должен сообщить маршрутизатору ISG об изменении сервиса и об установке правил аккаунтинга. Для этого сервер WNAM отправляет пакеты RADIUS CoA в сторону маршрутизатора, с параметрами, указанными в окне настроек сервера доступа. В данном примере удаляется сервис перенаправления и включается сервис "INTERNET", в который входит аккаунтинг (список доступа 100).

Никаких дополнительных настроек на стороне FreeRADIUS не требуется.

Ниже приведен лог  процесса успешной авторизации пользователя (10.10.100.10) на сервере WNAM (10.219.7.71):

10:15:16.330 DEBUG [c.n.wnam.services.LinuxCPService:329] - create ISG session IP=10.10.100.10, NAS=10.219.7.75, MAC=00:00:00:00:00:01, SESS=0ADB074B7600000000000054
10:15:17.813 DEBUG [c.n.w.web.cp.CaptivePortalController:240] - CP isg redirect: IP=10.10.100.10, MAC=00:18:E7:0E:37:EF, ID='TP2-TKI-mAPM', CUST=known, phone=null
10:15:17.814 DEBUG [c.n.wnam.services.LinuxCPService:343] - update ISG session IP=10.10.100.10, NAS=10.219.7.75, MAC=00:18:E7:0E:37:EF, SESS=0ADB074B7600000000000054
10:15:17.816 DEBUG [c.n.w.web.cp.CaptivePortalController:697] - processAuthRequest ISG: username=00:18:E7:0E:37:EF, ip=10.10.100.10, server=, site_id=null, dst=''
10:15:17.817 DEBUG [c.n.w.web.cp.CaptivePortalController:760] - processRedirectRequest username=00:18:E7:0E:37:EF, method=FORM
10:15:19.594 DEBUG [c.n.w.web.cp.CaptivePortalController:591] - Redirect login: site_id=2, username=00:18:E7:0E:37:EF, dst='http://bash.im'
10:15:19.595 DEBUG [c.n.w.web.cp.CaptivePortalController:829] - loginAtNas ISG username=00:18:E7:0E:37:EF, ip=10.10.100.10, server=, dst='http://bash.im'
10:15:19.597 DEBUG [c.n.wnam.services.LinuxCPService:276] - open ISG access REQ for IP=10.10.100.10, MAC=00:18:E7:0E:37:EF
10:15:19.612 DEBUG [c.n.wnam.services.LinuxCPService:301] - open ISG access SUCCESS for IP=10.10.100.10, MAC=00:18:E7:0E:37:EF
10:15:19.618 DEBUG [c.n.wnam.services.WnamCmdService:537] - ACCT-Start uhid task NAS=10.219.7.75, CUST=00:18:E7:0E:37:EF, IP=10.10.100.10, DB=wnam_db
10:15:19.618 DEBUG [c.n.wnam.services.WnamCmdService:173] - ACCT-Start uhid processing NAS=10.219.7.75, CUST=00:18:E7:0E:37:EF, IP=10.10.100.10, DB=wnam_db

Ниже приведен фрагмент конфигурационного файла маршрутизатора ISG (его адрес - 10.219.7.75):

boot-start-marker
boot system flash disk0:c7200-k91p-mz.122-31.SB3.bin
boot-end-marker
!
!
aaa new-model
!
!
aaa group server radius ISG-RADIUS
server 10.219.7.71 auth-port 1812 acct-port 1813
ip radius source-interface FastEthernet0/1.2
!
aaa authentication login TAL_LIST group ISG-RADIUS
aaa authorization exec default local
aaa authorization network TAL_LIST group ISG-RADIUS
aaa authorization subscriber-service default local group ISG-RADIUS
aaa accounting delay-start all
aaa accounting update periodic 1 jitter maximum 0
aaa accounting network TAL_LIST start-stop group ISG-RADIUS
!
!
!
aaa server radius dynamic-author
client 10.219.7.71
client 10.219.7.76
client 10.10.100.10
server-key 7 04480E051D2458
auth-type any
!
aaa session-id common
ip subnet-zero
no ip icmp rate-limit unreachable
ip cef
!
!
ip dhcp relay information option
ip dhcp relay information policy keep
ip dhcp relay information trust-all
!
!
redirect server-group REDIRECT_NOPAY
server ip 10.219.7.71 port 81
!
!
!
class-map type traffic match-any CLASS-TO-REDIRECT
match access-group output 197
match access-group input 197
!
class-map type traffic match-any INTERNET
match access-group output 100
match access-group input 100
!
class-map type control match-all ISG-IP-UNAUTH
match authen-status unauthenticated
match timer UNAUTH-TIMER
!
policy-map type service LOCAL_L4R
1 class type traffic CLASS-TO-REDIRECT
redirect to group REDIRECT_NOPAY
!
!
policy-map type service INTERNET
1 class type traffic INTERNET
accounting aaa list TAL_LIST
!
!
policy-map type control ISG-CUSTOMERS-POLICY
class type control ISG-IP-UNAUTH event timed-policy-expiry
1 service disconnect
!
class type control always event session-start
1 collect identifier source-ip-address
10 authorize aaa list TAL_LIST password cisco identifier source-ip-address
20 set-timer UNAUTH-TIMER 1
!
class type control always event account-logoff
1 service disconnect
!
class type control always event session-restart
10 authorize aaa list TAL_LIST password cisco identifier source-ip-address
20 set-timer UNAUTH-TIMER 1
!
!
!
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
no ip address
speed auto
duplex auto
!
interface FastEthernet0/0.400 ! transport network - to access routers
encapsulation dot1Q 400
ip address 172.16.125.1 255.255.255.252
no snmp trap link-status
service-policy type control ISG-CUSTOMERS-POLICY
ip subscriber routed
initiator unclassified ip-address
!
interface FastEthernet0/1
no ip address
speed auto
duplex auto
!
interface FastEthernet0/1.2 ! wan network - to border router and Internet
encapsulation dot1Q 2
ip address 10.219.7.75 255.255.248.0
no snmp trap link-status
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.219.2.1
ip route 10.10.100.0 255.255.255.0 172.16.125.2
!
!
access-list 100 permit ip any any
access-list 197 deny ip host 10.219.7.71 any
access-list 197 deny ip any host 10.219.7.71
access-list 197 permit tcp any any eq www
access-list 197 permit tcp any eq www any
access-list 197 permit tcp any any eq 443
access-list 197 permit tcp any eq 443 any
access-list 197 deny ip any any
!
!
radius-server attribute 44 include-in-access-req vrf default
radius-server attribute 44 extend-with-addr
radius-server attribute 8 include-in-access-req
radius-server attribute 32 include-in-access-req
radius-server attribute 32 include-in-accounting-req
radius-server attribute 55 include-in-acct-req
radius-server attribute 55 access-request include
radius-server attribute nas-port format e UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
radius-server host 10.219.7.71 auth-port 1812 acct-port 1813 key 7 095F4B0A0B0003
radius-server unique-ident 118
radius-server vsa send cisco-nas-port
radius-server vsa send accounting
radius-server vsa send authentication
!

 На этом этапе настройка устройства Cisco ISG завершена.



  • No labels