SIP-сессия с пиром за NAT-ом после смены активного аплинка на маршрутизаторе?

Имеется следующая конфигурация:

локальная сеть, маршрутизатор (Mikrotik) которой двумя аплинками (1 - основной, 2 - резерв) подключен к Интернету. Внутри локальной сети есть сервер с Asterisk (работает по udp), который регистрируется у вышестоящего SIP-провайдера (Ростелеком) для приема входящих звонков. Все порт-форварды на маршрутизаторе настроены - в обычных условиях все работает корректно (слышимость в обе стороны, звонки вход/исход работают и т.п.).

Однако, при смене активного аплинка на маршрутизаторе на резервный (при падении основного) появляется проблема: хоть внутрисетевой Asterisk форсированно перерегистрируется у sip-провайдера (чтобы засветить у него новый внешний адрес), INVITE-запросы от провайдера продолжают приходить (или пытаться приходить) на старый внешний адрес, т.к. старая sip-сессия с т.з. провайдера все еще активна, а провайдер поддерживает до 2х коннектов с одинаковыми реквизитами с разных мест и считает новую сессию с резервного IP просто 2ым подключением.

После переключения (с заменой маршрутов, принудительным разрыванием tcp-соединений и очисткой conntrack-таблицы на маршрутизаторе слышимость в направлении астериск->провайдер пропадает на время, пока по таймауту старая сип-сессия не протухнет у последнего (астериск исходящие RTP-пакеты отправляет провайдеру уже с нового активного внешнего адреса, провайдер считает их неверными и отбрасывает). Самый плохой вариант: когда спустя короткое время основной аплинк оживает и маршрутизатор переключается обратно - период односторонней слышимости удваивается.

Вопрос: что мы со своей стороны (на Asterisk или маршрутизаторе) можем сделать, чтобы не происходила описанная ситуация ? Т.е. как не допускать подвисающую SIP-сессии после смены аплинка ?
  • Вопрос задан
  • 6898 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fandal
@Fandal
У Asterisk`а есть такой параметр как externip (тут подробнее: voip.rus.net/tiki-index.php?page=Asterisk+SIP+externip)
плюс, для порядка:
localnet=192.168.2.0/255.255.255.0
localnet=10.5.1.0/255.255.255.192
и т.д. - для этих подсетей не будет подставляться exnetnip в SIP пакете

p.s. exterтip и localnet`s указываются в [general] контексте в sip.conf
Должно помочь для правильной регистрации у провайдера.
Ответ написан
@Shapeshifter
Надежнее всего - попросить у SIP-провайдера второй транк, чтобы на него регистрация со второго внешнего IP шла и ничего даже рвать не надо, только dialplan чуть поправить.

А так - ну сделаете Вы скрипт с пингом первого шлюза интернет-провайдера и по обрыву связи - сменой externip в астериске и sip reload, и возвратом обратно при восстановлении, а толку?
Провайдер же, как вы говорите, считает новые пакеты неверными (хотя не понимаю - почему?).
Ответ написан
Комментировать
@aqua_gen
astersik администратор
Добрый день. Можете конфиг вашего микротика дать??
У меня такая-же задача, вроде бы все настроил, только регистрация на сервере провайдере проходит только через первый канал интернета. Плюс произошел сбой, такое впечатление как будто роутер пакет регистрации заворачивает назад на астер. Хотя замечательно регистрируюсь на другом астериске который работает на нестандартном порте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы