Читаем Asterisk™: будущее телефонии Второе издание полностью

# 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 при отправке вызова поставщику сервисов.

<p><strong>Сопоставление имени пользователя, а не IP-адреса</strong></p>

Некоторые поставщики услуг для отправки своих вызовов могут использовать вместо протокола 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" ;tag=as4975f3ff

To:

Contact:

Call-ID: 58e3dfb2584930cd77fe989c00986584@66.135.99.122

CSeq: 102 INVITE

User-Agent: Asterisk PBX

Max-Forwards: 70

Date: Fri, 20 Apr 2007 14:59:24 GMT

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 265

С параметром fromuser:

Audio is at 66.135.99.122 port 11700

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=z9hG4bK635b0b1b;rport

From: "asterisk" ;tag=as3186c1ba

To:

Contact:

Call-ID: 0c7ad6156f92e70b1fecde903550a12f@66.135.99.122

CSeq: 102 INVITE

User-Agent: Asterisk PBX

Max-Forwards: 70

Date: Fri, 20 Apr 2007 15:00:30 GMT

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 265

Параметры deny и permit используются для отклонения всех входящих вызовов к этому участнику сети от всех IP-адресов, кроме заданного параметром permit. Это просто мера безопасности, которая обеспечивает поступление к данному участнику сети трафика только с ожидаемого IP-адреса.

В конце видим выражение insecure=invite, которое может быть необходимо для вашего поставщика, потому что источник сообщения INVITE может находиться на платформе сервера, но передаваться через его прокси-сервер SIP. По сути, это означает, что в строке Contact (Контакт) (поле сообщения INVITE, которое вы проверяете при приеме вызова от своего поставщика) может быть совсем не тот IP-адрес, по которому находится участник сети. Это выражение указывает Asterisk игнорировать данное несоответствие и принимать приглашение в любом случае.

Возможно, понадобится задать и invite=invite,port, если адрес порта также не соответствует тому, что ожидает Asterisk.

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT