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.

Примеры:

Голосовые кодеки Нижеприведенные голосовые кодеки Вы можете использовать в качестве аргументов для директив: 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? или с программными клиентами.

Файлы конфигурации Asterisk

Настройка Asterisk

  • asterisk/cf/iax.conf.txt
  • Последние изменения: 2016/11/21