Файл конфигурации iax.conf
В файле iax.conf вы описываете ваши соединения по протоколу IAX.
Конфигурационные параметры, используемые в файле iax.conf, неплохо описаны в Asterisk handbook.
Настройка 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 | SIP only - N | SIP only - 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 или с программными клиентами.
Ссылки по теме
- Как сконфигурировать авторизацию с использованием метода RSA для IAX каналов
- Авторизация в IAX протоколе
- Файлы конфигурации Asterisk
- Каналы IAX
- Asterisk