Четверг
25-04-2024
03:31
Главная страница
Каталог статей
Информист Приветствую Вас Гость | RSS
Регистрация
Вход
Меню сайта

Категории каталога
Asterisk [3]
Установка, конфигурирование, использование сервера интернет телефонии Asterisk.

Наш опрос
Насколько вам понравился этот сайт
Всего ответов: 545

Копилка
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.

Начало » Статьи » VoIP » Asterisk

Подключаем Asterisk к IAX- и SIP-серверам

Опуская ненужную лирику и скучную теорию, приступим к делу. Соединять два сервера Asterisk будем по протоколу IAX2. Для этого требуется внести изменения в файлы /etc/asterisk/iax.conf и /etc/asterisk/extentios.conf

Настройка iax.conf

На первом сервере в секции [general] добавляем строчки:

[general]
;register=> :@IP адрес второго сервера - для чего нужен этот параметр описано ниже
;
[serverA]
type=friend
user=
secret=
host=IP адрес второго сервера

На втором сервере в секции [general] добавляем строчки:

[general]
;register=> :@IP адрес первого сервера - для чего нужен этот параметр описано ниже
;
[serverB]
type=friend
user=
secret=
host=IP адрес первого сервера

Настройка extensions.conf

Например, на первом сервере у вас есть логин 111, а на втором - 222, и необходимо сделать так, чтобы можно было звонить с одного номера на другой.

На первом сервере добавляем строки:

[iaxconf]
exten=>8222,1,dial(IAX2/serverB/${EXTEN:1},30,m)
exten=>8222,2,Congestion

[demo]
exten => 111, 1, dial(sip/111,10,t)
include=>iaxconf

На втором сервере добавляем строки:

[iaxconf]
exten=>8111,1,dial(IAX2/serverB/${EXTEN:1},30,m)
exten=>8111,2,Congestion

[demo]
exten => 222, 1, dial(sip/222,10,t)
include=>iaxconf

Итак, что мы тут надобавляли. Выражение exten => 222, 1, dial(sip/222,10,t) означает, что на текущем сервере можно позвонить по номеру 222 и сервер вызовет абонента с номером 222, дается 10 секунд на вызов (в это время вызывающий абонент слышит гудки - параметр t), после истечении которых, если абонент не ответил - вызов сбрасывается (абонент не доступен или находиться вне зоны действия сети =) ).

Выражение exten=>8111,1,dial(IAX2/serverB/${EXTEN:1},30,m) указывает, что при наборе номера 8111, сервер вызывает соседний сервер по протоколу IAX2 и просит его вызвать абонента по номеру 111, т.е., грубо говоря, вызываем абонента по номеру 111 через восьмерку. ${EXTEN:1} - указывает, что нужно передать соседнему серверу текущий набранный номер, начиная со второго символа, длительность вызова - 30 сек, во время ожидания вызывающий абонент слышит музыку - m.

Выражение exten=>8111,2,Congestion указывает, что если вызываемый абонент по номеру 8111 вовремя не ответил - параметр 2 (т.е. это выражение выполниться после того как завершится первое), то сервер сообщает, что вызываемый абонент не доступен и корректно завершает соединение. Использование этого выражения более правильно, т.к. если абонент вовремя не ответил и в конфиге нет этого выражения для текущего вызываемого номера, то некоторое время сервер не сможет никого соединить с этим номером.

Команда register

Когда ip адрес клиента типа user неизвестен, пользователь типа peer не знает, куда совершать вызов (например, при вызове из офиса сотрудника, который работает на дому, когда у него имеется только динамически назначаемый ip адрес или он находиться за NAT.) Для решения этой задачи, домашний работник активно регистрируется на сервере в офисе, предоставляя свои данные и местоположение в сети.

Для включения регистрации, в секции [general] файла iax.conf, добавьте директиву для регистрации:

register => user:password@hostname.domain.ext

При этом непрерывно, через некоторые интервалы, будет обновляться информация о пользователе, и сервер всегда будет знать, как вызвать пользователя, даже если его IP адрес будет меняться.

Директива "register" работает только, если вы хотите соединить свой сервер с динамическим IP адресом c сервером, который имеет статический (реальный) IP адрес, т.е. для пользователя, на котором производиться регистрация, Вы должны добавить директиву "host=dynamic" в файле iax.conf. Если оба сервера имеют известные статические IP адреса, то в этом случае нет никакой нужды в регистрации, просто используйте директиву host=hostname на обоих серверах.

Правила iptables

Нелишним будет указать некоторые полезные правила iptables. Чтобы пакеты беспрепятственно проходили через фильтр, пишем:

Для протокола SIP:

iptables -A INPUT -p udp -m udp --dport 5004:5082 -j ACCEPT

Для протокола IAX2:

iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT

Медиапотоки RTP:

iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Некоторые используют протокол MGCP (media gateway control protocol):

iptables -A INPUT -p udp -m udp --dport 2727 -j ACCEPT

Для установки TOS в исходящих пакетах используем (для SIP) такое правило:

iptables -A OUTPUT -t mangle -p udp -m udp --dport 5060 \
-j DSCP --set-dscp 0x28
iptables -A OUTPUT -t mangle -p udp -m udp --sport 10000:20000 \
-j DSCP --set-dscp 0x28



http://www.xakep.ru/magazine/xa/108/154/1.asp

Источник: http://voipx.ru/cgi-bin/loscont.cgi?ID=1098
Категория: Asterisk | Добавил: Judge (06-10-2009)
Просмотров: 8217 | Комментарии: 3 | Рейтинг: 5.0 |

Всего комментариев: 2
2 Dimich  
0
Красава!
Спасиб обязательно применю у себя с доработками конечно но автор саму суть описал и понятно и просто!

1 gfff  
0
Oct 29 16:24:36] ERROR[9325]: chan_iax2.c:4251 handle_call_token: Call rejected, CallToken Support required. If unexpected, resolve by placing address 192.168.73.168 in the calltokenignore list or setting user (null) requirecalltoken=no
ASUS*CLI>

Имя *:
Email *:
Код *:
Форма входа

Поиск по каталогу
Яндекс


Поиск по Информисту

Наша кнопка


Друзья сайта

Статистика


Copyright MyCorp © 2006Сайт создан в системе uCoz