DHCP Relay agent [Документация VAS Experts]

DHCP Relay agent

Описание

Этот режим предназначен для сетей, в которых для выдачи IP-адресов используются DHCP-сервера. В этом режиме для мониторинга начала/конца сессий пользователей FastDPI BRAS реализует DHCP relay agent. Предполагается, что DHCP-сервера вынесены в отдельный сегмент сети, напрямую недоступный пользователям. FastDPI BRAS выступает в роли агента передачи (relay agent) DHCP-запросов от оборудования пользователей к DHCP-серверам и обратного потока – ответов DHCP-серверов к оборудованию пользователей.

Режим DHCP relay agent совместим с L3-авторизацией: при включении настройки enable_auth=1 после выдачи IP-адреса будет сгенерирован Radius-запрос Access-Request на получение статуса авторизации абонента и его свойств - полисинга и списка подключенных услуг. Если требуется периодически контролировать статус L3-авторизации (например, соблюдать длительность сессии, задаваемой в Радиус-ответе атрибутом Session-Timeout), то необходимо создать файлы aslocal.bin и asnum.dscp, задающие, какие абоненты являются локальными и требуют периодической L3-авторизации.

Настройка

Активация режима:

bras_dhcp_mode=1

Взаимодействие с DHCP-серверами производится через обычный (не DNA) сетевой интерфейс. Адреса DHCP-серверов задаются в fastdpi.conf параметром bras_dhcp_server, каждый DHCP-сервер описывается отдельным параметром. Формат задания:

    bras_dhcp_server=host%dev:port{;name=val}*

где:

  • host – IP-адрес DHCP-сервера
  • dev – имя сетевого интерфейса, с которого производится связь c DHCP-сервером
  • port – порт, значение по умолчанию: 68.
  • name=val – дополнительные параметры:
    • reply_port – порт, на котором ждем ответы DHCP-сервера. Значение по умолчанию 68.
    • arp_proxy – флаг реагирования на ARP-запросы IP-адреса DHCP-сервера. Если значение данного флага равно 1, то fastDPI будет откликаться на ARP-запрос IP-адреса DHCP-сервера, при этом в качестве MAC-адреса будет возвращаться MAC-адрес fastDPI, задаваемый параметром bras_arp_mac.
    • alias_ip - алиас DHCP-сервера
[начиная с версии 7.3] Алиас DHCP-сервера - это виртуальный IP-адрес DHCP-сервера в сети провайдера. С точки зрения абонентов, DHCP-сервер находится по адресу, заданному в alias_ip, реальный адрес DHCP-сервера абонентам не доступен. СКАТ производит прозрачную замену адресов: при отправке запроса на DHCP-сервер alias_ip меняет на истинный IP-адрес сервера, при приеме ответа от сервера осуществляет обратную подмену.

Пример задания двух DHCP-серверов в fastdpi.conf:

  bras_dhcp_server=192.168.1.1%eth0;arp_proxy=1
  bras_dhcp_server=192.168.1.2%eth0;arp_proxy=1;alias_ip=10.0.1.2
Для fastDPI все DHCP-сервера равнозначны: это прерогатива клиента - выбрать “лучший” DHCP-сервер. Всего можно указать до 16 DHCP-серверов.

Если сессия успешно стартована, и режим L3-авторизации включен (enable_auth=1), fastDPI BRAS немедленно посылает Radius-запрос на авторизацию абонента, чтобы получить актуальный список подключенных услуг и профиль полисинга абонента.

Дополнительная настройка

