SIP с Asterisk
- Проверено на версии — 2.3
- Требуется — кластер балансировки с двумя модулями балансировки, сервер Asterisk с SIP-аккаунтом и регистрацией
Сценарий описывает настройку SIP-сигнализации через балансировщик 5А, когда вызовы обслуживает Asterisk. Здесь Допустимые коды ответа можно оставить пустыми — код добавлять не нужно.
Что получится
- Софтфон MicroSIP регистрируется через адрес балансировщика
172.27.2.13:70. - Вызов на контрольный номер проходит через балансировщик.
- Отключение конфигурации балансировки останавливает звонки: софтфон не получает ответа, а регистрация теряется при следующей перерегистрации.
Сквозной пример
Во всех шагах используются одни и те же значения. Подставьте вместо них свои.
| Объект | Значение |
|---|---|
| Адрес балансировщика (для клиента) | 172.27.2.13 |
| Входной UDP-порт сервиса | 70 |
| Модули балансировки | 172.27.2.13, 172.27.2.14 |
| Клиентский сервер Asterisk | 172.27.2.22 |
| SIP UDP-порт Asterisk | 5060 |
| Абонент | 1001 |
| Контрольный номер | 999 |
Порты разные: вход сервиса — 70, SIP-порт Asterisk — 5060. Тогда звонок не пройдёт мимо балансировщика, если в софтфоне указан неверный адрес.
Перед началом
- В Asterisk создан SIP-аккаунт
1001с регистрацией. - Агенты и ПК с софтфоном имеют маршрут до Asterisk.
Создание SIP-монитора
-
Откройте раздел Мониторы кластера и нажмите Добавить монитор.
-
Заполните форму Новый монитор:
- Название —
sip-udp-options; - Протокол —
SIP; - Описание —
Проверка SIP-ответа Asterisk запросом OPTIONS; - Таймаут проверки, мс —
3000; - Перегрузка порта — выключена (проверяется порт участника группы
5060);
Секция Запрос:
- Метод —
OPTIONS; - Транспорт —
UDP; - SIP URI —
sip:172.27.2.22; - Пользователь в From —
5a-monitor(значение по умолчанию).
- Название —
-
Нажмите Сохранить.
Поле Допустимые коды ответа оставьте пустым: тогда подойдёт любой SIP-ответ, и проверка проходит как при ответе 200, так и при 401, которым Asterisk запрашивает аутентификацию. На доступность сервера это не влияет — важно, что он отвечает по SIP.
Создание группы серверов
- Откройте раздел Клиентские серверы и выберите вкладку Группы серверов.
- Если сервер Asterisk ещё не добавлен, добавьте его: Имя сервера —
172.27.2.22, IP-адрес —172.27.2.22. - Нажмите Добавить группу и заполните форму создания группы:
- секция Информация о группе: Имя группы —
sip, Описание —172.27.2.22; - секция Серверы в группе: Добавить сервер — Сервер
172.27.2.22, Порт5060, Вес1; - секция Проверка здоровья: Подключенные мониторы —
sip-udp-options; Порог успешных проверок —1; - секция Условия переключения группы: Параметр — Количество доступных серверов, значение —
1.
- секция Информация о группе: Имя группы —
- Нажмите Сохранить. В таблице серверов группы колонка Состояние покажет
ОК: 2/2— сервер доступен с обоих модулей балансировки.

Группа серверов sip
Создание конфигурации балансировки
- Откройте раздел со списком конфигураций балансировки и нажмите Добавить конфигурацию.
- На вкладке L4/L7 в секции Общие настройки конфигурации:
- Название —
sip_udp_config; - Адрес — оставьте пустым, тогда сервис принимает трафик на адресах модулей балансировки;
- Порт —
70; - L4 протокол —
UDP; - L7 протокол — оставьте пустым;
- VRF — оставьте пустым, если серверы в общей сети.
- Название —
- На вкладке Сервисы в секции Настройки сервиса нажмите Добавить группу серверов: Приоритет —
1, Группа —sip. - В блоке Трансляция адресов выберите Режим трансляции адресов — Автоматически.
- Нажмите Добавить.
- В списке конфигураций балансировки включите созданную конфигурацию переключателем в её строке. Появится уведомление «Конфигурация балансировки "sip_udp_config" включена».

