Настройка sip сервера на windows

Обновлено: 08.07.2024

SIP-телефония позволяет значительно снизить затраты на телефонную связь. Пользуясь услугами IP-провайдеров, мы экономим деньги и получаем возможность звонить по сниженным тарифным планам из любой точки мира. Данный тип связи используется и для организации внутриофисной телефонии – для этого нужно установить на одном из компьютеров SIP-сервер и подключить к нему программные и аппаратные телефоны. В этом обзоре мы сравним самые популярные SIP-серверы, в том числе и бесплатные:

  • Asterisk;
  • 3CX;
  • Kamailio;
  • OfficeSIP Server;
  • sipX.

Давайте рассмотрим данные серверы более подробно и выясним, как запустить SIP-сервер своими руками.

SIP-серверы для Linux

Этот обзор мы начнем с рассмотрения одного из самых известных серверов для IP-телефонии – это SIP-сервер Asterisk. Он ориентирован на организацию офисной телефонии и обладает большой популярностью.

SIP-сервер Asterisk

Asterisk можно назвать свободно распространяемым решением, но лицензированные модули в нем все-таки есть. Программа работает в операционных системах Linux и выпускается в виде нескольких дистрибутивов, отличающихся функциональностью, веб-интерфейсами и наборами дополнительных модулей. Нельзя сказать, что это решение для начинающих пользователей – скорее, это более профессиональное решение. SIP-сервер Asterisk наделен следующими возможностями:

  • Переадресация и перевод вызовов;
  • Удержание и ожидание вызова (с музыкальным фоном);
  • Перехват и парковка вызовов (функции позволяют отвечать на звонки с других аппаратов или продолжать на них разговоры, начатые на других аппаратах);
  • Конференцсвязь;
  • Видеосвязь;
  • Функции Call-центра;
  • Интеграция традиционных телефонных линий;
  • Администрирование через веб-интерфейс;
  • Функции биллинга.

Можно сказать, что использование SIP-сервера Asterisk позволит решить задачу любой сложности. Масштабируемость, наличие дополнительных модулей, огромное количество поддерживаемых протоколов – все это можно назвать достоинствами программы. Что касается недостатков, то это сложность в настройках для начинающих пользователей и наличие двойной лицензии.

Несмотря на то, что этот сервер является бесплатным, в его составе могут присутствовать модули, распространяемые на основе лицензируемого кода – иногда это вызывает некоторые проблемы.

SIP-сервер Kamailio

В список его достоинств мы можем включить поддержку большого числа всевозможных модулей, расширяющих его функциональность. В число недостатков вошла сложность настройки.

SIP-сервер sipX

Это еще один бесплатный продукт, работающий под управлением Linux-систем. Сервер sipX отличается простотой и ориентацией на офисное использование. Разработчики наделили его приличным функционалом, обеспечивающим предоставление большого числа функций по управлению голосовыми вызовами. При использовании подходящего оборудования, SIP-сервер sipX позволяет решать даже самые сложные задачи.

В число его достоинств вошли стабильность, простота и минимальные размеры. SipX позволяет разворачивать местные SIP-сети в считанные часы, что используется для быстрой телефонизации офисов. Также этот сервер отличается бесплатностью. Что касается недостатков, то самым негативным моментом является то, что для работы всех функций необходимо наличие продвинутых телефонов и Voip-шлюзов.

SIP-серверы для Windows

Linux-системы обладают высочайшей устойчивостью и отличной производительностью. Но они требуют наличия определенных знаний, и их нельзя назвать дружественными к простым пользователям. Поэтому в мире ПО появились более понятные SIP-серверы для Windows. Безусловно, и здесь пользователей и системных администраторов могут ждать различные трудности, но обойти их гораздо легче.

SIP-сервер 3CX

Среди наиболее продвинутых SIP-серверов мы можем выделить Voip-АТС 3CX Phone System для Windows. Это решение ориентировано для организации корпоративной связи любого масштаба, даже если отдельные офисы находятся на разных концах планеты. Преимущества сервера:

  • Полный голосовой функционал;
  • Поддержка большого количества клиентов (в том числе и собственного софта для различных платформ);
  • Поддержка веб-конференций;
  • Интеграция услуг сторонних SIP-провайдеров и операторов традиционной телефонии.

Использование сервера 3CX Phone System позволяет минимизировать расходы на связь и сделать офисную телефонию более удобной. Разработчик предоставляет пользователям множество обучающих материалов, проводит обучающие мероприятия, осуществляется всестороннюю поддержку пользователей. На выбор клиентов представлена стандартная бесплатная версия, а также коммерческая версия, отличающаяся поддержкой дополнительные функций.

Пробная бесплатная версия является вполне функциональной и может быть использована в качестве базового варианта для организации IP-телефонии.

Достоинств у данного продукта много. В первую очередь нужно выделить то, что сервер 3CX Phone System работает под управлением операционной системы Windows. Он чрезвычайно гибок в настройках и обладает огромным функционалом. Если вам нужна обычная телефония, а не целый call-центр, то вам будет достаточно бесплатной версии. Недостатки – невозможно дополнить систему чем-то своим, так как исходный код закрыт. Впрочем, это нельзя считать существенным недостатком.

SIP-сервер OfficeSIP Server

Также имеется возможность подключения к сторонним IP-провайдером для звонков по всему миру. Отличная программа для малых офисов, нуждающихся в офисной телефонии. Преимущества программы:

  • Легкость в настройках;
  • Работа в среде Windows;
  • Простота подключения новых абонентов;
  • Наличие связи с внешним миром.
  • Отсутствие многих удобных офисных и голосовых функций;
  • Невозможность масштабирования;
  • Нет возможности подключения к «своей» АТС из любой точки мира (только локальные подключения).

Тем не менее, это предельно доступный и бесплатный SIP-сервер для небольших офисов.

В этом посте мы расскажем вам о SIP, о том, как разместить SIP-сервер, создать свою собственную SIP-сеть и многое другое на ПК с Windows. SIP расшифровывается как протокол инициации сеанса. Это протокол, используемый для высокопроизводительной мультимедийной связи по Интернет-протоколу, то есть IP. Некоторые примеры SIP: потоковая передача мультимедиа, совместное использование экрана, передача видео и голоса, многопользовательские игры, сессионная сеть и т. Д. Протокол SIP отличается от всех других протоколов, поскольку этот протокол работает как независимый уровень в других протоколах, таких как протокол управления передачей. (TCP), протокол передачи управления потоком (SCTP). Протокол SIP был первоначально разработан Хеннингом Шульцринном и Марком Хэндли в 1996 году. Этот протокол широко используется в технологиях сотовой связи.

Разместите свой собственный SIP-сервер

Шаг 2: Откройте загруженный файл установки и установите установку в соответствии с инструкциями мастера установки. После завершения установки запустите панель управления SIP-сервером.



Добавьте пользователей на свой SIP-сервер

Шаг 1. Откройте панель управления сервером OfficeSIP и войдите в систему с учетными данными администратора.

Шаг 2: В левом меню выберите опцию «Файл .csv». А теперь нажмите кнопку «Добавить», появится новое диалоговое окно, в котором вы можете ввести все данные о пользователях. На нашем сервере можно создать неограниченное количество пользователей.


Доступно множество SIP-мессенджеров, но мы рекомендуем использовать OfficeSIP Messenger, полностью совместимый с OfficeSIP-сервером.

Шаг 1. Загрузите и установите OfficeSIP Messenger из здесь. Запускаем установленное приложение. Теперь нам нужно настроить там нашу учетную запись.

Шаг 2: В адресе для входа введите адрес, назначенный вам вашим администратором SIP. Установите флажок «Использовать ниже пароль для имени пользователя», в поле имени пользователя введите имя пользователя, а в поле пароля введите пароль, назначенный вам администратором. Снимите флажок «Найти сервер автоматически» и в текстовом поле ниже введите «localhost», и все готово.


Шаг 3. Вы успешно войдете в свою учетную запись Messenger, и теперь вы можете общаться в чате. локальная сеть SIP-сервер. Вы попадете на экран мессенджера, где вам будут показаны все другие пользователи, и вы сможете легко с ними поговорить. Вы даже можете начать аудио- или видеосеанс, щелкнув меню «Контакты» и выбрав желаемый вариант.


Это все. Надеюсь, вам понравился урок.


.

В SIP Модуле CommuniGate Pro реализован SIP протокол, работающий по IP сетям.

Модуль используется для приёма Запросов с Сигналами от удалённых участников и отправки Сигналов удалённым участникам.

SIP протокол не включает в себя протоколы, необходимые для фактической передачи данных (протоколы передачи медиа). Вместо этого, SIP протокол позволяет всем участвующим сторонам находить друг друга в сети, договариваться об использовании протоколов передачи медиа и о параметрах этих протоколов, устанавливать интерактивные сессии реального времени и управлять этими сессиями: добавлять новых участников, закрывать сессии, изменять параметры сессии и т.д.

Протокол Установления Сессии (SIP)

В SIP Модуле CommuniGate Pro реализована функциональность SIP протокола. Модуль использует TCP и UDP приёмники для приёма SIP запросов и отправки пакетов через эти сетевые протоколы. От также отправляет пакеты с запросами и откликами через сетевые протоколы TCP и UDP.

SIP модуль разбирает все получаемые SIP пакеты и использует субкомпоненты модуля для обработки разобранных пакетов. Пакеты с Запросами передаются в субкомпонент SIP Сервер, новой или существующей транзакции SIP Сервера.
Компонент SIP Сервер использует Модуль Signal для обработки запроса. Отклики, сгенерированные модулем Signal, поступают в транзакцию SIP Сервера и SIP Сервер отправляет их обратно источнику SIP запроса.

Модуль Signal может отправлять Запросы на удалённое SIP устройство или на удалённый SIP Сервер. Модуль использует субкомпонент SIP Клиент для создания транзакции SIP Клиента. Эта транзакция используется для отправки SIP Запроса через Интернет протокол и обработки посланного обратно Отклика.

  • если не может быть найдено никакой транзакции для пакета с Откликом, то пакет ретранслируется "вверх" инициатору звонка SIP Модулем самостоятельно, без использования модуля Signal.
  • если не может быть найдено никакой транзакции Сервера для Запроса ACK, то для дальнейшего ретранслирования от инициатора звонка "вниз" создаётся транзакция SIP Клиента.

SIP модуль CommuniGate Pro поддерживает коммуникации через UDP и TCP, а также безопасные (TLS) коммуникации через TCP протокол.

SIP модуль CommuniGate Pro поддерживает технологию ближнего и дальнего прохождения NAT, что делает возможным осуществление SIP коммуникаций как для больших корпораций со множеством внутренних локальных сетей, так и для домашних пользователей, выходящих в Интернет через "тупые" NAT устройства.

Схема установления сессии, описанная выше, работает корректно только если обе стороны осуществляют коммуникацию напрямую. Если между сторонами имеется межсетевой экран или NAT устройство, то прямое взаимодействие между ними невозможно. В этом случае, SIP модуль CommuniGate Pro осуществляет медиа проксирование, ретранслируя не только запросы и отклики SIP протокола, но также и медиа данные.

Настройки SIP Сервера

Для того, что бы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в области Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Приём и откройте страницу с настройками SIP Сервера (UAS).

Транспортный Уровень

На панели Транспортный Уровень вы можете настроить опции уровня сети для приёма SIP пакетов: Уровень Журнала Используйте эту настройку для того, что бы указать какую информацию о SIP пакетах и транспортном уровне SIP модуль должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
В случае, если в работе SIP модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Журнал работы Сервера будут записываться содержимое пакетов и другие подробности. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.
Записи транспортного уровня модуля SIP в Журнале работы Сервера имеют пометку SIPDATA.
Обычные SIP записи имеют пометку SIP. UDP Для того, что бы настроить транспортный уровень UDP, нажмите на ссылку UDP Приёмник. Откроется страница UDP Приёмника. По умолчанию, номер порта SIP UDP имеет значение 5060. UDP TOS Тэг Используйте эту настройку для указания Тэга TOS для всех исходящих SIP UDP пакетов. Этот тэг может использоваться для задания приоритета SIP трафика в вашей локальной сети. TCP Для того, что бы настроить транспортный уровень TCP, нажмите на ссылку TCP Приёмник. Откроется страница TCP Приёмника. Вы можете задать как безопасные, так и незащищённые порты TCP. По умолчанию, незащищённый номер порта SIP TCP имеет значение 5060, а безопасный SIP TLS порт - 5061. Каналы Используйте эту опцию для того, что бы указать максимальное число коммуникационных каналов TCP, которые может открывать модуль. При превышении этого числа, модуль будет отвергать все новые входящие TCP соединения. Тайм-аут по неактивности Используйте эту опцию для того, что бы указать, когда SIP модуль должен закрывать коммуникационный канал TCP при отсутствии активности в этом канале. Это помогает сэкономить ресурсы, используемые для обслуживания коммуникационных каналов TCP на сильно загруженных серверах. С другой стороны, некоторые SIP клиенты могут работать неправильно в случае, если сервер закрывает TCP соединение по тайм-ауту.

Серверные Транзакции

На панели Серверные Транзакции вы можете указать каким образом SIP Модуль должен обрабатывать транзакции SIP сервер (UAS).

Уровень Журнала Используйте эту настройку для того, что бы указать какую информацию субкомпонент SIP Сервер должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
Записи, помещённые субкомпонентом SIP Сервер в Журнал работы Сервера, имеют пометку SIPS. Ограничение Используйте эти настройки для задания максимального числа одновременно обслуживаемых серверных транзакций, которые может обрабатывать SIP модуль. Процессоры Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Сервера.

Протокол

В компоненте сервер SIP Модуля реализована Аутентификация Запросов для удалённых клиентов. Если внутренний компонент Сервер отвергает Запрос по причине отсутствия данных аутентификации, то Модуль добавляет специальные поля в отправляемый отклик, помогающие проведению аутентификации.

Объявлять 'Digest'-Аутентификацию Выберите эту опцию для информирования SIP клиентов о поддержке стандартного метода аутентификации DIGEST. Объявлять 'NTLM'-Аутентификацию Выберите эту опцию для информирования SIP клиентов о поддержке нестандартного метода аутентификации NTLM.

Имя пользователя, указанное в данных аутентификации, обрабатывается через компонент Маршрутизатор, так что в именах аутентификации могут использоваться Псевдонимы Пользователя, Переадресаторы и Псевдонимы Домена.
У указанного Пользователя и в его Домене Услуга SIP должна быть включена.

Для SIP аутентификации могут использоваться любые пароли Пользователей CommuniGate Pro.

Настройки SIP клиента

Для того, что бы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в области Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Передача и откройте страницу с настройками SIP Клиента (UAC).

Транспортный Уровень

На панели Транспортный Уровень вы можете настроить опции уровня сети для передачи SIP пакетов: Уровень Журнала Используйте эту настройку для того, что бы указать какую информацию о SIP пакетах и транспортном уровне SIP модуль должен сохранять в Журнале работы Сервера.
Эта то же настройка, что и отображаемая на странице настроек SIP Сервера Уровень Журнала Транспортного Уровня. Ограничение размера Запроса Используйте эту опцию для того, что бы указать максимальный размер UDP пакета, который может быть отправлен внутри вашей локальной сети и наружу. Если SIP модулю необходимо доставить пакет и протокол не указан явно, то SIP модуль, если размер пакета не превышает заданное ограничение, использует UDP протокол. TCP протокол используется в последнюю очередь.

Клиентские Транзакции

На панели Клиентские Транзакции вы можете указать, каким образом SIP Модуль должен обрабатывать транзакции SIP клиента (UAC). Уровень Журнала Используйте эту настройку для того, что бы указать какую информацию субкомпонент SIP Клиент должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
Записи, помещённые субкомпонентом SIP Клиент в Журнал работы Сервера, имеют пометку SIPC. Ограничение Используйте эти настройки для задания максимального числа одновременно обслуживаемых клиентских транзакций, которые может обрабатывать SIP модуль. Процессоры Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Клиента.

Протокол

Если никакое из этих условий не выполняется, то запрос отвергается с кодом ошибки 401 ("Authentication required").

Посылать через Включите эту опцию если вы хотите ретранслировать все исходящие пакеты через какой-либо внешний SIP сервер. Обратите внимание, что эта настройка не используется в случае адресов, которые были явным образом перенаправлены на внешние хосты с использованием суффикса .via или других методов маршрутизации. Таймер B Эта опция управляет значением "Таймер B" (согласно RFC3261). Она контролирует максимальное время, которое транзакция типа INVITE будет ожидать первого отклика от вызываемой стороны.
Хотя согласно стандарта она должна иметь значение 32 секунды, мы настоятельно рекомендуем понизить её до 5-10 секунд: если удалённый участник никак не отвечает в течении этого времени (не посылая даже отклик типа 100-Trying) то, вероятнее всего, он не функционирует и нет необходимости выжидать все 32 секунды для уведомления инициатора звонка.
Понижение этого значения позволяет транзакции SIP клиента попробовать использовать другую SRV запись (если она есть): если же этот таймер имеет значение 32 секунды, то вызывающий абонент, вероятнее всего, прекратит соединение до попытки использования следующей SRV записи.

Внешние Шлюзы

Возможно, вы захотите использовать Сервер CommuniGate Pro с внешними SIP Шлюзами. Внешние Шлюзы могут использоваться для ретранслирования звонков в телефонную сеть общего пользования (ТфОП) и для ретранслирования звонков из ТфОП на ваш Сервер. Эти услуги обычно предоставляются за плату и осуществление коммуникации с Внешними Шлюзами может требовать проведения аутентификации.
Вы также можете использовать Внешние Шлюзы если вам необходимо осуществлять коммуникацию с удалёнными SIP сетями, используя аутентификацию.

Обратите внимание: если вы используете собственный внутрифирменный шлюз в ТфОП, то обычно он настраивается на приём всех звонков из вашей локальной сети (так что ваш Сервер не должен использовать Аутентификацию для ретранслирования Сигналов на этот шлюз) и этот шлюз может быть настроен на направление входящих соединений на какого-либо Пользователя Сервера CommuniGate Pro (так что вам не надо регистрировать ваш Сервер на этом шлюзе). В таком случае вы можете задействовать шлюз в ТфОП не использую возможностей Внешних Шлюзов.

Для того, что бы создать новый Внешний Шлюз, введите его Имя в последнем пустом элементе таблицы и нажмите кнопку Модифицировать.

Для того, что бы удалить Внешний Шлюз, введите пустую строку в поле с его названием и нажмите кнопку Модифицировать.

Для того, что бы отправлять запросы с Сигналами на Внешний Шлюз, вам нужно задать записи в Маршрутизаторе.

Пример 1. Все звонки на 1number@main_domain должны перенаправляться на Шлюз Provider1 как запросы на вызов number
Все звонки на +1number@main_domain должны перенаправляться на Шлюз Provider1 как запросы на вызов number
все звонки на +number@main_domain (где number не начинается с 1) должны перенаправляться на Шлюз IntlProvider как запросы на вызов 011number
все звонки на 011number@main_domain должны перенаправляться на Шлюз IntlProvider как запросы на вызов 011number
все звонки на 9number@main_domain должны перенаправляться на Шлюз LocProvider1 как запросы на вызов 415number

Используйте следующие записи Маршрутизаторе:

Обратите внимание: вы должны использовать префикс NoRelay: для того что бы избежать превращения вашего Сервера в открытый релей, который позволяет любым внешним пользователям ретранслировать звонки на Внешние Шлюзы, используя полномочия вашего Сервера.

Поддержка Продуктов Microsoft® Windows

Windows Messenger поддерживается начиная с версии 5.0.

В SIP модуле CommuniGate Pro опция "Объявлять 'NTLM'-Аутентификацию" должна быть включена.

Поддержка работы Устройств SIP и Компенсации

Во многих из имеющихся в настоящее время SIP устройств и SIP приложений неверно реализованы различные аспекты SIP протокола.
SIP Модуль CommuniGate Pro пытается скомпенсировать некоторые из таких недоработок и ошибок, основываясь на типе соединённого с ним SIP устройства.

Для того, что бы настроить Компенсации SIP, используйте Веб Интерфейс Администратора. Откройте в области Установки страницу Real-Time, затем откройте страницу SIP. Нажмите на ссылку Компенсации. Появится таблица Компенсации:

Для того, что бы задать компенсации для конкретных продуктов, введите имя продукта в последний пустой элемент Таблицы, выберите требуемые компенсации и нажмите на кнопку Модифицировать.

Для того, что бы удалить конкретный продукт, удалите его имя из таблицы и нажмите на кнопку Модифицировать.

Подобные таблицы существуют для удалённых сайтов:

Когда SIP Модуль должен ретранслировать запрос с Сигналом удалённому адресату, он применяет методы компенсации, заданные для URI домена из запроса наряду с методами, заданными для URI домена - получателя.

На этом Веб Сайте находится периодически обновляемый документ, в которым перечислены протестированные SIP клиенты, обнаруженные проблемы и известные способы их решения.

Маршрутизация

SIP модуль сразу же (при первом вызове Маршрутизатора) принимает все адреса сигналов с IP адресами вместо доменов, то есть с именами домена типа [xx.yy.zz.tt]. Пожалуйста, обратите внимание, что Маршрутизатор добавляет квадратные скобки к IP тех адресов имён домена, которые не имеют их, а так же изменяет IP адреса локальных доменов на их имена. Маршрутизатор выполняет эти операции до вызова модулей.

SIP модуль сразу же принимает все адреса сигналов с именами доменов, оканчивающимися на суффикс .sipgw. Остальные имена доменов должны указывать имя Внешнего Шлюза и тогда Сигналы будут направляться на этот Внешний Шлюз.

В финальном вызове, SIP модуль принимает сигналы для любого домена, если в имени этого домена содержится как минимум один символ точка (.). Если выбрана опция Посылать через, то все эти адреса перенаправляются на заданный в этой опции домен.

До принятия адреса SIP модуль проверяет, не содержит ли адрес вместо символа @ один или несколько символов %. В этом случае меняется самый правый символ % изменяется на символ @.

Если имя домена назначения содержит суффикс .udp, .tcp или .tls, то используется соответствующий транспортный протокол, а сам суффикс удаляется из имени этого домена.

Мониторинг Активности SIP

В SIP Модуле CommuniGate Pro реализован протокол SIP, работающий в сетях IP.

Модуль используется для приёма Запросов с Сигналами от удалённых участников и отправки Сигналов удалённым участникам.

SIP протокол не включает в себя протоколы, необходимые для фактической передачи данных (протоколы передачи медиа). Вместо этого протокол SIP позволяет всем участвующим сторонам находить друг друга в сети, договариваться об использовании протоколов передачи медиа и о параметрах этих протоколов, устанавливать интерактивные сессии реального времени и управлять этими сессиями: добавлять новых участников, закрывать сессии, изменять параметры сессии и т.д.

Протокол Установления Сессии (SIP)

Модуль SIP разбирает все получаемые SIP пакеты и использует субкомпоненты модуля для обработки разобранных пакетов. Пакеты с Запросами передаются в субкомпонент SIP Сервер, новой или существующей транзакции SIP Сервера.
Компонент SIP Сервер использует Модуль Signal для обработки запроса. Ответы, сгенерированные модулем Signal, поступают в транзакцию SIP Сервера и SIP Сервер отправляет их обратно источнику SIP запроса.

