Forcerport asterisk что это

NAT, SIP и Asterisk

нет звука, нет звука в одну сторону, нет слышимости

Если у вас нет звука, нет звука в одну сторону, нет слышимости, прочтите внимательно эту инструкцию.

Reinvite

Клиент за NAT

Начиная с версии Asterisk 11: ‘nat=yes’ устарело, используйте ‘nat=force_rport,comedia’
nat=force_rport,comedia

SIP клиенты и Asterisk за NAT

Чтобы избежать потери звука запретите re-invite в файле sip.conf

Опция canreinvite устарела. Используйте ‘directmedia’.

    По умолчанию задан диапазон от 10000 до 20000. Измените диапазон в соответсвии с вашими потребностями (по два порта на каждый конкурирующий вызов).

    Основные параметры конфигурации NAT для Asterisk

    Поддержка NAT в Asterisk 12

    параметр ‘localnet’ список сетевых адресов, которые считаются «внутренними».

    externaddr
    externhost

    «externhost = hostname[:port]» то же что и «externaddr» только это ‘hostname’ обновляемое через «externrefresh» секунд (по умолчанию 10сек.).

    настройки могут совмещаться:

    Установка force_rport принуждает Asterisk всегда передавать ответы обратно на адрес / порт, с которых он получил запросы, даже если другая сторона не поддерживает добавления параметра ‘rport’.

    media_address
    icesupport
    directmedia

    rtp.conf

    В Asterisk начиная с версии 11 появилась поддержка stun. icesupport должно быть включено.

    Отключение SIP ALG на роутерах

    Если вы хотите что бы SIP телефония работала корректно, при условии что ваш сервер с астериск находится за NATом, вам необходимо выполнить следующие на своем роутере:

    В качестве dst.address должен быть указан ip астериска, а в качестве dst.port аналогичные порты из пункта выше.

    Если после этого вы испытываете проблемы с SIP регистрацией и прочим, то необходимо проверить наличие на вашем роутере SIP ALG и отключить его.

    Так как определенные модели роутеров и сетевых экранов имеют встроенную технологию передачи SIP протокола (прозрачное изменение SIP сообщений), которые призваны упростить работу с NAT, то использование стандартного порта 5060 при такой конфигурации будет не упрощать работу, а наоборот, усложнять, т.к. нужно использовать либо проброс, либо sip alg.

    Источник

    Asterisk и NAT

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

    Однако, прежде всего, хотелось бы обратить Ваше внимание на файл sip.conf по умолчанию (сразу после установки asterisk). В этом файле очень подробно описаны все параметры (в том числе и относящиеся к NAT), поэтому при возникновении вопросов или проблем в первую очередь рекомендуем обратиться к дефолтному sip.conf.

    Типовые конфигурации NAT для asterisk и клиентов

    Asterisk имеет внешний IP, клиенты имеют внешние IP
    (NAT отсутствует)

    В данном случае нет необходимости производить какие-либо настройки NAT, поскольку трансляции адресов не осуществляется.

    Asterisk имеет внешний IP, клиенты за NAT

    В первую очередь необходимо обеспечить доступ к asterisk со стороны клиента:

    Asterisk за NAT, клиенты имеют внешние IP

    Asterisk за NAT, клиенты за NAT (за разными NAT)

    Параметры asterisk и SIP клиента

    Прописываем STUN сервер у SIP клиента

    Это необходимо для того, чтобы как asterisk, так и сам клиент могли определить внешний IP адрес клиента. Для этого в SIP клиенте достатоно прописать STUN сервер. По умолчанию для протокола STUN используется UDP порт 3478 (если необходимо задавать порт для STUN сервера, используйте этот порт). Во многих SIP клиентах настройка STUN сервера может задаваться не в самих параметрах SIP аккаунта, а в глобальных настройках программы
    Примеры STUN серверов (можно прописать любой из них):
    stun.ekiga.net
    stun.3cx.com
    stun.ideasip.com
    stun.iptel.org
    stun.rixtelecom.se
    stunserver.org
    stun.softjoys.com
    stun.voipbuster.com
    stun.voipstunt.com
    stun.voxgratia.org
    Проверить STUN сервер на работоспособность, и получить информацию о NAT можно с помощью утилиты client: http://prdownloads.sourceforge.net/stun/client.exe?download. Описание ее можно найти здесь: http://www.interface.ru/home.asp?artId=22409

    Осуществляем проброс портов к asterisk с внешнего IP адреса

    Указываем в конфигурации asterisk внешний IP и порт

    На удивление, тут все достаточно просто (во всяком случае, что касается asterisk версии 11.4): в sip.conf прописать несколько параметров в секции general:

    Указываем внешний реальный ip адрес сервера asterisk. Если порт, открытый в интернет, не совпадает с внутренним портом астериска, не забываем указать его:
    externip=1.2.3.4
    или
    externip=1.2.3.4:50666

    Разумеется, после создания/изменения подобных параметров в sip.conf может оказаться недостаточным сделать команду sip reload или даже reload. Может потребоваться перезагрузка самого сервиса asterisk:
    service asterisk restart

    Указываем в конфигурации asterisk диапазоны локальной сети

    Для этого в sip.conf в секции general прописываем диапазоны локальных IP адресов. Обратите внимание: если у Вас подключены SIP провайдеры не через интернет, а по отдельным линиям связи, то подсети этих провайдеров тоже нужно указать как локальные сети:
    localnet=192.168.0.0/24 ; локальная подсеть
    localnet=192.168.5.0/24 ; локальная подсеть SIP провайдера 1
    localnet=192.168.100.0/24 ; локальная подсеть SIP провайдера 2

    Разумеется, после создания/изменения подобных параметров в sip.conf может оказаться недостаточным сделать команду sip reload или даже reload. Может потребоваться перезагрузка самого сервиса asterisk:
    service asterisk restart

    Запрещаем прямые соединения клиентов, разрешаем только через asterisk

    Прописываем в sip.conf, в секции general опцию:
    directmedia=no
    В старых версиях asterisk (до версии 1.6.2) для этого необходимо было использовать опцию canreinvite, для запрещения повторной отправки пакетов INVITE. В более новых версиях эта опция была переименована.

    Поддерживаем соединение со стороны asterisk

    Необходима поддержка двух видов соединений: для SIP и для RTP. Параметры для обоих протоколов можно указать как для всех клиентов (в этом случае параметр прописывается в sip.conf в секции general), так и для конкретного клиента (в этом случае параметр прописывается в sip.conf в настройках конкретного клиента).

    Для протокола RTP:
    rtpkeepalive=YYY
    Вместо YYY нужно указать число, в этом случае asterisk будет посылать RTP пакет клиенту каждые YYY секунд, по умолчанию этот параметр равен 0 (то есть выключен).

    Указываем, что клиент за NAT

    Для этого в файле sip.conf, в параметрах клиента задаем опцию:
    nat=force_rport,comedia

    В старых версиях asterisk указываем
    nat=yes

    Источник

    NAT, SIP и Asterisk

    Трансляция сетевых адресов (NAT) является обычной практикой в сети и нередко мешает прохождению голосовых пакетов (нет звука) и инициализации соединений (нет соединения). Решение этой проблемы требует понимания принципов работы NAT и VoIP. В этой статье рассматривается протокол SIP и Asterisk, но проблемы и решения применимы и к большинству других приложений и протоколов.

    Reinvite

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это

    Клиент за NAT

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это

    [sip_phone]
    nat=yes
    qualify=300 ; проверять соединение каждые 300 мс.

    nat=force_rport,comedia

    При такой конфигурации Asterisk использует внешний IP адрес externip для вызовов клиентов с параметром nat=yes. Дополнительно параметр qualify=yes поддерживает соединение, не позволяя удалять запись из таблицы трансляций.

    SIP клиенты и Asterisk за NAT

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это
    Все усложняется если и Asterisk, и клиенты, находятся за NAT. Клиенты с внешней стороны не смогут получать SIP сообщения и принимать звонки. Или в SIP сообщении будет указан локальный IP адрес телефона, что приведет к потере звука.
    Чтобы избежать потери звука запретите re-invite в файле sip.conf

    Опция canreinvite устарела. Используйте ‘directmedia’.

    Но клиенты находящиеся за NAT, все равно не смогут инициировать соединение с Asterisk и направить голосовые пакеты RTP на требуемый екстеншен. Для того чтобы это работало, надо пробросить требуемые порты через брандмауер на Asterisk. Диапазон RTP портов используемых Asterisk, назначается в файле rtp.conf.

    По умолчанию задан диапазон от 10000 до 20000. Измените диапазон в соответствии с вашими потребностями (3 порта на каждый конкурирующий вызов).
    Для нормальной работы за NAT, потребуется пробросить диапазон RTP портов в соответствии с настройками в файле rtp.conf и порт SIP (обычно 5060). В iptables это будет выглядеть так:

    Где eth0 – внешний интерфейс, а 192.168.1.10 – IP адрес Asterisk.

    Основные параметры конфигурации NAT для Asterisk

    localnet

    Параметр ‘localnet’ список сетевых адресов, которые считаются «внутренними».

    externaddr

    Внешний адрес щлюза (маршрутизатора) во внешнюю сеть. «externaddr = hostname[:port]» указывает статический адрес[:port] который будет использован в SIP и SDP сообщениях. Имя хоста (hostname) поднимается каждый раз, когда [пере]загружается sip.conf. Если порт не назначен, используется значение указанное в параметре «udpbindaddr». примеры:

    externhost

    «externhost = hostname[:port]» то же что и «externaddr» только это ‘hostname’ обновляемое через «externrefresh» секунд (по умолчанию 10 сек.).

    В дополнение к вышесказанному Asterisk имеет дополнительный параметр «NAT» для разрешения вопросов, связанных со входящими SIP или медиа сессиями. В частности, в зависимости от настроек ‘NAT=’ как описано ниже, Asterisk может переопределить адрес/порт информацию, указанную в SIP/SDP сообщениях.

    настройки могут совмещаться:

    media_address

    IP адрес используемый для медиа (аудио, видео и текста) в SDP может быть переназначен параметром ‘media_address’. Данный параметр может быть использован только в секции [general].

    icesupport

    ICE/STUN/TURN использование может быть включено глобально или для конкретного пира с помощью ‘icesupport’ опции.

    directmedia

    Для отключения прямых RTP потоков (peer-to-peer) используйте опцию:

    устаревшие настройки sip.conf

    externip= Этот параметр задается в секции [general] файла sip.conf и указывает внешний IP адрес, или имя хоста на вашем устройстве NAT.

    Этот адрес будет использован для общения с устройствами с установленным параметром nat=force_rport.
    localnet = Этот параметр задается в секции [general] файла sip.conf и указывает на локальную сеть и используется для обращения к устройствам с параметром nat=no.

    Возможные значения:
    NAT= yes, no, never, route

    Начиная с версии Asterisk 11: nat=yes is deprecated, use nat=force_rport,comedia instead

    Asterisk будет отправлять голосовые пакеты на порт и IP адрес с которого их получает а не указанные в SIP и SDP сообщениях.
    Это будет работать только, если телефоны за NAT будут использовать для одинаковый порт для голосовых пакетов RTP и одинаковый (но отличный от голосового) для сигнализации RTCP.

    directmedia

    qualify = Эта опция имеет два назначения.Первое – поддерживать запись в таблице трансляций NAT и контролировать регистрацию телефона.
    Возможные значения:

    Этот параметр задает проверку по умолчанию каждые 2 секунды.

    Это выключает проверку.

    ключает проверку через заданное время в 300 ms.

    rtp.conf

    Задает первый порт диапазона для приема и оправки голосовых пакетов RTP.

    Задает последний порт диапазона для приема и оправки голосовых пакетов RTP.

    В Asterisk начиная с версии 11 появилась поддержка stun. icesupport должно быть включено.

    Настройка res_pjsip для работы через NAT

    В данной статье приведены примеры рабочей конфигурации драйвера канала PjSIP, когда Asterisk находится за NAT (Network Address Translation). Asterisk подключается через NAT к провайдеру IP телефонии (ITCP).
    Этот пример подходит для большинства простых сценариев NAT при следующих условиях: Asterisk и телефоны находятся в частной сети. Маршрутизатор имеет локальный и публичный интерфейсы. Маршрутизатор реализует функции Трансляции Сетевых Адресов (NAT) и файерволла. На маршрутизаторе настроен проброс SIP и RTP портов на локальный IP адрес сервера Asterisk. В данном примере проброшены порты 5060 TCP/UDP и UDP 10000-10100 на LAN 10.10.2.10.
    Устройства используемые в примере:

    УстройствоIP адрес в примере
    VOIP телефон (7777)10.10.2.77
    PC/Asterisk10.10.2.10
    МаршрутизаторLAN: 10.10.2.1
    WAN: 123.123.123.123
    ITSP SIP шлюз203.0.113.1(gw1.example.com)
    203.0.113.2(gw2.example.com)

    Для наглядности, в примере использованы фальшивые детали:
    TSP номер аккаунта : 123456789 и DID номер входящий от провайдера IP телефонии (ITSP): 3216111.

    Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.

    Источник

    Asterisk 11 за NAT, нет звука в одну сторону, нет слышимости. Что делать?

    Опубликовано в Asterisk

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это

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

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это

    Когда клиент пытается инициировать сеанс связи, оно отправляет SIP сообщение, содержащее его IP-адрес и некоторую дополнительную информацию. Получив это сообщение, Asterisk использует его, чтобы определить, куда отправить ответ на это сообщение. Поскольку устройство находится за NAT, SIP-сообщение будет иметь серый адрес, например, 192.168.1.104. Тем не менее, мы можем сообщить Asterisk, игнорировать SIP-адрес этого сообщения, а вместо этого использовать то, что поставляется сетевым стеком. Рассмотрим какие опции мы можем использовать в sip.conf для преодоления NAT:

    Стоит заметить что начиная с версии Asterisk 11: nat=yes устарело, и необходимо использовать nat=force_rport,comedia.

    RFC 3581 позволяет одному клиенту использовать параметр rport, для того чтобы передать другому клиенту, что оно должно реагировать на адрес источника IP и порт запрос, а не на IP адрес прописанный в SIP заголовке. Установка параметра rport может произойти, когда устройство знает, что он находиться за NAT и не может записать информацию, которая была бы необходима, для связи в обоих направлениях, в заголовке SIP. Asterisk всегда читает параметр rport, если он передается, но так как это происходит не так часто, как хотелось бы, мы можем заставить Asterisk предположить, что устройство будет передавать параметр rport. Выполняя это, мы заставляем Asterisk всегда отвечать на адрес IP и порт источника сообщения, от которого он получил запрос. Если настройки NAT явно не определены, Asterisk будет выполнять auto_force_rport, в качестве параметра по умолчанию. Вы можете принудительно изменить такое поведение, установив nat=force_rport.

    Во многих реализациях NAT, при не получении пакетов поддержки диалога, может происходить закрытие соединения. В Asterisk для предотвращения этого используется опция qualify=yes, выполняющая отправку OPTIONS серверу каждые 2000 миллисекунд (2 секунды), не давая закрыть сессию NAT устройством. Также можно указать свое время в миллисекундах:

    SIP клиенты и Asterisk за NAT

    Forcerport asterisk что это. Смотреть фото Forcerport asterisk что это. Смотреть картинку Forcerport asterisk что это. Картинка про Forcerport asterisk что это. Фото Forcerport asterisk что это

    Есть два основных варианта, когда Asterisk находится за NAT: externaddr и extern хост.

    Внешний адрес шлюза (маршрутизатора) во внешнюю сеть. «externaddr = hostname[:port]» указывает статический адрес[:port] который будет использован в SIP и SDP сообщениях. Имя хоста (hostname) поднимается каждый раз, когда [пере]загружается sip.conf. Если порт не назначен, используется значение указанное в параметре «udpbindaddr».

    «externhost = hostname[:port]» то же что и «externaddr» только это ‘hostname’ обновляемое через «externrefresh» секунд (по умолчанию 10сек.).

    Параметр ‘localnet’ указывает список сетевых (серых) адресов, согласно RFC1918, которые считаются «внутренними».

    Обработка RTP медиа потоков.

    В том случае когда вы используете внешнего VoIP провайдера, а ваш Asterisk находиться за NAT устройством, необходимо использовать опцию directmedia=no:

    Стоит упомянуть, если ваш провайдер VoIP использует RTP медиа сервер с IP адресом отличным от SIP сервера, а сам Asterisk находиться за NAT, опция directmedia=no может не подойти для вас.

    Asterisk будет всегда использовать симметричный режим RTP, как определено в RFC 4961, это означает то, что Asterisk всегда будет отправлять пакеты из того же порта, и то которого их получил. Значение по умолчанию directmedia=yes, так что если у вас есть конечные точки за NAT, вы должны установить опцию directmedia=no.

    IP адрес используемый для RTP (аудио, видео и текста) в SDP может быть переназначен параметром media_address. Данный параметр может быть использован только в секции [general].

    ICE/STUN/TURN использование может быть включено глобально или для конкретного пира, с помощью icesupport опции, по умолчанию эта опция выключена.

    Источник

    Asterisk 06 Outside Connectivity

    Все подключения наружу и внутрь Asterisk осуществляет используя разные channel types. При этом для Asterisk все они равны, всё зависит лишь от настроек диалплана.

    Trunking

    Для Asterisk можно сказать что trunk это collection of circuits которые обслуживают маршрут. Мы можем создать отдельные транки для подключения к VoIP provider, к внутренним офисам.

    Пример диалплана для выхода наружу

    Критически важно не включать шаблоны доступа наружу в какой-либо Context, который обрабатывает входящие звонки.

    SIP и NAT

    Использование отдельных протоколов и являются причиной основных проблем, особенно это качается случаев, когда телефоны находятся за одним НАТ-ом, а PBX находится за другим.
    Например часто случается следующее:
    Сигнализация обычно разрешается на прохождение через Firewall на обоих концах, а вот RTP Stream может не восприниматься как часть одной и той же SIP Session и может быть блокирована. Как следствие абоненты будут жаловаться, что один другого не слышит.

    Devices behind NAT

    Когда телефон инициирует SIP Session, он высылает Signaling messages на адрес Asterisk.
    Поскольку телефон находится за NAT (т.е. с серым адресом), у SIP message будет reply address также серый адрес.
    Тем не менее мы можем настроить Asterisk игнорировать этот адрес, и вместо него использовать тот что в IP пакете.
    Такую настройку мы можем делать в sip.conf, nat option.

    Существует RFC3581, которая позволяет телефону использовать параметр rport, который сигнализирует другой стороне, что нужно отвечать на source IP and port, вместо того чтобы использовать адрес прописанный в SIP header.
    Asterisk всегда будет реагировать на наличие параметра rport, но мы можем также сделать force_rport.

    Если задать nat=no Asterisk will default to auto_force_rport as the nat parameter setting.

    SIP trunks между двумя Asterisk

    Данная конфигурация позволит соединить два сервера Asterisk, позволяя абонентам каждого из них звонить друг другу.

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    ArgumentDescription
    noPerform no special NAT handling other than what is specified in RFC 3581
    auto_force_rportIf Asterisk can determine that the device is behind NAT, set the force_rport option.
    This is the default.
    force_rportEven if no rport parameter was specified, act as if there had been.