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