Rambler's Top100


Вы

посетитель









LANBilling RADIUS и DHCP Option 82

Начиная со сборки №2, в состав модуля LANBilling 1.9 RADIUS включена поддержка атрибутов DHCP VSA. Это позволяет организовать выдачу адресов DHCP сервером на основе данных о статическом распределении IP адресов абонентов в БД АСР.

Область применения
В последнее время очень популярна идея контроля доступа к услугам ШПД на порту коммутатора без применения VPN/PPPoE туннелей. Эта задача может быть решена использованием технологий DHCP Snooping + IP Source Guard/IP Source Lockdown, поддержка которых заявлена большинством производителей сетевого оборудования.

Как это работает
Смысл технологии IP Source Guard/IP Source Lockdown — контроль трафика на порту на основе динамической таблицы соответствий Port-MAC-IP. IP пакеты, для которых не найдено совпадений в этой таблице, будут отброшены. Заполнение таблицы осуществляется автоматически по данным из DHCP запросов (DHCP Snooping). Таким образом, абонент может работать в сети только с IP адресом, полученным от доверенного (trusted) DHCP сервера. Это делает возможным учет трафика на основе статически назначенного абоненту IP адреса. Остается добиться того, чтобы абонент получал посредством DHCP всегда свой IP адрес.
С появлением DHCP сервера с возможностью «трансляции» запросов DHCP в RADIUS запросы (и обратно) исчезла необходимость в поддержке сложной конфигурации DHCP сервера (изменения данных в биллинге приходилось постоянно отражать в конфигурации dhcp сервера). Теперь вся логика по выдаче IP адресов переносится на RADIUS сервер, который работает непосредственно с БД АСР.

