Настройка SIP в Asterisk 13 sip.conf
Файл конфигурации 'sip.conf' отвечает за настройку внутренних и внешних каналов SIP.
Asterisk не делает различий между внутренними и внешними линиями, любой вызов совершается через какой-либо канал.
Конфигурация пиров осуществляется при помощи текстовых блоков, отделенных друг от друга квадратными скобками. Имя в квадратных скобках, как правило совпадает с параметром 'username', но не обязательно.
[имя_пира] type=peer, user или friend параметр1=значение параметр2=значение
Где имя_пира - это произвольное имя SIP устройства, на которое можно ссылаться из других конфигурационных файлов. Параметр type может принимать одно из трех значений: type = value
* peer: SIP пир, который Asterisk может использовать для совершения исходящих вызовов.
* user: SIP пир, для входящих вызовов Asterisk .
* friend: Запись, которая одновременно и user и peer. Этот тип наиболее подходит для телефонов и других устройств. Для SIP пользователей этого типа Asterisk создаст два объекта, один типа peer и один типа user, с одинаковыми именами.
Если клиент типа _peer_ (тип _friends_ включает в себя _peer_) определен с параметром host=dynamic, то он должен зарегистрироваться на Asterisk, для того, чтобы сервер мог найти его (IP адрес или имя хоста), и для того, чтобы сервер знал, что данный клиент доступен для совершения вызовов в его сторону.
Регистрация на сервере ITSP - провайдера VoIP телефонии
В файле конфигурации sip.conf в секции [general] добавьте определение register:
Формат:
register => user [:secret[:authuser]] @host [:port] [/extension]
Пример:
Зарегистрировать 3216111 у sip провайдера, как номер 1234567 на Asterisk.
register => 3216111:userID:PASSWORD@sipppnet.ru/1234567
- user - идентификатор пользователя, используемый для SIP сервера (например, 3216111)
- authuser - не обязательное имя пользователя для авторизации на SIP сервере
- secret - пароль пользователя
- host - имя домена или хоста SIP сервера. Этот SIP сервер должен быть определен в своей секции файла sip.conf, где должны быть заданы его параметры (sipnet.ru).
- port - на какой номер порта посылать запросы на регистрацию на сервере host. По умолчанию - 5060
- /1234567 - номер екстеншена для приема вызовов в Вашем Asterisk. 1234567 - вставляется в SIP заголовок contact, SIP запроса на регистрацию. Этот екстеншен используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону Вашего Asterisk. Смотри примеры, приведенные ниже. По умолчанию, используется контекстный «s».
Вам необходимо регистрироваться, только если:
- Если должна быть возможность позвонить к Вам.
- Если одна из сторон имеет динамический IP адрес.
Наиболее используемые CLI команды для проверки:
- sip show peers Отобразить все пиры ( включая friends)
- sip show registry Отобразить статус регистраций на удаленном UAS.
- sip set debug on Показывать все SIP сообщения.
- sip reload Перечитать конфигурационный файл.
- sip show settings Показать текущую конфигурацию chan_sip.
Для получения подробной информации о командах CLI Asterisk 13смотрите Asterisk CLI - интерфейс командной строки.
Пример конфигурации транка, для совершения исходящих вызовов:
[sipppnet-out] host=sipppnet.ru username=userID secret=PASSWORD fromuser=userID fromdomain=sipppnet.ru type=peer disallow=all allow=alaw allow=ulaw allow=g729 nat=force_rport directmedia=nonat insecure=port,invite dtmfmode=info context=from-sipppnet
В диалплане (extensions.conf) можно использовать разнообразный синтаксис для вызова (набора) SIP устройств.
* SIP/devicename * SIP/username@domain (SIP uri) * SIP/username[:password[:md5secret[:authname[:transport]]]]@host[:port] * SIP/devicename/extension * SIP/devicename/extension/IPorHost * SIP/username@domain//IPorHost
В файле extensions.conf, для совершения исходящих вызовов, у Вас должно присутствовать правило набора, примерно такого вида:
exten => _9.,1,Dial(SIP/${EXTEN:1}@sipppnet-out,30,r)
Переменная ${EXTEN:1} получает номер екстеншена и удаляет первую цифру- '9'. Подробная информация приведена в Asterisk Dialplan - extensions.conf.
Пример контекста для входящих вызовов в файле 'extensions.conf':
[from-sipppnet] exten => 3216111,1,Dial(SIP/100&SIP101,180,tr)
Настройка SIP пира для регистрации абонентов на Asterisk
Как уже отмечалось Asterisk не делает особых различий между транками и абонентами, поэтому конфиг телефона будет похож на SIP транк, но все же немного другой.
[777] host=dynamic type=friend secret=**password** qualify=yes nat=no port=5061 directmedia=no context=from-internal disallow=all allow-alaw allow=ulaw alow=gsm deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/255.255.0.0 username=777 fromuser=777 dial=SIP/777 mailbox=777@device call-limit=2 callcounter=yes faxdetect=no callgroup=1 pickupgroup=1
Рассмотрим некоторые опции:
- host - dynamic или ip адрес с которого подключается абонент.
- type - для абонентского пира это обычно friend
- secret - пароль, использование сложных паролей убережет вас от многих неприятностей, даже если вы считаете сеть безопасной, в дальнейшем все может измениться и ваша предусмотрительность окажется очень кстати.
- qualify - посылать SIP запросы OPTIONS для проверки доступности устройства (возможно это является избыточным, т.к. большинство устройств сами обновляют регистрацию, через заданный в настройках интервал)
- nat - если телефон находится в локальной сети то 'no', если регистрируется из интернет или другой интра сети, то 'force_rport'
- nat = no - без NAT RFC3581
- nat = force_rport - использовать rport, даже если его нет
- nat = comedia - отправить медиа поток на порт Asterisk 12, независимо от указаний SDP.
- nat = auto_force_rport - установить 'force_rport' параметр если Asterisk обнаружил NAT (по умолчанию)
- nat = auto_comedia - установить 'comedia' параметр если Asterisk обнаружил NAT
- directmedia - направлять медиа поток (RTP трафик) через сервер или напрямую между каналами (пирами).
см. также по теме:NAT, SIP и Asterisk
- port - порт SIP сигнализации устройства (не путайте c bindport asterisk, который для данного драйвера SIP в Asterisk может быть только один, 5060 по умолчанию, но для нового драйвера Asterisk pjsip.conf, может, или даже должен, быть назначен уникальный порт для каждого транспорта)
- deny - сети из которых запрещено подключение
- permit - сети из которых разрешено подключение (если абонент находится в локальной сети, назначьте ему параметр permit=192.168.1.0/255.255.255.0 и регистрация на этом пире будет разрешена только из этой подсети. ACLочень действенная мера безопасноcти. См. также Asterisk:acl.conf
- call-limit -сколько одновременных вызовов (concurrent calls) может производится через данный канал. Хорошая идея, как для локальных так и для удаленных абонентов. Если пир взломан, злоумышленники не смогут пропустить через канал больше указанного кол-ва вызовов зараз(ы).
'call-limit' опция признана устаревшей и заменена на 'callcounter'. Установить ограничение одновременных вызовов теперь можно переменной канала function 'GROUP_COUNT'
пример использования данного метода можно помотреть здесь:
Ограничение количества одновременных вызовов по набранному номеру.
Настройка нескольких SIP пиров по шаблону
Если у вас множество SIP пиров, которые имеют общие настройки и отличаются например, только 'username' и 'secret', можно создать шаблон.
Для этого надо создать шаблонный пир, а рядом с его именем в квадратных скобках, написать восклицательный знак в круглых скобках и задать общие настройки:
[local_pattern](!) host=dynamic type=friend context=from-internal nat=no disallow=all allow=ulaw allow=alaw
А затем определить уникальные свойства пиров, добавив рядом с именем каждого пира, имя общего шаблона в круглых скобках:
[776](local_pattern) username=776 secret=super_puper_secret_1 callerid=8123216111 [777](local_pattern) username=777 secret=super_puper_secret_2 callerid=8121234567