Модуль Signal может отправлять Запросы на удалённое SIP устройство или на удалённый SIP Сервер. Модуль использует субкомпонент SIP Клиент для создания транзакции SIP Клиента. Эта транзакция используется для отправки SIP Запроса через Интернет протокол и обработки посланного обратно Ответа.

  • если не может быть найдено никакой транзакции для пакета с Ответом, то пакет ретранслируется "вверх" инициатору звонка SIP Модулем самостоятельно, без использования модуля Signal.
  • если не может быть найдено никакой транзакции Сервера для Запроса ACK, то для дальнейшего ретранслирования от инициатора звонка "вниз" создаётся транзакция SIP Клиента.

Модуль SIP CommuniGate Pro поддерживает коммуникации через UDP и TCP, а также безопасные (TLS) коммуникации через протокол TCP.

SIP модуль CommuniGate Pro поддерживает технологию прохождения ближнего и дальнего NAT, что делает возможным осуществление SIP коммуникаций как для больших корпораций со множеством внутренних локальных сетей, так и для домашних пользователей, выходящих в Интернет через "простые" NAT устройства.

Схема установления сессии, описанная выше, работает корректно только если обе стороны осуществляют коммуникацию напрямую. Если между сторонами имеется межсетевой экран или NAT устройство, то прямое взаимодействие между ними невозможно. В этом случае, SIP модуль CommuniGate Pro осуществляет медиа проксирование, ретранслируя не только запросы и ответы протокола SIP, но также и медиа данные.

Настройки транспорта SIP

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Транспорт и откройте страницу с настройками Транспорта SIP.

Транспорт

На панели Транспортный Уровень вы можете настроить опции уровня сети для приёма SIP пакетов: Уровень Журнала Используйте эту настройку для указания, какую информацию о SIP пакетах и транспортном уровне SIP модуль должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
В случае, если в работе SIP модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Журнал работы Сервера будут записываться содержимое пакетов и другие подробности. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.
Записи транспортного уровня модуля SIP в Журнале работы Сервера имеют пометку SIPDATA.
Общие SIP записи имеют пометку SIP. Полные пакеты запросов в звонках Когда эта настройка включена, то все запросы и ответы, относящиеся к звонкам (INVITE, BYE и так далее) пишутся в Журнал полностью, как если бы Уровень Журнала был установлен в значение Всё. UDP Для того, чтобы настроить транспортный уровень UDP, нажмите на ссылку UDP Приёмник. Откроется страница UDP Приёмника. По умолчанию, номер порта SIP UDP имеет значение 5060. TCP Для того, чтобы настроить транспортный уровень TCP, нажмите на ссылку TCP Приёмник. Откроется страница TCP Приёмника. Вы можете задать как безопасные, так и незащищённые порты TCP. По умолчанию, незащищённый номер порта SIP TCP имеет значение 5060, а безопасный SIP TLS порт - 5061. Каналы Используйте эту опцию для указания максимального числа коммуникационных каналов TCP, которые может открывать модуль. При превышении этого числа, модуль будет отвергать все новые входящие TCP соединения. Тайм-аут по неактивности Используйте эту опцию для того, чтобы указать, когда SIP модуль должен закрывать коммуникационный канал TCP при отсутствии активности в этом канале. Это помогает сэкономить ресурсы, используемые для обслуживания коммуникационных каналов TCP на сильно загруженных серверах. С другой стороны, некоторые SIP клиенты могут работать неправильно в случае, если сервер закрывает TCP соединение по тайм-ауту. Предварительные Обработчики Если эта опция установлена в ненулевое значение, то получаемые пакеты не будут обрабатываться немедленно: они помещаются в специальную очередь и получающая нить немедленно становится готовой для получения новых пакетов. Эта опция задаёт число дополнительных нитей, который берут пакеты из очереди и обрабатывают их, отправляя из в SIP транзакции Сервер или Клиент. Ограничение на ждущих Обработки Если пакеты не обрабатываются немедленно, а помещаются сначала в специальную очередь (смотрите выше), то эта опция ограничивает размер этой очереди. При достижении числа пакетов в очереди заданного лимита, новые пакеты игнорируются. В этой ситуации, возможно, вам потребуется увеличить число Предварительных Обработчиков. Использовать короткие имена полей Если эта опция включена, то все SIP пакеты (запросы клиента и ответы сервера) Сервер будет генерировать с использованием альтернативных (односимвольных) имён полей заголовка пакета. Возможно вы захотите включить эту опцию для уменьшения размера пакетов. Ограничение размера Запросов для UDP Используйте эту опцию для того, чтобы указать максимальный размер UDP пакета, который может быть отправлен внутри вашей локальной сети и наружу. Если SIP модулю необходимо доставить пакет и протокол не указан явно, то SIP модуль, если размер пакета не превышает заданное ограничение, использует UDP протокол. TCP протокол используется в последнюю очередь. UDP TOS Тэг Используйте эту настройку для указания Тэга TOS для всех исходящих SIP UDP пакетов. Этот тэг может использоваться для задания приоритета SIP трафика в вашей локальной сети.

Настройки SIP Сервера

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Приём и откройте страницу с настройками SIP Сервера (UAS).

Серверные Транзакции

На панели Серверные Транзакции вы можете указать каким образом SIP Модуль должен обрабатывать транзакции SIP сервера (UAS).

Уровень Журнала Используйте эту настройку для того, чтобы указать какую информацию субкомпонент SIP Сервер должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
Записи, помещённые субкомпонентом SIP Сервер в Журнал работы Сервера, имеют пометку SIPS. Процессоры Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Сервера. Ограничение на Объекты Используйте эти настройки для задания максимального числа одновременно обслуживаемых серверных транзакций, которые может обрабатывать SIP модуль. При достижении этого числа, входящие SIP пакеты с новыми запросами будут игнорироваться. Ограничение на События Используйте эту настройку для задания максимального числа необработанных событий, отправленных во все активные SIP транзакции сервера. При достижении этого числа, компонент SIP Сервер входит в режим перегрузки: никакие новые SIP транзакции не создаются и все входящие SIP пакеты с новыми запросами будут игнорироваться.

