Настройка RADIUS атрибутов на примере ограничения скорости VPN-соединений

Все права защищены (c) 2001-2011 NetUP (www.netup.ru)
Перепечатка материалов разрешается только с предварительного разрешения
компании NetUP (info@netup.ru)

Обращаем ваше внимание на то, что информация в данной статье может быть не актуальной.

Очень часто возникает задача передавать в RADIUSAccess-Acceptпакетах те либо иные атрибуты, не предусмотренные в базовой поставке биллинговой системы либо атрибуты, значение которых требуется изменять в зависимости от типа услуги. Одним из таких атрибутов является атрибут с кодом производителя 9 (Cisco) и значением 1 (Cisco-AVPair). Данный атрибут может содержать различные строковые значения, которые управляют параметрами соединения. В частности данный атрибут может содержать:

  1. значения, указывающие какой пул IP-адресов использовать для выделения IP-адреса абоненту. Формат записи: ip:addr-pool=POOLNAME
  2. значения, указывающие лимит скорости на данном подключении. Формат записи: lcp:interface-config#1=rate-limit input 64000 8000 8000 conform-action transmit exceed-action drop где 64000 это скорость в Кбит/сек. Ключевое слово input, указывает на то, что ограничение производится для входящих пакетов. Замените inputна output, если необходимо ограничивать скорость для исходящих пакетов.

Рассмотрим создание услуги «Передача IP-трафика» с ограничением скорости на 64 Кбит/сек. Для этого создайте услугу в центре управления биллинговой системы NetUPUTM. В разделе «Установка радиус-параметров» создайте две записи:

Первая запись для ограничения скорости входящих пакетов:

Vendor: 9
Attr: 1
Значение: lcp:interface-config#1=rate-limit input 64000 8000 8000 conform-action transmit exceed-action drop
Тип значения: String

Первая запись для ограничения скорости исходящих пакетов:

Vendor: 9
Attr: 1
Значение: lcp:interface-config#1=rate-limit output 64000 8000 8000 conform-action transmit exceed-action drop
Тип значения: String

Рисунок 1 Настройка RADIUS-атрибутов в биллинговой системе NetUPUTM

В результате NetUPRADIUS–сервер при успешной авторизации абонента будет передавать дополнительно два атрибута, указанные выше.

Для тестирования на стенде компания НетАП был использован сервер доступа Cisco 3640 Version 12.3(11)T3. В качестве клиентов выступали два сервера под управлением операционной системы GentooLinux. В качестве PPTPклиента использовался проект pptpclient [1]. На сервере доступа настроен pptpсервер и указаны адрес и секретный ключ RADIUS-сервера. Ниже приводится вырезка из конфигурационного файла сервера доступа:

!
no ip cef
vpdn enable
!
vpdn-group 1
accept-dialin
protocol pptp
virtual-template 1
!
interface Virtual-Template1
ip address negotiated
no peer default ip address
ppp authentication ms-chap-v2 chap
!
radius-server host 10.1.2.6 auth-port 1812 acct-port 1813
radius-server key secret
radius-server vsa send accounting
!

Настройка PPTP-клиента заключается в созданиие конфигурационного файла /etc/ppp/optionsследующего содержания:

name net11debuglocalnoproxyarp

где net11 – логин абонента зарегистрированного в биллинговой системе. Пароль указывается в файле /etc/ppp/chap-secrets:

net11   *   123

На этом настройка PPTP-клиента окончена и можно производить подключение. Для этого выполните команду:

pptp 10.1.2.99

где 10.1.2.99 –локальный IP-адрес сервера доступа.

В результате после успешной авторизации между компьютером абонента и сервером доступа будет создано виртуальный туннель, по которому будут проходить пакеты абонента во внешние сети. Для проверки наличия соединения на стороне клиента можно воспользоваться командой ifconfig. Вывод должен содержать информацию об интерфейсе ppp0:

ppp0      Link encap:Point-to-Point Protocol
inet addr:172.16.111.146 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:44 (44.0 b) TX bytes:65 (65.0 b)

На сервере доступа получить информацию о созданных туннелях можно командой:

show users

вывод должен содержать информацию о виртуальных интерфейсах:

  Interface    User               Mode         Idle     Peer Address
Vi408 net11 PPPoVPDN 00:02:03 172.16.111.146

Скорость на данном туннеле должна быть установлена равной 64 Кбит/сек. Проконтролировать данный параметр можно на сервере доступа командой:

show interfaces rate-limit

Вывод этой команды должен содержать значения скорости установленной на виртуальных интерфейсах:

Virtual-Access408
Input
matches: all traffic
params: 64000 bps, 8000 limit, 8000 extended limit
conformed 0 packets, 0 bytes; action: transmit
exceeded 0 packets, 0 bytes; action: drop
last packet: 107912740ms ago, current burst: 0 bytes
last cleared 00:03:13 ago, conformed 0 bps, exceeded 0 bps
Output
matches: all traffic
params: 64000 bps, 8000 limit, 8000 extended limit
conformed 0 packets, 0 bytes; action: transmit
exceeded 0 packets, 0 bytes; action: drop
last packet: 107912744ms ago, current burst: 0 bytes
last cleared 00:03:13 ago, conformed 0 bps, exceeded 0 bps

Проверку скорости можно производить как обычным копированием файлов, так и специализированными утилитами [2, 3].

Стоит отметить, что максимальное количество интерфейсов на сервере доступа лимитируется количеством структур IDB[4]. Информацию по ним можно получить командой:

show idb

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

Maximum number of Software IDBs 800.  In use 732.