Дополнительные параметры fastdpi.conf, относящиеся к DHCP relay agent:

  • bras_dhcp_opt82 – добавлять в DHCP-запрос абонента опцию 82 или нет. Возможны следующие значения:
    • 0 – не добавлять никогда (это значение по умолчанию)
    • 1 – добавлять, если DHCP-запрос ещё не имеет opt82 и запрос – broadcast
    • 2 - добавлять, если DHCP-запрос ещё не имеет opt82, в любой запрос – broadcast или unicast.
    • 3 - добавлять или заменять существующую opt82 только в broadcast-запросах
    • 4 - добавлять или заменять существующую opt82 в любых запросах – broadcast или unicast.
  • bras_dhcp_timeout – тайм-аут ожидания ответа от DHCP-сервера, секунд. Значение по умолчанию: 7 секунд. Следует отметить, что fastDPI BRAS не предпринимает попыток повторной отправки DHCP-запросов по истечении данного таймаута, - это задача оборудования абонента. Данный параметр регулирует только очистку внутренних структур, если в течение таймаута ответ от DHCP-сервера не получен.
  • bras_dhcp_trusted – как обрабатывать входящие пакеты. RFC-3046 предполагает наличие на relay agent некоего алгоритма, позволяющего определить, инициирован ли данный DHCP-запрос доверенным (trusted) или нет (untrusted) оборудованием. Для недоверенного оборудования предъявляются повышенные требования, например, входящий DHCP-запрос от untrusted-оборудования не может содержать опции 82, то есть между untrusted-оборудованием и fastDPI не может быть других relay-агентов. Так как fastDPI – это мост, на который идут все запросы и нет понятия “порта”, то внедрить такой алгоритм распознавания не представляется возможным, поэтому данная настройка является глобальной:
    • 0 - считать все входящие DHCP-запросы недоверенными (untrusted); в это случае если пакет содержит Opt82, но поле giaddr == 0 - такой пакет отвергается [RFC 3046]
    • 1 – считать все входящие DHCP-запросы доверенными (trusted)

opt82, добавляемая fastDPI, имеет следующие значения полей-субопций:

  • [1] Agent Circuit ID:
    • для VLAN-сетей: содержит номер VLAN - 16-битовое число в сетевом порядке байт
    • для QinQ-сетей: содержит номер outer VLAN - 16-битовое число в сетевом порядке байт
    • если нет заголовков VLAN - субопция не добавляется
  • [2] Agent Remote ID: данная субопция добавляется только для QinQ-сетей и содержит номер inner VLAN - 16-битовое число в сетевом порядке байт
  • [12] Relay Agent Identifier Sub-option (RFC6925) - идентификатор relay-агента.

Значение subopt12 'Relay Agent Identifier' берется из настройки bras_dhcp_agent_id конфигурационного файла и задает имя relay-агента, который добавил opt82. Может использоваться на стороне DHCP-сервера для распознания того, каким агентом добавлена opt82. Если настройка bras_dhcp_agent_id не задана в conf-файле - субопция не добавляется.

[СКАТ 9.5.3+] Добавлена возможность указания формата для opt82:

    # Формат добавления opt82 в DHCP-пакет:
    #  0 - дефолтный формат (описан выше)
    #  1 - бинарный формат QinQ ЛанБиллинг:
    #            Agent-CircuitId - не используется
    #            Agent-RemoteId=BRASId (IP-адрес, 4 байта), outerVLAN (2 байта), innerVLAN (2 байта), все в сетевом порядке.
    #                           В качестве BRASId выступает bras_arp_ip
    #            Если пакет не QinQ, используется дефолтный формат
#bras_dhcp_opt82_format=0

Особенности внедрения режима DHCP Relay agent

По умолчанию, СКАТ перехватывает все DHCP-запросы и пытается их отправить на соответствующий DHCP-сервер, заданный в одном из параметров bras_dhcp_server. Broadcast-запросы транслируются на все известные DHCP-сервера. Если перехваченный unicast-запрос направлен неизвестному DHCP-серверу, СКАТ выводит сообщение об ошибке в лог и дропает DHCP-запрос.

Такой алгоритм не всегда приемлем в процессе внедрения режима DHCP Relay agent, - часто требуется сделать поэтапный переход. Для этого в СКАТ версии 7.4 и выше введен conf-параметр bras_dhcp_pass_unknown с допустимыми значениями:

  • 0 - (значение по умолчанию) - перехватывать весь DHCP-трафик;
  • 1 - прозрачно пропускать DHCP-трафик на неизвестные DHCP-сервера.

Если bras_dhcp_pass_unknown=1, то unicast-DHCP-трафик на неизвестный DHCP-сервер будет прозрачно пропускаться сквозь СКАТ. Если в вашей сети до СКАТ стоят Relay agent'ы, то вы можете на них прописать разные адреса DHCP-серверов и тем самым внедрять СКАТ DHCP Relay фактически по подсетям: запросы для одних DHCP-серверов, известных СКАТу, будут управляться СКАТом, для других, неизвестных, - будут пропускаться наружу, где далее будут маршрутизироваться сторонним оборудованием на требуемый DHCP-сервер.

Особенности обработки DHCP-INFORM в режиме Relay-агента