3.1 KiB
ISC-DHCP Сервер, взаимодействие с биллингом.
Вобщих чертах взаимодействие происходит с помощью скрипта dhcp_lever.py в корне проекта. Запущенный DHCP сервер, при возникновении событий запускает этот сценарий , а тот говорит биллингу подробнее что произошло.
При событии expiry или release биллингу нужно освободить ip, а при commit нужно назначить динамическую аренду ip для учётной записи абонента в биллинге.
Сам скрипт не выполняет все эти действия, он просто отправляет полученные от dhcp сервера параметры на url адрес для обработки dhcp. View распологается в abonapp.views.DhcpLever.
Выделение аренды ip
Как происходит выделение аренды ip, от события в dhcp сервере и до появления интернета у абонента.
Когда в dhcp сервере происходит событие commit то из abonapp.views.DhcpLever вызывается функция agent.commands.dhcp.dhcp_commit, с помощью DHCP OPTION.82 получаем mac адрес управляемого свича и порт через который пришёл запрос. Каждое такое устройство должно быть зарегистрировано в биллинге. Далее ищем в базе абонента, или абонентов к которому привязано устройство с переданным mac адресом. Проверяем может-ли данный тип устройства содержать несколько подключённых абонентов(напрмер PON ONU, в основном, содержит одного абонента). Проверка происходит по свойству is_use_device_port из менеджера устройства, которое открыто для кастомизации, подробнее в Менеджер устройства. А далее, если может быть несколько абонентов, то фильтруем вывод ещё по порту свича. Получется что на управляемом свиче мы авторизуем абонентов при помощи dhcp option.82 по маку свича и порту абонента. Если наше устройство PON ONU(ONT) то авторизуем только по mac адресу оптического юнита(onu).
После добавления абоненту аренды динамического ip, он(абонент) синхронизуется с nas сервером и открывается доступ к интернету в соответствии с тарифом абонента.