Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
Точно так же, как мы делали это для файла extensions.conf, выполните следующие команды в оболочке bash:
# mv sip.conf sip.conf.sample
# touch sip.conf
Определение SIP-устройства в Asterisk
Если внести следующие строки в файл sip.conf, можно будет зарегистрировать телефон в системе.
[general]
[1000] type=friend context=phones host=dynamic
Несимпатично, небезопасно, не обладает гибкостью, неполнофункцио- нально, но это будет работать.
Даже несмотря на то что это SIP-устройство названо 1000 и, вероятно, ему будет присвоен именно этот добавочный номер, следует отметить, что имя устройства может быть произвольным. mysipset, john, 0004f201ab0c - все эти имена действительны, широко используются и даже, возможно, больше отвечают требованиям пользователей1. Главное, чтобы присваиваемое имя было уникальным идентификатором устройства, который станет частью мандата при выполнении вызова по каналу SIP. Поскольку мы хотим как направлять вызовы в программный телефон, так и обеспечить клиенту возможность размещать вызовы, параметр type (тип) был определен как friend (друг). Существует еще два параметра: user (пользователь) и peer (равноправный участник сети). С точки зрения Asterisk user задается для входящих вызовов, а peer - для исходящих звонков (через приложение Dial()). friend - это просто краткая запись, определяющая и пользователя, и равноправного участника. Если есть сомнения, задавайте тип friend.
Опция host (хост) используется для определения местонахождения клиента в сети, когда Asterisk необходимо направить ему вызов. Это значение может быть задано статически, например host=192.168.1.100, или, если клиент имеет динамический IP-адрес, задается host=dynamic. Если для опции host задано значение dynamic и клиент сконфигурирован для автоматической регистрации, Asterisk получит от конечной точки (то есть от телефонного аппарата или программного телефона) пакет REGISTER, из которого Asterisk сможет узнать, какой IP-адрес использует равноправный SIP-участник.
Если вы не доверяете своей сети, вероятно, следует задать пароль. Для этого в описание устройства добавляется следующая строка. Это один из тех параметров, которые не являются обязательными, но желательны:
secret=guessthis
Конфигурация самого устройства
В меню конфигурации телефона (которые могут быть предоставлены через графический веб-интерфейс пользователя, меню самого телефона или, возможно, посредством использования конфигурационных файлов, хранящихся на сервере) уникальный идентификатор (в данном случае 1000) является составной частью мандатов, используемых для процесса аутентификации. Естественно, чтобы соединение было успешным, идентификатор в Asterisk должен совпадать с идентификатором телефонного аппарата. Забавно, что формального названия для этого идентификатора не существует. Мы решили называть его просто уникальным идентификатором.
В SIP RFC (http://www.faqs.org/rfcs/rfc3261.html) в разделе 19.1 этот токен пользователя назван «идентификатором конкретного ресурса хоста, к которому выполняется обращение». Эта формулировка соответствует нашему применению [ 1000 ] в качестве идентификатора аппарата в файле Asterisk sip.conf.
Вероятно, вам привычнее было бы видеть поля user name, auth name, authentication name и т. д. Здесь необходимо помнить, что на стороне Asterisk все сконфигурировано просто и правильно и поэтому можно экспериментировать с настройками телефона, пока не будет найдена работоспособная комбинация. Такой вариант намного лучше, потому что обычно новые пользователи проходят через невероятные мучения, меняя настройки и там и тут, и не могут зарегистрировать телефон.
Повторим еще раз: задайте в sip.conf максимально простую конфигурацию Asterisk и после этого не меняйте ничего. Поверьте, то, что написано здесь, будет работать. Приведите свой телефон в рабочее состояние (то есть чтобы он мог принимать и делать вызовы) и только после этого начинайте экспериментировать с разными настройками. Мы видели слишком много страданий (включая собственные) и хотим положить им конец.
Упрощение sip.conf
Файл sip.conf (который был скопирован в папку /etc/asterisk с помощью команды make samples в предыдущей главе) содержит большое количество опций и документации, но сам файл на самом деле очень небольшой, если убрать из него все закомментированные параметры. Стандартный файл сводится всего лишь к следующим нескольким строкам, незакомментированным по умолчанию: [general]
context=default ; Контекст по умолчанию для входящих ; вызовов
allowoverlap=noallowoverlap=no Отключить поддержку набора номера в режиме overlap. (Значение по умолчанию - yes) bindport=5060 Используемый UDP-порт 5060 (стандартный SIP-порт) bindport - локальный UDP-порт, который будет слушать Asterisk bindaddr=0.0.0.0 Используемый IP-адрес 0.0.0.0 (все доступные адреса) srvlookup=yes Активировать поиск DNS SRV-записей для исходящих вызовов Примечание: Asterisk использует только первый хост в SRV-записях Деактивация поиска DNS SRV-записей отключает возможность размещать SIP-вызовы к другим SIP-пользователям в Интернете на основании доменных имен [authentication]В разделе [general] находятся опции, которые будут применяться ко всем клиентам и каналам SIP. Некоторые настройки задаются только в разделе [general], другие могут задаваться в разделе [general] как применяемые по умолчанию для всех условных инструкций и могут быть переопределены в другом месте. Эти опции перечислены в столбцах [users] и [peers] под заголовком [authentication].
Как правило, закомментированные опции являются используемыми Asterisk по умолчанию или значение по умолчанию указано в описании опции.
Также можно проверить текущее состояние SIP-канала в Asterisk с помощью CLI-команды sip show settings.
Если Asterisk и программный телефон выполняются в одной системе (то есть программный телефон X-Lite и Asterisk выполняются на портативном или настольном компьютере), придется изменить SIP-порт, который слушает клиент. Его надо будет заменить с 5060 на 5061 (или любой другой свободный порт), чтобы Asterisk и программный телефон не мешали друг другу.
Основные компоненты сервера
Перед тем как углубиться в описание следующих файлов, осталось определить еще несколько параметров на сервере. Выполнение соответствующих сервисов в собственной сети обеспечит возможность автоматической настройки аппаратов Polycom при их подключении. Работыздесь немного, и, поверьте, результат того стоит. Потренируйтесь немного - и в будущем для любой новой системы на это будет уходить лишь несколько минут, что сохранит вам массу времени и избавит от «борьбы» с веб-интерфейсами. Когда вы возьмете новенький телефон Polycom, подключите его в свою сеть, посмотрите, как он сам себя настроит и успешно зарегистрируется на сервере Asterisk, вы испытаете наслаждение, которое доступно только истинным компьютерщикам1. На самом деле все не так сложно. На наш взгляд, можно запутаться только в доступных вам способах, потому что их выбор действительно огромен.
DHCP-сервер
Обычно DHCP-сервер используется для конфигурации основных настроек протокола IP для устройства (IP-адрес, шлюз по умолчанию и DNS), но протокол DHCP (Dynamic Host Configuration Protocol - протокол динамической конфигурации хоста) на самом деле может передавать множество других параметров. В нашем случае мы хотим, чтобы он передал в телефонные аппараты некоторую информацию с указанием, откуда они могут загрузить конфигурационные файлы. Вот пример настроек DHCP-сервера Linux, которые обеспечат то, что нам требуется: