источника.

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:[email protected] SIP/2.0

Via: SIP/2.0/UDP 66.135.99.122:5060;branch=z9hG4bK32469d35;rport

From: 'asterisk' <sip:[email protected]>;tag=as4975f3ff

To: <sip:[email protected]>

Contact: <sip:[email protected]>

Call-ID: [email protected] 35.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:[email protected] SIP/2.0

Via: SIP/2.0/UDP 66.135.99.122:5060;branch=z9hG4bK635b0b1b;rport

From: 'asterisk' <sip:мой_уникальный[email protected]>;tag=as3186c1ba

To: <sip:[email protected]>

Contact: <sip:мой_уникальный[email protected]>

Call-ID: [email protected] 35.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.

Теперь в разделе [general] файла sip.conf требуется задать один дополнительный параметр: register. register (реестр) укажет поставщику сервисов, куда направлять адресованные нам вызовы. Так Asterisk говорит поставщику сервисов: «Эй! Если ты получил вызов ко мне, пошли его на IP-адрес 10.251.55.100». Параметр register имеет следующий вид:

register => имяпользователя:секрет@мой.поставщик_сервисов.Ш Теперь осталось только сконфигурировать простой диалплан для обработки входящих вызовов и отправки вызовов через поставщика сервисов. Мы собираемся внести коррективы в диалплан, который начали создавать в разделе «Настройка диалплана для выполнения тестовых вызовов» данной главы. Строки, выделенные курсивом, - это новые части, добавленные в диалплан. Все остальное взято без изменений из предыдущего раздела[68].

[globals] [general] [default]

exten => s,1,Verbose(1|Unrouted call handler)

exten => s,n,Answer()

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату