на вызов), но они гарантируют надежную передачу временных меток кадров из конца в конец. Если оба конца всех ваших магистральных каналов направляются прямо в TDM и значение trunkfreq равно длине кадра используемого кодека, вероятно, можно опустить этот параметр. Получатель также должен поддерживать эту функцию, хотя необязательно, чтобы она была у него активирована: trunktimestamps=yes|no
Регистрация на других серверах с помощью выражений register
Выражение регистрации register => используется для регистрации вашего сервера Asterisk на удаленном сервере. Это позволяет удаленному концу соединения знать ваше местонахождение на случай, если вы сконфигурированы с динамическим IP-адресом. Заметьте, что выражения register используются, только если вы сконфигурированы на удаленном конце как равноправный участник сети и когда host=dynamic. Основной формат выражения register:
register =>
В качестве альтернативы можно задать RSA-ключ, заключив его имя [142]в квадратные скобки ([]):
register =>
register =>
Описания IAX-каналов
Теперь, когда определены общие настройки, можно приступать к описанию каналов. Если предполагается принимать анонимные IAX-вы- зовы, рекомендуется создать гостевой канал. Это очень распространенный способ связи в сообществе Asterisk. Прежде чем решить, что это не для вас, подумайте о том, что, если вы хотите предоставить кому-либо возможность связи с вами через IAX (без конфигурации специальной учетной записи), он должен соединяться как гость. Эта учетная запись, в сущности, становится вашим «телефонным номером по протоколу IAX». Описание гостевого канала должно выглядеть примерно так: [guest] type=user context=incoming callerid='Incoming IAX Guest'
Несомненно, спамеры найдут способ доступа к этим адресам, но в ближайшем обозримом будущем это не представляет проблемы. В долгосрочной перспективе, вероятно, будет использоваться DUNDi (больше информации об этом вы найдете в главе 14).
Если требуется принимать вызовы из сети Free World Dialup, в Asterisk есть предопределенный защитный ключ, который гарантирует невозможность для анонимных соединений сымитировать звонок Free World Dialup. Для этого потребуется настроить канал iaxfwd:
[iaxfwd] type=user context=incoming auth=rsa
inkeys=freeworlddialup Если имеются ресурсы, опубликованные в сети DUNDi, в файле iax. conf должен быть описан соответствующий пользователь:
[dundi] type=user
dbsecret=dundi/secret context=dundi-incoming
Если имеются устройства, работающие по протоколу IAX (такие, как IAXy), или IAX-пользователи на удаленном сервере, возможно, вы захотите обеспечить их собственным описанием пользователя, посредством которого они будут соединяться с системой.
Допустим, на удаленном сервере имеется пользователь, для которого решено определить IAX-канал типа user. Назовем этого гипотетического пользователя sushi. Описание этого канала может быть примерно таким:
[sushi] type=user
context=local_users
auth=md5,plaintext,rsa
secret=wasabi
transfer=no
jitterbuffer=yes
callerid='Happy Tempura' <(800) 555-1234>
accountcode=seaweed
deny=0.0.0.0/0.0.0.0
permit=192.168.1.100/255.255.255.0
language=en
Входящие звонки от этого пользователя будут поступать в контекст local_users и передавать системе Caller ID (ID звонящего) Happy Tempura <(800) 555-1234>. Система ожидает от этого пользователя аутентификации с использованием простого текстового пароля или алгоритмов MD5 и RSA, поскольку предоставлен пароль wasabi и звонок поступил с IP- адреса 192.168.1.100. Всем звонкам, поступившим по этому каналу,
Аутентификация по протоколу IAX
IAX предоставляет механизмы аутентификации для обеспечения достаточного уровня безопасности между конечными точками. Это не означает, что аудиоинформацию нельзя захватить и декодировать, но свидетельствует о том, что можно более тщательно управлять правами доступа к вашей системе. В IAX-ка- налах поддерживается три уровня безопасности. Опция auth определяет, какой метод аутентификации используется в канале: plaintext, md5 или rsa.
Параметр plaintext в IAX обеспечивает очень низкий уровень защиты. Хотя он разрешает соединение с каналом только при условии введения правильного пароля, но тот факт, что пароль хранится в файле iax.conf как простой текст и передается и принимается в таком же незашифрованном виде, делает этот метод аутентификации очень ненадежным.
md5 обеспечивает большую безопасность сетевого соединения, однако по-прежнему в файле iax.conf на обоих концах соединения должен быть задан текстовый secret. Вот как происходит аутентификация в данном случае: сервер А запрашивает соединение с сервером В, который, в свою очередь, отвечает запросом на авторизацию, включающим сгенерированный случайным образом номер. Сервер А генерирует хеш MD5, используя значение, заданное в поле secret файла iax.conf, и случайный номер, полученный от сервера В. Этот хеш возвращается в ответе на запрос на авторизацию, и сервер В сравнивает его с локально сгенерированным хешем. Если хеши совпадают, предоставляется разрешение на доступ.
Метод rsa обеспечивает самый высокий уровень безопасности. Чтобы использовать RSA- аутентификацию, каждый конец соединения с помощью сценария astgenkey, обычно находящегося в папке /usr/src/asterisk/contrib/scripts/, должен создать пару ключей - открытый и закрытый. После этого открытый ключ передается на дальний конец. Каждый конец соединения в свое описание канала должен включить открытый ключ противоположного конца, используя для этого параметры inkeys и outkey. RSA-ключи хранятся в папке /var/lib/asterisk/keys/. Открытым ключам присваиваются имена
будет присваиваться код учетной записи seaweed. Поскольку для параметра transfer (переадресация) задано значение no, медиа-поток этого канала всегда будет проходить через Asterisk; он не может быть перенаправлен на другой IAX-узел.
Если вы сами являетесь удаленным узлом и вам необходимо устанавливать соединения с другим узлом, главный узел был бы определен для вас как равноправный участник (peer):
[sashimi_platter]
type=peer
username=sushi
secret=wasabi
host=192.168.1.101
qualify=yes
trunk=yes