В данной статье пойдет речь не об установке какого-то либо
дистрибутива линукс, а об общих мерах, которые нужно предпринять для
стабильной и безопасной работы asterisk на linux. Итак,
Установка
Абсолютно не важно, какой дистрибутив линукса вы собираетесь
использовать. При установке выбирайте минимальную конфигурацию.
Asterisk не нуждается офисных пакетах, играх и графических оболочках.
Чем меньше всякого хлама установите, тем лучше.
Пакеты, которые нужны, это:
* glibc-devel - заголовочные файлы стандартных библиотек. Без этого
пакета ничего не откомпилируется.
* kernel-devel и kernel-header - исходные тексты ядра Linux. нужны
для сборки zaptel. Даже если у вас и не планируется использовать
железо от Digium, для нормальной работы MusicOnHold? и
конференций понадобится собрать модуль ztdummy, который обеспечит
тактирование от USB подсисемы.
* db-devel - астериск использует встроенную базу данных.
* gcc,cpp,binutils,bison,expat-devel и ncurses - компиляторы,
препроцессоры и другие утилиты. curses нужен для сбоки консльного
менеджера astman.
* openssl, openssl-devel - библиотеки
Если каких-то пакетов не хватает, установите их после установки
системы. В linux при помощи комманды rpm -i package-1.1.rpm , в
slackware при помощи installpgk package.tgz
Зачистка системы
Еще не встречал такого дистрибутива, после установки которого не
приходилось бы брать напильник (а это нормально - все предусмотреть
нельзя). Итак, что надо сделать сразу после установки.
* Проверка сетевых служб. netstat -atnup выведет список всех сокетов
TCP/UDP, которые открыты на данный момент. Так как у нас только
asterisk сервер, то работать только служба SSH (для удаленного
администрирования) и астериск. Кстати, чем меньше портов вы
обнаружите открыми, тем более "правильно (минимально)" вы
устновили линукс. Комманда netstat выведет номер процесса, и его
pid узнайте название. Далее при помощи ntsysv или chkconfig
откючите ненужную службу.
Например:
[root@navigator root]# netstat -atnup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State P
ID/Program name
tcp 0 0 192.168.0.6:139 0.0.0.0:* LISTEN 912
/smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* LISTEN 912
/smbd
udp 0 0 192.168.0.6:137 0.0.0.0:* 911
/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 911
/nmbd
udp 0 0 192.168.0.6:138 0.0.0.0:* 911
/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 911
/nmbd
udp 0 0 0.0.0.0:33862 0.0.0.0:* 241
76/sim
udp 0 0 127.0.0.1:32846 0.0.0.0:* 502
1/smbd
/etc/init.d/samba stop
chkconfig --del samba (отключает samba из списков автозагрузки).
* Если после выполнения команды netstat -atnup не видно имени
приложения, которое нужно выключить, то нужно выполнить комманду
ps aux | grep #pid процесса, которая покажет имя службы.
Обычно на Red Hat 9 приходится отключать службы cups, nfs, nfslock,
portmap (111 порт), xinetd. Вот список служб, работаюших на моей
системе:
NTPD нужен для синхронизации времени, named так как это еще и DNS
сервер (ай-ай, нехорошо), MySQL - биллинг для Asterisk.
Вы должны добиться того, что netstat -atnup | grep -v asterisk | grep
-v ssh ничего не покажет.
* Всегда четко указывайте на каких интерфейсах слушать. Например,
если для биллинга используется MySQL, он должен слушать только
на 127.0.0.1.
* Измените порт 22 SSH службы на другой. SSH - это дверь в вашу
систему,зачем чтобы кто-то вообще знал что она существует. В Red
Hat в папке /etc/ssh/sshd_config Сделайте:
Port 60022
Protocol 2
ListenAddress x.x.x.x
# неполохо бы запретить root сразу попадать в систему
PermitRootLogin no
Сборка и настройка Asterisk
Для работы asterisk совсем необязательны привилегии root. В идеальном
случае asterisk дулжен работать в chroot окружении на ядре с
GrSecurity? патчами. Это делает вашу систему просто неуязвимой.
Чтобы asterisk мог работать с h323 протоколом, его нужно собрать с
модулем chan_h323 либо chan_oh323. Сначала в asterisk появился модуль
oh323, который был реализован в виде драйвера псевдо-звуковой карты.
Позже Jeremy Macnamara из компании Nufone networks написал собственную
реализацию chan_h323, которая уже была идеологически правильной и
использовала RTP (Real Time Protocol) API.
Алгоритм сборки:
* Скачать pwlib и openh323 с сайта www.openh323.org. Обязательно
надо читать README, где указано какие версии библиотек нужны для
данной версии астериск (для asterisk-1.0.1 нужны pwlib-1.5.2,
openh323-1.12.2) . Далее надо их распаковать прямо в домашней
директории, так как обычно софт, который их использует, ищет их
именно там. Если вы не знаток сборки софта под linux, лучше так и
оставить.
* Собрать pwlib:
cd ~/pwlib
./configure
make
* Собрать openh323:
cd ~/openh323
./configure
make opt
Далее откомпилированные библиотеки
(pwlib/lib/libpt_linux_x86_r.so.1.5.2 и
openh323/lib/libh323_linux_x86_r.so.1.12.2) нужно скопировать туда,
где их найдет chan_h323 и экпортировать переменную LD_LIBRARY_PATH,
например:
export LD_LIBRARY_PATH=/home/asterisk/lib
И перед запуском asterisk нужно также экспортировать эту переменную
окружения. Лучше всего прописать ее в загрузочный файл:
chan_h323.h:31: warning: `sockaddr_in bindaddr' defined but not used ar cr libchanh323.a ast_h323.o
[asterisk@new h323]$
[asterisk@new h323]$ cd ../..
[asterisk@new asterisk-1.0.1]$ make
* Сборка chan_oh323. Пакет нужно скачать с сайта
inaccessnetworks Распаковать и внимательно прочитать README.
Последний пакет на момент написания документа был
asterisk-oh323-0.6.3b и требует openh323-1.13.5 и pwlib-1.6.6).
Нужно отредактировать файл Makefile и указать правильные пути
(asterisk собирался с INSTALL_PREFIX=/home/asterisk):
После это make и make install. В папке etc должен появится файл
oh323.conf, в usr/lib/modules/asterisk файл chan_oh323.
Основные проблемы при сборке h323 модулей обычно из-за несповпадении
версий и отстутвия нужных devel пакетов.
Заключение
Прошу оставлять свои комментарии, рассказы о граблях, пожелания и все
что каается данной темы, чтобы в новой ревизии документа была включена
еще более полная информация об установке asterisk на Linux (прямо тут
или на mail . Документ писался наскоро и по памяти, так что прошу
прошения за возможные неточности и грамматические ошибки.
1173 Прочтений • [Заметки по усстановке Asterisk PBX под Linux (voip asterisk linux)] [08.05.2012] [Комментариев: 0]