Протокол

В компоненте сервер SIP Модуля реализована Аутентификация Запросов для удалённых клиентов. Если внутренний компонент Сервер отвергает Запрос по причине отсутствия данных аутентификации, то Модуль добавляет специальные поля в отправляемый ответ, помогающие проведению аутентификации.

Объявлять 'Digest'-Аутентификацию Выберите эту опцию для информирования SIP клиентов о поддержке стандартного метода аутентификации DIGEST. Объявлять 'NTLM'-Аутентификацию Выберите эту опцию для информирования SIP клиентов о поддержке нестандартного метода аутентификации NTLM.

Имя пользователя, указанное в данных аутентификации, обрабатывается через компонент Маршрутизатор, так что в именах аутентификации могут использоваться Псевдонимы Пользователя, Переадресаторы и Псевдонимы Домена.
У указанного Пользователя и в его Домене Услуга SIP должна быть включена.

Для SIP аутентификации могут использоваться любые пароли Пользователей CommuniGate Pro.

Если для указанного Пользователя опция Пароль включена, то SIP модуль проверяет, задана ли для этого Пользователя настройка SIPPassword. Если она задана, то она будет использоваться вместо стандартной настройки Пароль. Это возможность позволяет Администратору устанавливать Пользователю дополнительный пароль, который будет использоваться только при проведении SIP аутентификации.

Посылать '100 Trying' для не-INVITE запросов Если эта опция включена и клиент перепосылает запрос, то SIP Модуль отправляет отклик 100 ("Trying") даже в том случае, если INVITE не был методом запроса. Всегда Посылать '100 Trying' для INVITE запросов Если эта опция включена, то SIP модуль всегда отправляет отклик ответ ("Trying") до начала обработки запроса INVITE.

Защита

  • Пакеты UDP и запросы на соединение TCP с сетевых адресов IP, включённых в список Запрещённые Адреса IP, полностью игнорируются.
  • Когда количество неправильно сформированных пакетов SIP, полученных от некоторого сетевого адреса IP, превышает некоторый предел за установленное время, этот адрес помещается во Временно Блокированные Адреса.
  • Когда запрос SIP отвергается из-за ошибки аутентификации, ответ отправляется после некоторой задержки, а адрес помещается во Временно Блокированные Адреса - если частота таких ошибок превышает установленный предел.
  • Когда запрос SIP приходит с сетевого адреса IP, включённого в список Временно Блокированные Адреса, он полностью игнорируется.

Настройки SIP Клиента

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Передача и откройте страницу с настройками SIP Клиента (UAC).

Клиентские Транзакции

На панели Клиентские Транзакции вы можете указать, каким образом SIP Модуль должен обрабатывать транзакции SIP клиента (UAC). Уровень Журнала Используйте эту настройку для того, чтобы указать какую информацию субкомпонент SIP Клиент должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и нефатальные ошибки).
Записи, помещённые субкомпонентом SIP Клиент в Журнал работы Сервера, имеют пометку SIPC. Процессоры Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Клиента. Ограничение на Объекты Используйте эти настройки для задания максимального числа одновременно обслуживаемых клиентских транзакций, которые может обрабатывать SIP Модуль. Ограничение на События Используйте эту настройку для задания максимального числа необработанных событий, отправленных во все активные SIP транзакции клиента. При достижении этого числа, компонент SIP Клиент входит в режим перегрузки и никакие новые SIP транзакции клиента не могут быть созданы.

Протокол

Если никакое из этих условий не выполняется, то запрос отвергается с кодом ошибки 401 ("Authentication required").

Посылать через Включите эту опцию если вы хотите ретранслировать все исходящие пакеты через какой-либо внешний SIP сервер. Обратите внимание, что эта настройка не используется в случае адресов, которые были явным образом перенаправлены на внешние хосты с использованием суффикса ._via или других методов маршрутизации. Таймер B Эта опция управляет значением "Таймер B" (согласно RFC3261). Она контролирует максимальное время, которое транзакция типа INVITE будет ожидать первого ответа от вызываемой стороны.
Хотя согласно стандарту она должна иметь значение 32 секунды, мы настоятельно рекомендуем понизить её до 5-10 секунд: если удалённый участник никак не отвечает в течении этого времени (не посылая даже ответ типа 100-Trying) то, вероятнее всего, он не функционирует и нет необходимости выжидать все 32 секунды для уведомления инициатора звонка.
Понижение этого значения позволяет транзакции SIP клиента попробовать использовать другую SRV запись (если она есть): если же этот таймер имеет значение 32 секунды, то вызывающий абонент, вероятнее всего, прекратит соединение до попытки использования следующей SRV записи. 487-Wait Таймер Когда транзакция SIP прерывается клиентом, то создаётся и отправляется запрос CANCEL. Эта настройка указывает, как долго должен Модуль ожидать ответа 487 для фактического завершения транзакции.
Если такого ответа не будет, Модуль создаст его самостоятельно. Посылать P-Asserted-Identity Если эта опция включена и отправитель запроса был аутентифицирован, то в SIP запрос добавляется поле P-Asserted-Identity. Поле содержит SIP URI с полным именем аутентифицированного Пользователя (accountName@domainName).

Поддержка Продуктов Microsoft® Windows

Windows Messenger поддерживается, начиная с версии 5.0.

В SIP модуле CommuniGate Pro опция "Объявлять 'NTLM'-Аутентификацию" должна быть включена.

Поддержка работы Устройств SIP и Компенсации