Конфигурация балансировки, вкладка L4/L7
Важно: порт конфигурации должен быть уникален в кластере. Подробнее.
Поле Адрес пустое, поэтому сервис слушает на адресах модулей балансировки, а софтфон обращается к одному из них — в примере 172.27.2.13. Если в конфигурации включена отказоустойчивость (HA), в поле Адрес указывают VIP, и софтфон обращается к нему: параметры отказоустойчивости.
Настройка MicroSIP
-
Откройте настройки аккаунта MicroSIP и заполните поля:
- Имя аккаунта —
sip_balancer; - SIP-сервер —
172.27.2.22; - SIP-прокси —
172.27.2.13:70; - Имя пользователя —
1001; - Логин —
1001; - Домен —
172.27.2.22; - Транспорт —
UDP; - Публичный адрес — локальный IP ПК с софтфоном, на автоподстановку не полагайтесь;
- Перерегистрация —
300; - Keep-alive —
15; - STUN, ICE и внешний сервер выключены.
- Имя аккаунта —
Поле SIP-прокси должно указывать на адрес балансировщика и входной порт сервиса — 172.27.2.13:70. Причины — в следующем разделе.

Настройки SIP-аккаунта MicroSIP
Почему звонок не проходит без SIP-прокси
Поле SIP-прокси в MicroSIP задаёт исходящий прокси, через который идут все запросы. В этом сценарии поле SIP-сервер указывает прямо на Asterisk (172.27.2.22), поэтому прокси — единственное, что направляет регистрацию и звонки через балансировщик.
Если SIP-прокси пустое или в нём указан адрес Asterisk, запросы отправляются на 172.27.2.22:5060 в обход балансировщика. В поле должна быть точка входа сервиса — 172.27.2.13:70.
| SIP-прокси | Куда отправляются REGISTER и INVITE | Результат |
|---|---|---|
172.27.2.13:70 | на адрес балансировщика | регистрация и звонок идут через балансировщик |
172.27.2.22:5060 | напрямую на Asterisk | Asterisk отвечает, но балансировка не участвует |
| пусто | на адрес из SIP-сервера (172.27.2.22:5060) | как в предыдущей строке |
Проверка регистрации
-
Убедитесь, что в MicroSIP появился статус «На линии». Если статус не появился, дождитесь перерегистрации (поле Перерегистрация в MicroSIP).
-
Снимите трафик инструментом TCP Dump на агенте кластера. Успешная регистрация выглядит как последовательность (значения примерные):
172.27.1.121.53010 > 172.27.2.13.70: UDP, length 644 # REGISTER без авторизации 172.27.2.13.70 > 172.27.1.121.53010: UDP, length 436 # 401 Unauthorized 172.27.1.121.53010 > 172.27.2.13.70: UDP, length 692 # REGISTER с учётными данными 172.27.2.13.70 > 172.27.1.121.53010: UDP, length 428 # 200 OK
Признак успеха — ответ 200 OK на парный REGISTER (второй после 401).
Особенность stream-логов
В журнале сетевого агента прошедшая дейтаграмма может быть помечена как UDP 200. Это служебный код stream-модуля балансировщика, а не SIP-ответ Asterisk: модуль не разбирает SIP и не знает, каким кодом ответил сервер. Запись появляется по завершении UDP-сессии, поэтому REGISTER, keep-alive и INVITE одного клиента могут попасть в одну строку. Регистрацию подтверждает только 200 OK на стороне клиента.
Проверка звонка
Звонок проверяется вызовом на контрольный номер Asterisk.
- В MicroSIP наберите контрольный номер
999. - Дождитесь соединения и убедитесь, что голос слышен.
- По трафику на
172.27.2.13:70должны пройтиINVITE,ACKиBYE.
Порядок методов такой:
INVITE sip:999@172.27.2.22 SIP/2.0
Route: <sip:172.27.2.13:70;lr>
SIP/2.0 401 Unauthorized
INVITE ... Authorization: Digest ...
SIP/2.0 100 Trying
SIP/2.0 200 OK
ACK
BYE / 200 OKОтвет 401 Unauthorized на первый INVITE — это запрос аутентификации, а не ошибка: софтфон повторяет запрос с учётными данными.
Проблема на этапе INVITE | Что проверять |
|---|---|
INVITE не отправляется с софтфона | SIP-прокси в аккаунте MicroSIP: должно быть 172.27.2.13:70 |
INVITE отправляется, ответа нет | группа получила статус неактивной; проверьте монитор sip-udp-options |
INVITE идёт напрямую на 172.27.2.22:5060 | звонок в обход балансировщика; исправьте SIP-прокси |
Ответ 404 Not Found | номер отсутствует в dialplan Asterisk, а не в 5А |
Контрольное отключение конфигурации
- В списке конфигураций балансировки выключите переключатель у
sip_udp_configи в окне Отключение конфигурации нажмите Отключить. - Появится уведомление «Конфигурация балансировки "sip_udp_config" выключена».
- Зарегистрированный софтфон потеряет связь с сервером: при следующей перерегистрации ответа не будет, и звонок не пройдёт. Статус «На линии» может сохраняться до этого момента.
- Включите конфигурацию обратно и дождитесь перерегистрации.
Это подтверждает, что через балансировщик проходит именно балансируемый трафик: без включённой конфигурации адрес 172.27.2.13:70 не обслуживается.
Особенности Asterisk
- Asterisk отвечает на проверочный
OPTIONSкорректным SIP-ответом, поэтому в SIP-мониторе достаточно оставить Допустимые коды ответа пустыми — подойдёт любой SIP-ответ, в том числе401. - CGP может сначала ответить промежуточным
100 Trying, а монитор проверяет код первого ответа; поэтому в сценарии с CGP код100добавлен в допустимые. - Регистрация и звонок проходят один и тот же путь: входной порт
70балансировщика, а Asterisk принимает запросы на5060.
Частые ошибки
| Ошибка | Причина | Исправление |
|---|---|---|
| Группа не переходит в статус Активна | SIP-монитор не дождался SIP-ответа | Проверьте, что Asterisk отвечает на OPTIONS по своему порту |
| Звонок не проходит после отключения | конфигурация балансировки выключена | Включите переключатель у конфигурации |
| «На линии», вызов не проходит | INVITE идёт напрямую на сервер | Проверьте SIP-прокси |
| Соединение есть, но голоса нет | Contact или SDP содержит Docker- или NAT-адрес | Укажите в MicroSIP Публичный адрес — локальный IP ПК |
Ограничения
- L4 UDP-балансировка не анализирует и не переписывает поля
Via,Contact,Record-RouteиSDP: сигнализация транслируется как есть. - Статус «На линии» — это успешная регистрация, а не подтверждение прохождения звонка.
- Голос (RTP) идёт напрямую между абонентами и через балансировщик не проходит.
- Входящие запросы к абоненту и запросы внутри разговора идут от сервера к клиенту напрямую, минуя балансировщик.
- Сценарий проверен с софтфоном MicroSIP по транспорту UDP.
Дальше
- SIP с CommuniGate Pro — второй бэкенд, промежуточный ответ
100 Tryingи проверка доступности запросомOPTIONS. - Как идёт трафик — что проходит через балансировщик, а что идёт напрямую.
- Добавление монитора — описание всех полей формы монитора.