Установка и настройка
Инструкции по сборке, установке и настройке сервера ISC dhcpd + dhcp2radius patch очень подробно описаны в статье.
При настройке dhcpd нужно обратить внимание на следующие параметры:
  • radius-servers — ip адрес RADIUS сервера. Если RADIUS сервер запущен на одной машине с dhcpd, то необходимо указать адрес обслуживаемого интерфейса (не localhost).
  • radius-send-opts-to-srv — определяет набор опций dhcp, которые будут передаваться в соответствующих атрибутах (DHCP VSA) на RADIUS сервер. Необходимо передавать, по крайней мере, опции 50, 53, 82 (radius-send-opts-to-srv 32:35:52;)


  • Обработка запроса агентом RADIUS
    Получив запрос, содержащий DHCP VSA, RADIUS агент пытается найти абонента, инициировавшего запрос. В описанной конфигурации RADIUS Access-Request будет содержать MAC-адрес (атрибут User-Name), произвольный пароль (атрибут Password), идентификатор DHCP сервера (атрибут NAS-Port), признак DHCP запроса (DHCP-Message-Type), запрашиваемый адрес (DHCP-Requested-IP-Address) и опция 82 (DHCP-Relay-Agent-Information). При этом идентификация учетной записи возможна либо по MAC адресу (транспортному адресу учетной записи), либо по содержимому опции 82 (поиск в хранилище Inventory).

    В первом случае достаточно, чтобы для каждой учетной записи было заполнено поле «транспортный адрес», содержащее MAC сетевой карты абонента в HEX представлении. Если учетной записи присвоены несколько IP адресов (назначать подсеть в данном случае нельзя), то при добавлении MAC адреса необходимо привязать его к конкретному IP.

    Во втором случае анализируется содержание опции 82 DHCP. Этой возможностью удастся воспользоваться лишь в том случае, если коммутатор, к порту которого подключен абонент, реализует функции DHCP Relay Agent (вставка/подмена опции 82 в DHCP запросы абонентов). Атрибут DHCP-Relay-Agent-Information содержит идентификатор устройства - Agent-Remote-Id и идентификатор порта устройства, на котором был получен DHCP запрос, — Circuit-Id. В качестве Agent-Remote-Id, в зависимости от настроек коммутатора, могут выступать MAC адрес устройства, IP адрес для управления (management ip), IP адрес на соответствующем VLAN и пр. Конкретный вид этого параметра не важен, так как поиск устройства в БД Inventory осуществляется по его HEX представлению (содержимое Agent-Remote-Id сравнивается с одноименной опцией устройства в Inventory). Если устройство найдено и к его порту с номером Circuit-Id привязана учетная запись, то IP адрес из настроек этой учетной записи будет помещен в ответный пакет.

    Если абонент найден по одному из перечисленных критериев, учетная запись не заблокирована и ей назначен IP адрес, то RADIUS формирует ответный Access Accept пакет, в котором указываются выданный IP, маска сети (маска сегмента, из которого выделен адрес), время аренды адреса и другие атрибуты. DHCP-Router-Address (адрес шлюза), DHCP-Domain-Name-Server (DNS серверы) и другие «полезные» DHCP опции не передаются автоматически. Необходимо создать соответствующие атрибуты с одним из предлагаемых вариантов привязки (учетная запись, группа, агент и т.д.). С полным словарем атрибутов, поддерживаемым сервером DHCP, можно ознакомиться здесь.

    Если хоть одно из необходимых условий, перечисленных в предыдущем абзаце, не выполнено, агент формирует в ответ пакет Access Reject.

    Access Request пакеты, содержащие DHCP запрос, не приводят к созданию новой RADIUS сессии, так как не предполагают последующего поступления Accounting пакетов.


    Пример настройки DHCPD с патчем dhcp2radius под ОС Linux Fedora Core 10

    yum install dhcp

    (установим комплектный dhcpd, чтобы получить готовые init-скрипты)

    wget http://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-3.0.7.tar.gz
    tar zxvf dhcp-3.0.7.tar.gz
    cd dhcp-3.0.7
    wget http://www.netpatch.ru/projects/dhcp2radius/dhcp2radius-3.0.7-v3.patch.tar.bz2
    tar jxvf dhcp2radius-3.0.7-v3.patch.tar.bz2
    patch -p1 < dhcp2radius-3.0.7-v3.patch
    ./configure
    make && make install

    (заменить значения radius-* на соответствующие Вашей установке)

    cat > /etc/dhcpd.conf
    ddns-update-style interim;
    ignore client-updates;
    use-dhcp2radius true;
    radius-servers 192.168.10.37;
    radius-send-opts-to-srv 35;
    radius-secret qwerty12345;
    radius-password omgwtf;

    (нажать CTRL+D)

    /etc/init.d/dhcpd start


    Настройка агента в биллинге
    1. Создаем RADIUS-агент.
    2. Задаем адрес NAS (адрес DHCP-сервера) и "секрет" указанный в dhcpd.conf (radius-secret).
    3. Добавить подсеть в пул IP-адресов агента RADIUS.
    4. Создаем тариф для этого агента.
    5. Создаем пользователя.
    6. Создаем учетную запись для RADIUS-агента:
      • В качестве поля "Логин" — MAC-адрес устройства без разделителей (например, 00254bd63986);
      • В качестве пароля — значение radius-password из файла dhcpd.conf;
      • Добавляем IP-адрес к учетной записи;
      • Добавляем к учетной записи транспортный адрес без разделителей и привязываем его к добавленному в предыдущем пункте IP-адресу;
      • Сохраняем учетную запись.
    7. Добавляем атрибуты, устанавливающие шлюз по умолчанию и DNS-сервер для DHCP-клиентов:
      (Свойства — RADIUS-атрибуты)
      • Добавить атрибут;
      • Выбираем NAS (можно назначить разные шлюзы и DNS для каждого коммутатора) либо оставляем для всех;
      • RADIUS-Code: Access-accept;
      • Атрибут: DHCP-Gateway-IP-Address / DHCP-Gateway-IP-Address;
      • Привязка — агент.
    8. Запускаем сетевой агент RADIUS.
    9. Подключаем сетевое устройство к системе, которое получает по DHCP IP-адрес, назначенный учетной записи в АСР LANBilling.


    В начало страницы