Во многих из имеющихся в настоящее время SIP устройств и SIP приложений неверно реализованы различные аспекты SIP протокола.
SIP Модуль CommuniGate Pro пытается скомпенсировать некоторые из таких недоработок и ошибок, основываясь на типе соединённого с ним SIP устройства.

Для того, чтобы настроить Компенсации SIP, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP. Нажмите на ссылку Компенсации. Появится таблица Компенсации:

Для того, чтобы задать компенсации для конкретных продуктов, введите имя продукта в последний пустой элемент Таблицы, выберите требуемые компенсации и нажмите на кнопку Модифицировать.

Для того, чтобы удалить конкретный продукт, удалите его имя из таблицы и нажмите на кнопку Модифицировать.

Подобная таблица реализована и для удалённых сайтов:

Когда SIP Модуль должен ретранслировать запрос с Сигналом удалённому адресату, он применяет методы компенсации, заданные для URI домена из запроса наряду с методами, заданными для URI домена - получателя.

На этом Веб Сайте находится периодически обновляемый документ, в которым перечислены протестированные SIP клиенты, обнаруженные проблемы и известные способы их решения.

Маршрутизация

SIP модуль сразу же (при первом вызове Маршрутизатора) принимает все адреса сигналов с IP адресами вместо доменов, то есть с именами домена типа [xx.yy.zz.tt]. Пожалуйста, обратите внимание, что Маршрутизатор добавляет квадратные скобки к IP тех адресов имён домена, которые не имеют их, а также изменяет IP адреса локальных доменов на их имена. Маршрутизатор выполняет эти операции до вызова модулей.

В финальном вызове, SIP модуль принимает сигналы для любого домена, если в имени этого домена содержится как минимум один символ точка (.). Если выбрана опция Посылать через, то все эти адреса перенаправляются на заданный в этой опции домен.

До принятия адреса SIP модуль проверяет, не содержит ли адрес вместо символа @ один или несколько символов %. В этом случае меняется самый правый символ % изменяется на символ @.

Если имя домена назначения содержит суффикс ._udp, ._tcp или ._tls, то используется соответствующий транспортный протокол, а сам суффикс удаляется из имени этого домена.

Мониторинг Активности SIP

Flexisip server является продуктом компании Belledonne Communications, известной своими открытыми проектами для VoIP-телефонии. Flexisip представляет собой решение, позволяющее развернуть полноценный SIP-сервер, обладающей простотой управления, конфигурирования, масштабирования и достаточной гибкостью для адаптации под различные задачи на слабом железе. Сервер Flexisip помимо основных возможностей SIP-телефонии может быть использован в качестве SIP-прокси сервера, сервера Push-уведомлений (для использования с […]

SIP-сервер FlexiSIP

Flexisip server является продуктом компании Belledonne Communications, известной своими открытыми проектами для VoIP-телефонии. Flexisip представляет собой решение, позволяющее развернуть полноценный SIP-сервер, обладающей простотой управления, конфигурирования, масштабирования и достаточной гибкостью для адаптации под различные задачи на слабом железе. Сервер Flexisip помимо основных возможностей SIP-телефонии может быть использован в качестве SIP-прокси сервера, сервера Push-уведомлений (для использования с мобильными устройствами), а так же как облачная платформа для взаимодействия SIP-устройств.

Перечень достоинств

Проект Flexisip написан на С++ и успешно используется в качестве SIP-сервера в проекте Linphone c 2011 года. Благодаря своей легковесности и лояльности к аппаратным ресурсам Листинг конфигурации Flexisip может быть развернут на встроенных системах, небольших аппаратных модулях, виртуальных и облачных платформах. Помимо небольших платформ, Flexisip поддерживает возможность кластеризации (используется бекенд Redis для синхронизации нод) и множественного масштабирования. Таким образом, Flexisip представляет собой весьма гибкий и универсальный продукт для различного рода задач.

Перечислим достоинства системы Flexisip:

  • легковесность и нетребовательность к аппаратным ресурсам;
  • простота установки и конфигурирования;
  • модульность, возможность размещения модулей на различных физических серверах;
  • возможность использования в качестве сервера push-уведомлений;
  • аутентификация абонентов по хеш-сумме или TLS-сертификатам;
  • возможность кластеризации и масштабирования встроенными средствами.

Структура сервера Flexisip

Flexisip разработан на основе концепции модулей, отвечающих за определенную функцию приложения: аутентификацию, регистрацию, медиа-ретрансляцию, маршрутизацию и т.д. Все запросы и ответы проходят через цепочку модулей для обработки. Модули выполняются на трех отдельных бекендах, объеденных в АТС Flexisip: сервер присутствия, сервер конференций и SIP-прокси сервер.Обработка базовой сигнализаций SIP в системе Flexisip, основана на использовании открытой библиотеки Sofia-SIP.

В список модулей входят следующие компоненты:


Структура системы Flexisip

SIP-proxy сервер

Сервер присутствия

Одним из компонентов системы Flexisip является сервер присутствия (Flexisip Presence). Общее поведение этого сервера довольно простое: он обрабатывает запросы от абонентов, которые хотят получать информацию о присутствии для отдельного URI контакта или списка URI-адресов. Сервер присутствия опрашивает целевые URI, для которых запрашивается информация и и генерирует запрос SIP NOTIFY, содержащим информацию о присутствии искомого URI.

Информация о присутствии может быть получена из двух разных источников:

  • Из запросов, которые напрямую публикуются всеми абонентами. Абоненты опубликовывают информацию о своем присутствии на регулярной основе. Полученная таким образом информация о присутствии называется «краткосрочным присутствием».
  • Из базы данных аутентификации Flexisip. Поскольку эта база данных содержит список активных пользователей SIP, она позволяет распространять клиентам информацию о других пользователях в долгосрочной перспективе. Независимо от того, активно ли пользователи используют свое приложение SIP, это дает полезную информацию об их достижимости. Эта информация о присутствии называется «долгосрочным присутствием».

Прежде чем SIP SUBSCRIBE достигает сервера присутствия, он проходит через SIP-прокси, который может аутентифицировать или отклонить запрос. Однако, чтобы обеспечить защиту конфиденциальности пользователей, сервер присутствия ограничивает распространение информации о присутствии пользователям, которые подписаны друг на друга.

Рассмотрим конкретный пример:

  1. A подписывается на присутствие B, но B не подписывается на присутствие A. Тогда A не получит никакой информации о присутствии B.
  2. B решает подписаться на информацию о присутствии для A. A и B теперь взаимно подписываются на присутствие друг друга, и сервер присутствия уведомляет о присутствии B о A, а также о присутствии A B.

Это правило работает как для долгосрочного, так и для краткосрочного присутствия.

Сервер конференций

Сервер конференций Flexisip работает как пользовательский агент SIP для создания и обработки конференций. В настоящее время он поддерживает только IM-конференции (текстовый групповой чат). Тем не менее, поскольку создание и управление конференциями в рамках SIP не зависит от передаваемого по RTP медиа-потока, разработчиками Flexisip планируется расширить его для поддержки всех видов конференций, включая аудио, видео, текст, независимо или совместно.

С системной точки зрения сервер конференций работает как демон в своем собственном процессе и, не влияет на другие бэкенды Flexisip. Его можно запустить, остановить, перезапустить, используя обычные команды systemd, например:

Запуск сервера осуществляется командой:

Конфигурация сервера конференции по умолчанию хранится в файле /etc/flexisip/flexisip.conf, в разделе [conference-server].

Серверу конференций требуется постоянная связь с базой данных сервера присутствия Flexisip. Это необходимо для реализации следующих механизмов:

  • создание новых конференций и разрешение маршрутизации по URI-адресам внутри конференций;
  • отслеживание активных абонентов в уже созданных конференциях и создание динамической SIP-маршрутизации.

Поскольку IM-конференции (групповые чаты) могут длиться годами, требуется постоянное хранилище для хранения состояния конференций (участники, устройства, URI конференций). Этим хранилищем выступает база данных сервера присутствия.

Сервер Push-уведомлений

Сервер Push-уведомлений (push-шлюз) это дополнительная надстройка над SIP-прокси сервером, которая отвечает за маршрутизацию INVITE-запросов заинтересованным абонентам и рассылает им push-уведомления о входящих звонках. Абонентами сервера push-уведомлений являются мобильные клиенты (софтфоны, установленные на мобильные устройства), для которых push-уведомления являются механизмом перевода устройства из режима экономии батареи в активный режим. В работу данного сервера не входит аутентификация пользователей, этой задачей занимается непосредственно сам SIP-прокси.

Как только запрос REGISTER поступает в push-шлюз, он пересылается на SIP-прокси сервер путем разрешения доменного имени URI запроса. Перед пересылкой push-шлюз заменяет домен контактного URI своим собственным IP-адресом и заменяет все параметры URI уникальным параметром CtRt <random_key>, содержащим имя домена, в котором расположен сервер. Случайный ключ генерируется при запуске Flexisip и не изменяется в течение установленной сессии между push-шлюзом и sip-прокси. В этот момент оригинальный URI абонента сохраняется в кеше, пока sip-прокси сервер не отправит ответ на запрос REGISTER.

Затем sip-прокси получает запрос REGISTER, поступающий от push-шлюза. Он выполняет регистрацию, связывая идентификатор SIP с маскируемым URI абонента. Таким образом, когда sip-прокси получает запросы INVITE, адресованные этому идентификатору SIP, он перенаправляет их на push-шлюз.

Как только регистрация завершена, sip-прокси отправит ответ “200 OK” на push-шлюз. При получении этого ответа push-шлюз обновляет свою базу данных регистрации, связывая идентификатор SIP абонента с URI контакта с информацией push-уведомления, которую он сохранил ранее. Затем он передает ответ “200 OK” пользовательскому агенту, чтобы уведомить его об успешной регистрации.


Схема работы сервера push-уведомлений

Режим push-шлюза flexisip работает при условии, что внутренний SIP-сервер удовлетворяет некоторым требованиям:

Установка сервера Flexisip

Установка сервера Flexisip возможна двумя методами: сборка из исходных кодов, либо через менеджер пакетов, подключая дополнительные репозитории. Рассмотрим оба метода:

Установка из репозиториев. Для Centos 7 подключаем репозиторий epel-release:

затем добавляем конфигурацию репозитория Belledonne Communications в файл /etc/yum.repos.d/BelledonneCom.repo

Обновляем список пакетов:

Сборка из исходных кодов. Для успешной установки сервера Flexisip необходимо наличие в системе следующих зависимостей:

  • sofia-sip
  • ortp
  • bctoolbox
  • hiredis (опционально)

Произведем установку зависимостей:

После установки зависимостей копируем исходники из git:

Производим компиляцию исходных кодов:

После установки сервера выполним его первичную конфигурацию:

  • proxy: запуск Flexisip в качестве SIP-прокси (поведение по умолчанию).
  • presence: запустить Flexisip в качестве сервера присутствия.
  • conference: запустить Flexisip в качестве сервера конференции (групповой чат).

Конфигурация сервера Flexisip


Файл конфигурации /etc/flexisip/flexisip.conf

Интерфейсы и порт, который прослушивает Flexisip, задаются в разделе [global] для прокси-сервера и в разделах, специфичных для других серверов.

Модуль [module :: Authentication] используется для настройки параметров аутентификации. Здесь можно разграничить подключения из разных доменов, настроить проверку подлинности пользователя по хеш-сумме либо TLS-сертификатам, также указать путь к базе данных абонентов.


База данных аутентификации пользователей

Сервер Flexisip также позволяет производить конфигурирование в режиме реального времени. Для этого используется вспомогательный скрипт /opt/belledonne-communications/bin/flexisip_cli.py. Он может принимать следующие параметры:


Листинг конфигурации Flexisip

Читайте также:

[module name="footer"]