Asterisk™: будущее телефонии Второе издание
Шрифт:
# Proxy and Registration ^ Make Call Without Reg ^ no (Прокси и регистрация ^ Звонить без регистрации ^ нет).
# Proxy and Registration ^ Ans Call Without Reg ^ no (Прокси и регистрация ^ Отвечать на звонок без регистрации ^ нет).
# Subscriber Information ^ Display Name ^ Caller ID information (Информация об абоненте ^ Отображать имя ^ Информация об ID звонящего).
# Subscriber Information ^ User ID ^ 1000 (Информация об абоненте ^ ID пользователя ^ 1000).
# Subscriber Information ^ Password ^ [Оставьте незаполненным, если используете простую конфигурацию, описанную ранее в этой главе] (Информация об абоненте ^ Пароль ^ [Оставьте незаполненным, если используете простую конфигурацию, описанную ранее в этой главе]).
# Subscriber Information ^ Use Auth ID ^ yes (Информация
# Subscriber Information ^ Auth ID ^ 1000 (Информация об абоненте ^ ID авторизации ^ 1000).
# Audio Configuration ^ Preferred Codec ^ G711u (Конфигурация аудио ^ Предпочтительный кодек ^ G711u).
# Audio Configuration ^ Use Pref Codec Only ^ no (Конфигурация аудио ^ Использовать только предпочтительный кодек ^ нет).
# Audio Configuration ^ Silence Supp Enable ^ no (Конфигурация аудио ^ Поддержка тишины доступна ^ нет).
# Audio Configuration ^ DTMF Tx Method ^ Auto (Конфигурация аудио ^ Метод DTMF Tx ^ Автоматически).
# Подтвердите все изменения
И это все! Теперь ваш телефон должен быть зарегистрирован в Asterisk. Вы узнаете об этом по кнопке-индикатору, расположенному рядом с жидкокристаллическим дисплеем, - он изменит цвет с оранжевого на зеленый.
Конфигурация диалплана для выполнения тестирования
Чтобы ваш телефон мог звонить на другие телефоны (или, для многоканального телефона, звонить самому себе), необходимо внести изменения в файл extensions.conf. Взяв за основу то, что было сделано в разделе «Настройка диалплана для выполнения тестовых вызовов», добавим следующие строки в контекст [internal]: exten => 1000,1,Verbose(1|Extension 1000) exten => 1000,n,Dial(SIP/1000,30) exten => 1000,n,Hangup
Если имеется два телефона или сконфигурировано несколько линий, можно продублировать предыдущие настройки, заменив 1000 на другой добавочный номер.
Подключение к поставщику сервисов SIP
С появлением интернет-телефонии по всему миру возникло множество телефонных компаний, использующих интернет-технологии! Поэтому выбор у нас огромен. Многие из этих поставщиков сервисов обеспечивают возможность подключения частной Asterisk-системы к их сетям [66] , а некоторые даже используют Asterisk сами!
66
Обязательно проверяйте политику провайдера, к которому вы планируете подключиться, поскольку некоторые из них могут запрещать использование офисной АТС с их сервисом. Обязательно проверяйте политику провайдера, к которому вы планируете подключиться, поскольку некоторые из них могут запрещать использование офисной АТС с их сервисом.
Следующая конфигурация должна обеспечить подключение к поставщику сервисов интернет-телефонии (Internet Telephony Service Provider, ITSP) [67] , хотя невозможно предугадать, какую конфигурацию потребует конкретный поставщик. В идеале поставщик сам предоставит вам настройки, которые необходимы для подключения вашей системы. Однако не все поддерживают Asterisk, поэтому мы собираемся предложить универсальную конфигурацию, на выполнение которой уйдет лишь несколько минут и которая должна помочь вам:
67
Также их называют провайдерами VoIP (VoIP Service Provider, VSP).VoIP (VoIP Service Provider, VSP).
[мой_поставщик_услуг]
type=peer
host=10.251.55.100
fromuser=мой_уникальный_id
secret=мой_секретный пароль
context=incoming_calls
dtmfmode=rfc2833
disallow=all
allow=gsm
allow=ulaw
Конфигурация локального межсетевого экрана
Если межсетевой экран ip-таблиц используется на одном компьютере с сервером Asterisk, выполнив следующие команды, можно открыть порт 5060 для обмена сигналами по протоколу SIP и порты от 10000 до 20000 для RTP-трафика. Также диапазон RTP-портов можно сузить в файле rtp.conf, находящемся в папке /etc/asterisk. Замечательная книга по организации межсетевых экранов с помощью ip-таблиц - «Linux Firewalls» (издательство Novell Press) Стива Суэринга (Steve Suehring) и Роберта Циглера (Robert Ziegler).
# iptables -I RH-Firewall-1-INPUT -p udp --dport 5060 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -p udp --dport 10000:20000 -j ACCEPT
# service iptables save
Помните, что это откроет порты 5060 и от 10000 до 20000 для всего UDP-трафика из любого источника.
deny=0.0.0.0/0
permit=10.251.55.100/32
insecure=invite
Большинство приведенных настроек должны быть вам знакомы, но если нет, далее дается их краткое описание.
Задавая тип peer, мы указываем Asterisk, что при получении сообщения INVITE (Приглашение) (когда поставщик присылает вызов) нужно сравнивать не имя [мой поставщик сервисов], а IP-адрес, указанный в этом сообщении. Параметр host - это IP-адрес, на который мы будем направлять наши вызовы, и этот IP-адрес будет сопоставляться при получении вызова от поставщика.
Параметр fromuser (от пользователя) влияет на то, как структурировано наше сообщение INVITE при отправке вызова поставщику сервисов.
Сопоставление имени пользователя, а не IP-адреса
Некоторые поставщики услуг для отправки своих вызовов могут использовать вместо протокола Session Initiation Protocol множество IP-адресов, требуя от вас создания отдельной учетной записи типа peer для каждого IP-адреса. Если известны не все IP-адреса, вероятно, придется сравнивать имена пользователей. В этом случае потребуется лишь немного изменить формат описания поставщика сервисов. Самое большое изменение, на которое следует обратить внимание, - то, что вам понадобится задать [заголовок_поставщика_услуг] как имя пользователя, которому ваш поставщик сервисов собирается направлять вызовы. Также мы изменили тип peer (равноправный) на friend (дружественный), что с точки зрения Asterisk создает типы и user (пользователь), и peer, где тип user будет сравниваться раньше peer: [мой_уникальный_id] type=friend host=10.251.55.100 fromuser=мой_уникальный_id secreЛ=мой_секретный пароль context=incoming_calls dtmfmode=rfc2833 disallow=all allow=gsm allow=ulaw insecure=invite
Обратите внимание, что удалены параметры deny (отклонить) и permit (разрешить), поскольку IP-адреса, с которых будут поступать вызовы, могут быть неизвестны. Если вдруг эти адреса известны и вы по-прежнему хотите сравнивать их, параметры deny и permit для IP-адресов можно восстановить.
Если имя пользователя задано в параметре fromuser, при отправке вызова поставщику меняются поля From: (От:) и Contact: (Контакт:) сообщения INVITE. Этого может требовать сам поставщик, если он использует эти поля в процедуре аутентификации. То, где Asterisk меняет заголовок, можно увидеть в следующих двух фрагментах кода.
Без параметра fromuser:
Audio is at 66.135.99.122 port 18154
Adding codec 0x2 (gsm) to SDP
Adding codec 0x4 (ulaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 10.251.55.100:5060:
INVITE sip:15195915119@10.251.55.100 SIP/2.0
Via: SIP/2.0/UDP 66.135.99.122:5060;branch=z9hG4bK32469d35;rport
From: "asterisk" <sip:asterisk@66.135.99.122>;tag=as4975f3ff
To: <sip:15195915119@10.251.55.100>