Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
Продукты Linksys (и Sipura) снискали славу за свое превосходное качество, особенно с учетом цены, но они известны также тем, что их ужасно сложно настраивать.
Это, главным образом, объясняется тем, что их GUI конфигурации предлагает сотни настраиваемых параметров.
Но нас это не волнует. Вот то, что необходимо знать, чтобы настроить SPA-942 (и, надеемся, большинство VoIP-устройств Linksys) для работы с системой Asterisk.
Как выполнить вход в телефон
Прежде всего необходимо получить IP-адрес телефона, чтобы можно было войти в его GUI. На самом телефоне найдите кнопку со значком,
Рис. 4.4. Клавиатура SPA-942
который выглядит как листок бумаги с загнутым углом (сразу под кнопкой с конвертом). Это кнопка Settings (Настройки) - рис. 4.4.
Чтобы получить IP-адрес телефона, нажмите кнопку Settings (Настройки), а затем - кнопку 9 (или используйте кнопку со стрелками и с помощью прокрутки перейдите к пункту Network (Сеть)). После этого нажмите кнопку select (выбрать) (под жидкокристаллическим дисплеем располагается ряд из 4 кнопок, select - крайняя слева). Во втором поле должен быть указан IP-адрес телефона.
Теперь откройте броузер, введите IP-адрес в адресную строку, нажмите кнопку Enter (Ввод) - и вы увидите окно Info (Информация) телефона.
Регистрация телефона в Asterisk
В верхнем правом углу экрана выберите ссылку Admin Login (Вход под учетной записью администратора). При этом появится несколько новых вкладок, таких как Regional (Региональные), Phone (Телефон), Ext 1, Ext 2 и User (Пользователь).
Выберите вкладку Ext 1, с помощью которой мы выполним настройку первой линии. Выберите в меню следующие опции:
# General ^ Line Enable ^ yes (Общие ^ Линия доступна ^ да).
# NAT Settings ^ NAT Mapping Enable ^ no (Настройки NAT ^ Отображение NAT доступно ^ нет).
# NAT Settings ^ NAT Keep Alive Enable ^ no (Настройки NAT ^ Поддержка NAT доступна ^ нет).
# Proxy and Registration ^ Proxy ^ [Введите IP-адрес Asterisk (например, 192.168.1.100)] (Прокси и регистрация ^ Прокси ^ [Введите IP-адрес Asterisk]).
# Proxy and Registration ^ Register ^ yes (Прокси и регистрация ^ Регистрация ^ да).
# 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 (Информация об абоненте ^ Использовать ID авторизации ^ да).
# 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 сами!
Следующая конфигурация должна обеспечить подключение к поставщику сервисов интернет-телефонии (Internet Telephony Service Provider, ITSP)[67], хотя невозможно предугадать, какую конфигурацию потребует конкретный поставщик. В идеале поставщик сам предоставит вам настройки, которые необходимы для подключения вашей системы. Однако не все поддерживают Asterisk, поэтому мы собираемся предложить универсальную конфигурацию, на выполнение которой уйдет лишь несколько минут и которая должна помочь вам:
[мой_поставщик_услуг]
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