The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Заметки по усстановке Asterisk PBX под Linux (voip asterisk linux)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: voip, asterisk, linux,  (найти похожие документы)
From: litnimax <litnimax@asterisk-support.ru.> Date: Mon, 26 Mar 2006 14:31:37 +0000 (UTC) Subject: Заметки по усстановке Asterisk PBX под Linux Оригинал: http://www.asterisk-support.ru/documentation/bulk/LinuxAsteriskSetup В данной статье пойдет речь не об установке какого-то либо дистрибутива линукс, а об общих мерах, которые нужно предпринять для стабильной и безопасной работы 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. Вот список служб, работаюших на моей системе: kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off random 0:off 1:off 2:on 3:on 4:on 5:on 6:off keytable 0:off 1:on 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off named 0:off 1:off 2:off 3:on 4:off 5:off 6:off ntpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 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 коммандой useradd - asterisk. Сбросьте привилегии root su asterisk -. Из-под экаунта пользователя asterisk скачайте пакет с сайта. Например: [root@new root]# su asterisk - [asterisk@new asterisk]$ [asterisk@new asterisk]$ mkdir tmp [asterisk@new asterisk]$ cd tmp [asterisk@new tmp]$ wget ftp://ftp.asterisk.org/pub/asterisk/asterisk-1.0.1.tar.gz --17:50:14-- ftp://ftp.asterisk.org/pub/asterisk/asterisk-1.0.1.tar.gz => `asterisk-1.0.1.tar.gz' Resolving ftp.asterisk.org... done. Connecting to ftp.asterisk.org[69.16.138.164]:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /pub/asterisk ... done. ==> PORT ... done. ==> RETR asterisk-1.0.1.tar.gz ... done. [<=> ] 9,558,497 146.29K/s 17:51:19 (146.29 KB/s) - `asterisk-1.0.1.tar.gz' saved [9558497] [asterisk@new tmp]$ tar zxf asterisk-1.0.1.tar.gz [asterisk@new tmp]$ cd asterisk-1.0.1 [asterisk@new asterisk-1.0.1]$ vi Makefile Перед сборкой asterisk отредактируйте Makefile и измените префик на 'INSTALL_PREFIX=/home/asterisk'. Далее запускаете make и make install. * Нужно поправить разрешения на ztdummy и другие devices: chown -R asterisk:root /dev/zap * Вместо автоматической подгрузки модулей подгружайте их руками: [asterisk@new asterisk-1.0.1]$ cd ~/etc/asterisk/ [asterisk@new asterisk]$ cat modules.conf ; ; Asterisk configuration file ; ; Module Loader configuration file ; [modules] autoload=no load => res_features.so load => res_musiconhold.so load => res_crypto.so load => res_indications.so load => res_monitor.so load => res_agi.so load => res_adsi.so load => chan_sip.so load => chan_iax2.so load => pbx_config.so load => pbx_wilcalu.so ; Auto dialer load => pbx_spool.so ; outgoing spool load => app_setcallerid.so load => app_senddtmf.so load => app_macro.so load => app_authenticate.so load => app_waitforring.so load => app_db.so load => app_transfer.so load => app_setcidnum.so load => app_setcidname.so load => app_cut.so load => app_read.so load => app_setcdruserfield.so load => app_eval.so load => app_exec.so load => app_talkdetect.so load => codec_ilbc.so load => codec_gsm.so load => codec_ulaw.so load => format_gsm.so load => format_wav.so load => format_ilbc.so load => cdr_csv.so load => app_cdr.so load => cdr_manager.so load => app_privacy.so load => app_verbose.so load => app_dial.so load => app_adsiprog.so load => app_voicemail.so load => app_playback.so load => app_mp3.so ;load => chan_oh323.so load => chan_zap.so load => app_meetme.so load => app_echo.so load => codec_g729.so [global] Установка openh323 и pwlib Чтобы 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 нужно также экспортировать эту переменную окружения. Лучше всего прописать ее в загрузочный файл: [asterisk@new asterisk]$ tail ~/.bash_profile PATH=$PATH:$HOME/bin export PATH unset USERNAME export PWLIBDIR=/home/asterisk/lib/pwlib export OPENH323DIR=/home/asterisk/lib/openh323 export LD_LIBRARY_PATH=/home/asterisk/lib:$PWLIBDIR/lib:$OPENH323DIR/lib export PATH=/home/asterisk/usr/sbin:$PATH export ASTERISK_PROMPT="asterisk %d %t %# " и запускать астериск из скриптов загрузки: su - asterisk -c asterisk * Сборка chan_h323: [asterisk@new tmp]$ cd asterisk-1.0.1 [asterisk@new asterisk-1.0.1]$ cd channels/h323 [asterisk@new h323]$ make g++ -g -c -fno-rtti -o ast_h323.o -march=i686 -DPBYTE_ORDER=PLITTLE_ENDIAN -DN DEBUG -DDO_CRASH - DDEBUG_THREADS -pipe -Wall -fPIC -DP_LINUX -D_REENTRANT -D_GNU_SOURCE -DP_HAS_S EMAPHORES -DP_SSL - DP_PTHREADS -DPHAS_TEMPLATES -DPTRACING -DP_USE_PRAGMA -I../../include -I/home/asterisk/pwlib/include/ptlib/unix -I/home/asterisk/pwlib/include -I/home/asterisk/openh323/include -Wno-missing-prototypes -Wno-missing-declarations ast_h323.cpp 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): OPENH323DIR=/home/asterisk/openh323 PWLIBDIR=/home/asterisk/pwlib ASTERISKINCDIR=/home/asterisk/tmp/asterisk-1.0-RC2/include ASTERISKMODDIR=/home/asterisk/usr/lib/asterisk/modules ASTERISKETCDIR=/home/asterisk/etc/asterisk OH323WRAPLIBDIR=/home/asterisk/lib После это make и make install. В папке etc должен появится файл oh323.conf, в usr/lib/modules/asterisk файл chan_oh323. Основные проблемы при сборке h323 модулей обычно из-за несповпадении версий и отстутвия нужных devel пакетов. Заключение Прошу оставлять свои комментарии, рассказы о граблях, пожелания и все что каается данной темы, чтобы в новой ревизии документа была включена еще более полная информация об установке asterisk на Linux (прямо тут или на litnimax@asterisk-support.ru.">mail . Документ писался наскоро и по памяти, так что прошу прошения за возможные неточности и грамматические ошибки.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, Кстати (?), 20:45, 12/11/2009 [ответить]    [к модератору]
  • +/
    usr/lib/modules/asterisk

    поменять на


    /usr/lib/asterisk/modules

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor