Страница 1 из 1
Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 12:10 pm
Makioro
Доброе время суток
Не смог придумать краткое описание проблемы для названия топика, так что получилось как получилось.
Проблема заключается в следующем: Абонент "А" запрашивает настройки по DHCP к NAS Juniper Mx80 (используем модуль Mx80.pm). Джунипер запрашивает у радиуса, радиус в базе, возвращает джуниперу, а джунипер пытается отдать абоненту, но он по какой-то причине не выдаётся.
Причина эта на текущий момент неважна, а важны два момента:
- в джунипере эта сессия по какой-то причине висит бесконечно. Можно на железяке увидеть нечто вроде:
Код: Выделить всё
> show dhcp server binding | except BOUND
IP address Session Id Hardware address Expires State Interface
*.*.*.36 1027097 c8:3a:35:1b:58:d8 -619 SELECTING xe-0/0/1.1073741970
(да-да, отрицательный Expires)
- в базе абиллса из dv_calls эта сессия удаляется через рандомное время (наблюдалось от 45 секунд до 4 минут). Отмечу, что lease time равно 1200 секундам, т.е. 20 минут.
В связи с чем когда этот IP пытается получить другой абонент, в абиллсе он появляется, но джунипер не принимает - у него же есть уже этот айпи в dhcp server binding.
Мы не смогли разобраться какой скрипт удаляет сессию из dv_calls (не похоже на billd - он запускается раз в 5 минут, а сбросы сессии почти никогда не совпадают с его запусками, да и в его логах ничего).
Вижу пару решений проблемы, но реализацию не знаю. Либо сделать чтобы такие сессии не удалялись из dv_calls пока они есть на джунипере, либо удалять также на джунипере когда удаляется из dv_calls.
p.s. abills у нас не обновлялся с декабря, если эта проблема уже была выявлена и исправлена в более новой версии - сообщите, пожалуйста.
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 12:28 pm
~AsmodeuS~
Makioro писал(а):Доброе время суток
Не смог придумать краткое описание проблемы для названия топика, так что получилось как получилось.
Проблема заключается в следующем: Абонент "А" запрашивает настройки по DHCP к NAS Juniper Mx80 (используем модуль Mx80.pm). Джунипер запрашивает у радиуса, радиус в базе, возвращает джуниперу, а джунипер пытается отдать абоненту, но он по какой-то причине не выдаётся.
Причина эта на текущий момент неважна, а важны два момента:
- в джунипере эта сессия по какой-то причине висит бесконечно. Можно на железяке увидеть нечто вроде:
Код: Выделить всё
> show dhcp server binding | except BOUND
IP address Session Id Hardware address Expires State Interface
*.*.*.36 1027097 c8:3a:35:1b:58:d8 -619 SELECTING xe-0/0/1.1073741970
(да-да, отрицательный Expires)
- в базе абиллса из dv_calls эта сессия удаляется через рандомное время (наблюдалось от 45 секунд до 4 минут). Отмечу, что lease time равно 1200 секундам, т.е. 20 минут.
В связи с чем когда этот IP пытается получить другой абонент, в абиллсе он появляется, но джунипер не принимает - у него же есть уже этот айпи в dhcp server binding.
Мы не смогли разобраться какой скрипт удаляет сессию из dv_calls (не похоже на billd - он запускается раз в 5 минут, а сбросы сессии почти никогда не совпадают с его запусками, да и в его логах ничего).
Вижу пару решений проблемы, но реализацию не знаю. Либо сделать чтобы такие сессии не удалялись из dv_calls пока они есть на джунипере, либо удалять также на джунипере когда удаляется из dv_calls.
p.s. abills у нас не обновлялся с декабря, если эта проблема уже была выявлена и исправлена в более новой версии - сообщите, пожалуйста.
когда билинг выдаёт сессию посмотрите статус сессии. Скорее всего это 11 - зарезирвирован для выдачи, но акаунтинг таки не проходит соответсвенно система елси адрес больше 10 секунд в резерве старается его удалить
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 12:32 pm
Makioro
Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:
Код: Выделить всё
> show dhcp server binding | except BOUND
IP address Session Id Hardware address Expires State Interface
46.175.65.132 1027235 c8:3a:35:1b:58:d8 -167 SELECTING xe-0/0/1.1073741970
> show subscribers address 46.175.65.132
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 12:55 pm
~AsmodeuS~
Makioro писал(а):Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:
Код: Выделить всё
> show dhcp server binding | except BOUND
IP address Session Id Hardware address Expires State Interface
46.175.65.132 1027235 c8:3a:35:1b:58:d8 -167 SELECTING xe-0/0/1.1073741970
> show subscribers address 46.175.65.132
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 12:56 pm
~AsmodeuS~
Makioro писал(а):Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:
Код: Выделить всё
> show dhcp server binding | except BOUND
IP address Session Id Hardware address Expires State Interface
46.175.65.132 1027235 c8:3a:35:1b:58:d8 -167 SELECTING xe-0/0/1.1073741970
> show subscribers address 46.175.65.132
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"
для биллинга записи с статусом 11 не являются полноценными сессиями по этому идёт только чистка базы
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 1:55 pm
Makioro
Информация в биллинге и на джунипере должна быть синхронизирована, иначе это приводит к подобным коллизиям.
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 2:13 pm
~AsmodeuS~
Makioro писал(а):Информация в биллинге и на джунипере должна быть синхронизирована, иначе это приводит к подобным коллизиям.
с такой ситуацией не встречались еще, попробуйте автосинхронизатор
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 2:24 pm
Makioro
Скиньте пожалуйста ссылку на описание этого автосинхронизатора - я о таком никогда не слышал ранее
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Пн июл 25, 2016 3:32 pm
~AsmodeuS~
Makioro писал(а):Скиньте пожалуйста ссылку на описание этого автосинхронизатора - я о таком никогда не слышал ранее
http://abills.net.ua/wiki/doku.php/abil ... nij_sessij
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Вт июл 26, 2016 7:17 am
Makioro
Ну просто посмотреть какие сессии расходятся, мы и сами можем
А вот я в коде вижу помимо SHOW есть ещё HANGUP. Что именно эта команда делает? Сбрасывает расходящиеся сессии? Или вообще все?
В вики почему-то не упоминается эта команда
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Вт июл 26, 2016 8:18 am
~AsmodeuS~
Makioro писал(а):Ну просто посмотреть какие сессии расходятся, мы и сами можем
А вот я в коде вижу помимо SHOW есть ещё HANGUP. Что именно эта команда делает? Сбрасывает расходящиеся сессии? Или вообще все?
В вики почему-то не упоминается эта команда
должна скидывать различия
Re: Проблема выдачи IP, который заглючил у другого абонента
Добавлено: Вт июн 20, 2017 12:08 pm
KROLb