Asterisk: iax.conf
В файле iax.conf вы описываете ваши соединения по протоколу IAX.
Настройка IAX клиентов. Выдержка из примера конфигурации файла IAX.CONF, который идет в дистрибутиве:
Далее Вы можете добавить секции, в которых определяются Ваши пользователи, имена контекстов для исходящих от них вызовов, их имена и пароли, которые будут использоваться для авторизации. Примитивный контроль доступа на основе IP адресов можно осуществлять, используя директивы «permit» и «deny». Есть возможность использования нескольких правил, в этом случае первое определенное правило используется по умолчанию, если нет дальнейших совпадений.
Вы можете переопределить значение caller*ID, в этом случае, при получении вызова Вы можете установить поле Caller*ID в нужное Вам значение, если Вы не доверяете значению, которое предоставил удаленный пользователь.
Для авторизации пользователей поддерживаются три метода: md5?, авторизация с использованием незашифрованного пароля (plaintext) и метод с использованием rsa?. Самый незащищенный метод - это использование незашифрованного пароля «plaintext», т.к. при этом пароль в неизменном виде передается по сетям связи. В методе «md5» используется схема запрос/ответ с использованием md5 хеша передаваемых данных, но, по прежнему, необходимо на обоих концах соединения хранить пароль в незашифрованном виде. Метод «rsa» позволяет производить авторизацию с использованием однонаправленного шифрования с использованием связки публичного и приватного ключа, где с помощью публичного ключа можно только шифровать данные, но невозможно их расшифровать, а расшифровка данных возможна только при использовании приватного ключа. Если используется авторизация с методом «rsa», параметр «inkeys» определяет список имен публичных ключей для локальной системы, которые могут быть использованы для авторизации удаленного абонента, эти имена должны быть разделены символом «:». Параметр «outkey» - это имя одного приватного ключа, который используется для авторизации на удаленной системе.
Файл публичного ключа имеет имя вида: /var/lib/asterisk/keys/<name>.pub, тогда как приватный ключ именуется как: /var/lib/asterisk/keys/<name>.key. Приватнйы ключ всегда должен быть зашифрован с использованием алгоритма 3DES.
Примеры:
- От John Todd, Loligo.com: http://www.loligo.com/asterisk/current/iax.conf
Голосовые кодеки Нижеприведенные голосовые кодеки Вы можете использовать в качестве аргументов для директив: allow/disallow:
- g723.1
- gsm
- ulaw
- alaw
- g726
- slinear
- lpc10
- adpcm
- g729
- speex
- ilbc
- h261
- h263
- all
Управление потоками медиаданных
Указывая параметр notransfer=yes, Вы можете запретить серверу Asterisk исключить себя из пути следования медиаданных между двумя удаленными абонентами и замыкать его между ними напрямую. Это, конечно, влияет на содержимое Ваших (CDR) записей и билинговой информации. Замечание: Поведение при использовании этого параметра очень похоже на использование параметра canreinvite=no в файле конфигурации sip.conf.
TOS
В качестве альтернативы, Вы можете непосредственно указать какие TOS биты требуется установить:
tos=0x18 ; где tos биты устанавливаются индивидуально и в комбинации из нескольких битов.
Например так:
tos=0x10 = требование минимальных задержек прохождения пакетов (low delay) tos=0x08 = требование выделения большой полосы пропускания (high throughput) tos=0x04 = требование высокой надежности доставки пакетов (high reliability) tos=0x02 = установить ECT бит tos=0x01 = установить CE бит
или сразу установить насколько бит сразу, например так:
tos=0x18
при этом устанавливается биты требующие наименьших задержек прохождения пакета (low delay) и выделения большой полосы пропускания (high throughput).
Параметр qualify Для некоторых IAX клиентов включая firefly, diax, IAXphone, IAXComm не может быть отслежено их состояние с использованием директивы qualify=1000. Если Вы определите этот параметр, то в CLI консоли Вы увидите примерно такое сообщение:
Peer '2004' is now UNREACHABLE!
Для этих клиентов устанавливайте: qualify=no.
Упрощение формата команды Dial в файле extensions.conf
Хотя, для определения вызовов через IAX каналы, вся информация (имя пользователя, пароль, и т.д.) может быть явно задана для каждой команды «dial» в файле extensions.conf, эта строка для создания вызова может быть упрощена или сокращена, путем помещения всей этой информации в файл iax.conf, и использования для создания исходящего вызова ссылки на имя определенного там абонента:
Dial(IAX2/<peer name>/<exten>)
Например, для вызова в IAXtel, вы можете в файле iax.conf создать примерно такую запись:
[iaxtel-outbound] type=peer username=<username> secret=<secret> peercontext=iaxtel host=iaxtel.com
Тогда можно использовать команду Dial в таком виде:
exten => _1700XXXXXX,1,Dial(IAX2/iaxtel-outbound/${EXTEN})
Замечание: Параметр «peercontext» появился начиная с CVS версии Asterisk от 26-06-2004.
Таблица команд и директив с определением, где их можно использовать. __Нуждается в обновлении: последний раз редактировалось 14 октября 2004.
Directive | Value | General | Peer | User |
---|---|---|---|---|
allow | <codec> | Y | Y | Y |
disallow | <codec> | Y | Y | Y |
amaflags | Y | |||
auth | ||||
autocreatepeer | ||||
bandwidth | Y | Y | Y | |
bindaddr | Y | |||
bindport | Y | |||
callerid | ||||
callgroup | ||||
context | Y | Y | ||
defaultexpirey | ||||
defaultip | ||||
externip | N | N | ||
fromdomain | ||||
fromuser | ||||
host | ||||
incominglimit | ||||
jitterbuffer | Y | |||
maxjitterbuffer | Y | |||
maxexcessbuffer | Y | |||
outgoinglimit | ||||
inkeys | Y | Y | ||
outkey | Y | Y | ||
insecure | ||||
language | ||||
localnet | ||||
mailbox | ||||
maxexpirey | ||||
md5secret | Y | Y | ||
notransfer | Y | Y | ||
peercontext | ||||
pedantic | ||||
permit | Y | Y | ||
deny | Y | Y | ||
pickupgroup | ||||
qualify | Y | Y | ||
register | Y | |||
restrictcid | ||||
secret | Y | Y | ||
srvlookup | ||||
tos | Y | Y | ||
trunkfreq | Y | |||
trunk | Y | Y | ||
trustrpid | ||||
type | Y | Y | ||
useragent | ||||
username | ||||
videosupport |
Tips
- Команда «Register» для регистрации на другом IAX сервере должны находиться в секции [general] файла iax.conf.
- Для создания IAX соединения в транковом режиме?, добавьте «trunk=yes» в определение Вашего абонента в файле iax.conf. Транковый IAX канал нуждается в поддержке аппаратного таймера. Для дополнительной информации, смотри: Asterisk timer.
- Не используйте одновременно «host=dynamic» и «defaultip=111.222.333.444», убедитесь, что используется только один из этих параметров (смотри багрепорты: 558 и 673).
- Если Вы не используете контроль доступа на основе IP адресов для всех ваших клиентских записей с «type='user», тогда в Вашем файле iax.conf должна содержаться гостевая («guest») запись, для которой не задано поле secret (без пароля), если Вы хотите, чтобы Ваш сервер Asterisk имел более-менее безопасную конфигурацию. В случае, если у Вас не определена гостевая запись то, когда к Вам поступает соединение с удаленной системы, она может подключиться к Вам без указания имени пользователя (анонимно), в этом случае сервер Asterisk может позволить ей подключиться с любым из паролей, которые определены в файле iax.conf. Это значит, что если у Вас имеется много записей с типом - «type=user» в файле iax.conf и не описана гостевая («guest») запись, то кто-либо, кто знает хотя бы один пароль для соединения с Вашим сервером, может использовать его для входа под именем пользователя, кому этот пароль принадлежит (т.e. ему не нужно знать одновременно и имя пользователя и его пароль, достаточно знать только пароль). Но, добавление гостевой записи (без пароля), для анонимных входящих вызовов, решает эту проблему.
- Добавьте последнюю запись в файл iax.conf, не содержащую пароля, для отправки анонимных вызовов в определенный контекст.
- Если Вы используете механизм realtime, убедитесь, что у Вас нет пользователей с пустым паролем или без установленных параметров permit/deny.
- Используйте глобальный параметр mailboxdetail=yes, для отправки детальной информации и информации о количестве новых сообщений в голосовом ящике. Эта функция работает для большинства IAX телефонов, например, с AT-320? или с программными клиентами.