Сер 172012
 

Установка VoiP сервера Asterisk IP PBX на OS FreeBSD Устарела

 

Автор: Cancer.

Вот возникла как-то задача соединить Офис и Базу через 2 Шлюза DVG 2004S и DVG 3004S
Офис и база объединены Радиоканалом LAN.
И нужно было соединить АТС-Шлюз в офисе и Шлюз-АТС на базе по средствам VoiP сервера.
Как обычно задал на форуме что по чем и что лучше, мне заявили что мол Астериск супер.
Ну вот и решил его пробовать.

Шлюзы DVG 2004S и DVG 3004S

Схема сети

Схема сети!

Asterisk™ – это завершенное решение телефонной станции основанное на технологии VoIP.Работает Asterisk на платформе Linux и обеспечивает все возможности, которые Вы ожидаете от АТС и даже больше.Asterisk совместим практически со всеми современными стандартами и оборудованием, изпользуя сравнительно недорогое аппаратное обеспечение. Asterisk предоставляет сервис голосовой почты, конференц-связи, очереди вызовов. Поддерживает технологии Caller IDADSISIP и H.323. Asterisk поддерживает широкий диапазон протоколов TDM для обработки и передачи голосового трафика через средства традиционной телефонии. Asterisk поддерживает Американский и Европейский типы сигнализаций, используемых в бизнес приложениях. Asterisk позволяет построить мост между Интегрированными сетями передачи голоса и данных следующего поколения, и существующей инфраструктурой. Asterisk не только поддерживает традиционное телефонное оборудование, но и позволяет использовать его дополнительные возможности. Используя IAX™ (Inter-Asterisk™ eXchange) VoIP протокол, возможно безболезненное объединение голоса и данных в сетях. При использовании пакетной передачи голоса, возможно посылать данные, такие как например URL и изображения, присоединённые к голосовому трафику, то есть позволяет сильно интегрировать информацию. Asterisk включает в себя центральное ядро с четырьмя API для модульной загрузки приложений телефонии, аппаратных интерфейсов, обработки формата файлов и кодеков. Это позволяет прозрачно переключаться между всеми поддерживаемыми интерфейсами, соединять разнообразные голосовые системы с единой средой передачи данных. Asterisk первоначально был разработан на GNU/Linux для x/86. Известны компиляции работающие на OpenBSDFreeBSD, and Mac OS. Перенос на другие UNIX-платформы не должен вызвать затруднений и возможен при наличии времени и необходимых навыков. Существует Asterisk, доступный для тестирования на платформе Debian, он поддерживается Марком Пирселлом (Mark Purcell)

Устанавливаем Asterisk 1.4

 

//> cd /usr/ports/net/asterisk /usr/ports/net/asterisk/> make config

 

| [X] OGGVORBIS Enable Ogg Vorbis support
| [X] ODBC Enable ODBC support
| [ ] POSTGRES Enable PostgreSQL support
| [ ] RADIUS Enable RADIUS accounting support
| [X] SNMP Enable SNMP support
| [ ] H323 Enable H.323 support
| [X] FREETDS Enable FreeTDS support
| [X] JABBER Enable Jabber and Gtalk support
| [X] SQLITE Enable SQLITE support
| [X] CODEC_PATCH Apply codec negotiation patch
| [ ] ILBC Enable iLBC codec
| [ ] MISC_PATCHES Apply additional patches
//> make && make install && make clean


Далее привожу основные конфиги
Сразу говорю все что там в конфигах было оставлял без изменений, токо добавлял это все вниз кадого конфига
Да и еще решетки(#) конфиги asterisk`a не переваривают

//> ee /usr/local/etc/asterisk/sip.conf
; Только СИП пользователи

; Для подключения Шлюза Офис D-Link 2004S [200] type=friend host=dynamic username=200 secret=123 nat=no canreinvite=no context=office callerid=Office <200> allow=gsm allow=ulaw allow=alaw

; База D-Link 3004S [401] dtmfmode=auto type=friend host=dynamic username=401 secret=пароль nat=no canreinvite=no context=office callerid=Base <401> disallow=all allow=g729 allow=g723 allow=g723.1 allow=gsm allow=ulaw allow=alaw

; База D-Link 3004S [402] dtmfmode=auto type=friend host=dynamic username=402 secret=пароль nat=no canreinvite=no context=office callerid=Base <402> disallow=all allow=g729 allow=g723 allow=g723.1 allow=gsm allow=ulaw allow=alaw

; База D-Link 3004S [403] dtmfmode=auto type=friend host=dynamic username=403 secret=пароль nat=no canreinvite=no context=office callerid=Base <403> disallow=all allow=g729 allow=g723 allow=g723.1 allow=gsm allow=ulaw allow=alaw

; База D-Link 3004S [404] dtmfmode=auto type=friend host=dynamic username=404 secret=пароль nat=no canreinvite=no context=office callerid=Base <404> disallow=all allow=g729 allow=g723 allow=g723.1 allow=gsm allow=ulaw allow=alaw

; Обычный SIP пользователь [201] type=friend host=dynamic username=201 secret=пароль nat=no canreinvite=no context=office callerid=user1 <201> allow=gsm allow=ulaw allow=alaw

; Пользователь который звонит внутри фирмы,а по ; межгороду через sipnet.ru с зарегистрированного аккаунта. [202] type=friend host=dynamic username=202 secret=пароль nat=no canreinvite=no context=office callerid=user2 <202> allow=gsm allow=ulaw allow=alaw

; для 202 номера подключение к sipnet.ru [sipnet_202] host=sipnet.ru username=SIP_ID secret=пароль fromuser=SIP_ID fromdomain=sipnet.ru type=peer context=local disallow = all allow = alaw allow = ulaw allow = g729 nat=no canreinvite=nonat insecure=invite dtmfmode=info

Да и для того что бы была слышимость в обе стороны, когда звоните через SIPNET нужно пробросить порты 10000-20000 на машину с Asterisk'ом

 

//> ee /usr/local/etc/asterisk/extensions.conf
[office] ; Шлюз офис D-Link 2004 exten => 200,1, Dial(SIP/200,40) exten => 200,2, Playback(vm-nobodyavail) exten => 200,3, Hangup

; Номер 400 для того что бы на него позвонили ; и поподали на один из свободных 401 402 403 404 exten => 400,1, Queue(queue1|tT|||60) exten => 400,n, Hangup

; D-Link База 3004 exten => 401,1, Dial(SIP/401,40) exten => 401,2, Hangup

; D-Link База 3004 exten => 402,1, Dial(SIP/402,40) exten => 402,2, Hangup

; D-Link База 3004 exten => 403,1, Dial(SIP/403,40) exten => 403,2, Hangup

; D-Link База 3004 exten => 404,1, Dial(SIP/404,40) exten => 404,2, Hangup

, Voicemail(201@default) exten =>

, Voicemail(202@default) exten =>

; Номер 300 по которому можно услышать голосовые сообщения ; введя номер голосового ящика и его пароль exten =>300,1,VoiceMailMain(300)

; Конференция 999 exten => 999,1, MeetMe(999)

include => default


Добавляем очередь в конфиг queues.conf

// ee /usr/local/etc/asterisk/queues.conf
[queue1] music = default strategy = rrmemory member => SIP/401 member => SIP/402 member => SIP/403 member => SIP/404


Добавляем строку для автозапуска в /etc/rc.conf

//> echo 'asterisk_enable="YES"' >> /etc/rc.conf


Ну и запускаем сам Asterisk

//> /usr/local/etc/rc.d/asterisk start

Для того что что бы Работала конференция 999 нужно проделать следующее

//> cp /usr/local/lib/zaptel/zaptel.ko /boot/modules/ //> cp /usr/local/lib/zaptel/ztdummy.ko /boot/modules/

Запускаем модули

//> kldload -v /boot/modules/ztdummy.ko //> kldload -v /boot/modules/zaptel.ko

Добавляем в автозапуск

//> echo 'ztdummy_load="YES"' >> /boot/loader.conf
//> ee /usr/local/etc/asterisk/meetme.conf
[general] audiobuffers=32 [rooms] ; conf=>Номер конференции,пароль conf => 999,1234

Для того что бы пользователи получали уведомления на почтовый ящик по средствам sendmail нужно проделать такое :)

//> ee /usr/local/etc/asterisk/voicemail.conf
[general] format=wav49|gsm|wav serveremail=asterisk attach=yes skipms=3000 maxsilence=10 silencethreshold=128 maxlogins=3emaildateformat=%A, %d %B %Y at %H:%M:%S mailcmd=/usr/sbin/sendmail -t sendvoicemail=yes

[zonemessages] eastern=America/New_York|’vm-received’ Q ‘digits/at’ IMp central=America/Chicago|’vm-received’ Q ‘digits/at’ IMp central24=America/Chicago|’vm-received’ q ‘digits/at’ H N ‘hours’ military=Zulu|’vm-received’ q ‘digits/at’ H N ‘hours’ ‘phonetic/z_p’ european=Europe/Copenhagen|’vm-received’ a d b ‘digits/at’ HM

= пароль, Sergey Batkovich, batkovich@domain.ru, attach=yes

Да и если кому нужны тут Звуковые файлы, для того что бы Asterisk говорил по русски 🙂

Asterisk sounds
файл скачан размер размещён примечание
asterisk.1.4.coresounds.ru.tar.bz2
2129 1.42mb 2008-11-06 Звуки для Asterisk'a на русском языке, качество конечно не супер!

 

Установка Asterisk-gui-0.0.1r20070801_3


Вот еще можно поставить довольно приятную Веб морду asterisk-gui

//> cd /usr/ports/www/asterisk-gui/ /usr/ports/www/asterisk-gui/> make config
| [X] SIP_QUEUES In queues register users as SIP, not Agents
| [X] SAMPLE_CONFIG Install sample configuration files
/usr/ports/www/asterisk-gui/> make install clean


Включаем поддержку Веб админки

//> /usr/local/etc/asterisk/http.conf
[general] enabled=yes enablestatic=yes bindaddr=ip_tachki bindport=8088 prefix=asterisk

Перезапустим Asterisk

//> asterisk -r asterisk*CLI> reload

Тут задаем логин и пароль для Веб Админки добавив вот такую запись в самый низ

//> /usr/local/etc/asterisk/manager.conf
[логин] secret = пароль read = system,call,log,verbose,command,agent,config,user write = system,call,log,verbose,command,agent,config,user
//> asterisk -r asterisk*CLI> reload

И заходим по такой ссылке и отвечаем на вопросы установки
http://ip_tachki:8088/asterisk/static/config/setup/install.html

Веб морда астериска

 

musiconhold.conf Настройка параметров «музыки при удержании» MusicOnHold cdr_mysql.conf Настройка хранения записей о звонках в MySQL manager.conf Настройка интерфейса Manager meetme.conf Настройка конференций (meetme) mgcp.conf Настройка параметров MGCP-устройств parking.conf Параметры «парковки» вызовов «Call parking» voicemail.conf Параметры голосовой почты (VoiceMail) agents.conf Агенты Asterisk extensions.conf Номерной план Asterisk iax.conf Настройка IAX-устройств modem.conf Настройка ISDN с использованием ISDN4Linux vpb.conf Настройка аппаратуры Voicetronix alsa.conf Настройки звукового драйвера ALSA для консольного пользователя festival.conf Параметры работы с синтезатором речи festival modules.conf Настройка модулей Asterisk zapata.conf Настройка аналоговых устройств телефонии digium asterisk.conf Определение расположения каталогов Asterisk indications.conf Настройка параметров аналоговых АТС различных стран rpt.conf Параметры протокола rtp logger.conf Параметры журналирования Asterisk


Клиент для IP телефонии X-lite можно скачать здесь

Документация
http://voip.rus.net/
http://asterisk.org.ru/
http://asterisk.org/
http://asteriskforum.ru/

Буду дописывать по мере успеха!!!(P.S понимаю что статья не идеальна, но все еще впереди)

PS….Виталий Сергеевич, посвящается вам за ваш вклад в мое развитие!

Взято:

http://www.lissyara.su/articles/freebsd/programms/voip_asterisk_ip_pbx/

Гру 292011
 

Учимся использовать screen

 

Вы залогинились на ваш удаленный сервер через ssh, радостно стучите по клавиатуре, делая свои какие-то админские дела и опа! Символы перестали печатться и вывалилось то самое сообщение, которое, порой, вызывает непреодолимое желание разбить клавиатуру. Connection closed. Знакомая ситуация? Да-да, ваша сессия только что аварийно оборвалась и все придется делать заново… Этого можно избежать, если использовать screen. Он не только позволит сохранить вашу сессию в целости и сохранности, но еще и позволит держать открытыми несколько сессий в одном окошке терминала

Что такое screen?
Сначала посмотрим man-страницу: “Screen – это полноэкранный оконный менеджер, который позволяет разделить физический терминал между несколькими независимыми процессами (обычно интерактивными облочками)”.
У screen есть несколько отличительных особенностей, которые могут сильно помочь при выполнении задач на удаленных серверах через ssh. Я расскажу о трех, самых часто используемых мной фичах: многооконность, логирование и сессии. За более подробными деталями придется обратиться к man-странице.

Установка screen
Скорее всего, screen уже есть в вашей системе. Проверить это можно командой

$ which screen

Если which не дал результатов, то установите screen при помощи пакетного менеджера вашей системы. На моих серверах, в основном, CentOS и Debian, поэтому я ставлю screen так:

# yum install screen (для CentOS)
# apt-get install screen (для Debian)

Попадается и FreeBSD, в этом случае я использую порты:

# cd /usr/ports/sysutils/screen
make install clean

Использование screen
Screen запускается из командной строки также, как и любое приложение 🙂

$ screen

Вы можете получить сообщение о том, что screen запущен, а можете и не получить… Зависит от вашей системы. Если вы не получили сообщения, то вы можете подумать, что ничего не произошло. Однако это не так. Вы уже внутри терминала, запущенного в screen. Это нормальный полнофункциональный шелл, за исключением нескольких специальных команд. Screen использует клавиатурную комбинацию Ctrl+A для подачи команд терминалам внутри себя. Попробуйте нажать Ctrl+A, а затем ?
Вы увидите примерно следующее:

Screen key bindings, page 1 of 2.

Command key: ^A Literal ^A: a

break ^B b lockscreen ^X x reset Z
clear C log H screen ^C c
colon : login L select ” ‘
copy ^[ [ meta a silence _
detach ^D d monitor M split S
digraph ^V next ^@ ^N sp n suspend ^Z z
displays * number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
help ? pow_detach D width W
history { } prev ^P p ^? windows ^W w
info i readbuf < wrap ^R r
kill K redisplay ^L l writebuf >
lastmsg ^M m remove X xoff ^S s
license , removebuf = xon ^Q q
[Press Space for next page; Return to end.]

Screen воспринимает командные клавиатурные комбинации после нажатия Ctrl+A. Вы можете изменить это поведение при помощи конфиг-файла $HOME/.screenrc

Многооконность
Screen, как и большинство оконных менеджеров, поддерживает работу с несколькими окнами. Это очень удобно для выполнения параллельных задач без открытия новых ssh-сессий. Например, у меня постоянно открыто четыре или пять сессий с несколькими задачами в каждой. Раньше мне бы пришлось открыть порядка 15 терминалов, логинов, сессий.. Утомительно, не так ли? Эти неудобства полностью решает screen. Теперь я вполне могу обойтись одним терминалом.

Новое окно открывается комбинацией клавиш “Ctrl+a c”. После нажатия вы увидите новый терминал с вашим приглашением в том же окне. При этом предыдущие окна также продолжают работать. Давайте попробуем: запустите screen и в нем top

Mem: 506028K av, 500596K used, 5432K free,
0K shrd, 11752K buff
Swap: 1020116K av, 53320K used, 966796K free
393660K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2

Теперь откройте новое окно, нажав “Ctrl+a c”

[boombick@server ] $

Вернитесь обратно, нажав Ctrl+a n

Mem: 506028K av, 500588K used, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K used, 966796K free
392220K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3

top остался в прежнем состоянии. Вы можете создать несколько окон и переключаться между ними используя Ctrl+a n для переключения на следующеее окно и Ctrl+a p для переключения на предыдущее. При этом каждый запущенный процесс останется в рабочем состоянии.

Отключаемся от screen
Есть два способа отключиться от screen: первый – это просто разлогиниться. Вы можете использовать клавиатурную комбинацию Ctrl+a K или просто набрать exit. Этот способ “убьет” текущее окно, если у вас их несколько или совсем остановит screen.
Второй способ заключается в отсоединении. Этот способ оставляет текущий процесс запущенным и просто отключает вас от терминала. Например, если вы через ssh-сессию запускаете какой-то очень длительный процесс, не требующий вашего внимания, то вы можете просто отключиться от screen при помощи Ctrl+a d. Это вернет вас обратно в исходную оболочку. Все процессы, запучшенные в screen, при этом остаются работающими и вы можете подключиться к ним позже.

Подключение к сессии
Вы компилируете большую программу на удаленном сервере, используя screen. И конечно же, по законам Мэрфи, соединение обрывается по независящим от вас причинам. Не стоит впадать в панику, screen все сохранил 🙂 Просто соединитесь с сервером еще раз и посмотрите запущеные под screen процессы при помощи

[root@server root]# screen -ls
There are screens on:
31619.ttyp2.server (Detached)
4731.ttyp2.server (Detached)
2 Sockets in /tmp/screens/S-root.

В этом примере запущено две screen-сессии. Для подключения к нужной из них используйте команду

[root@server root]#screen -r 31619.ttyp2.server

Просто используйте screen с флагом r и именем сессии для повторного подключения. Это очень удобно. Можно, например, запустить какой-то длительный процесс на работе и, вернувшись домой, продолжить контроль за его выполнением.

Логирование
Мне кажется очень важным порой сохранять полный лог своих действий. К счастью, screen легко с этим справляется. Просто активируйте логирование нажатием Ctrl+a H. Screen будет продолжать логирование на протяжении всего процесса работы. Бывает очень полезно вернуться назад и посмотреть порядок необходимых действий.

И еще немного…
Screen может вести мониторинг активности окна. Если вы качаете что-то большое, компилируете программу или просто выполняете длительный процесс, вы можете долгое время наблюдать пустой терминал без признаков активности. А процесс, тем временем, продолжает выполняться. Или, наоборот, смотреть на поток отладочной информации, ожидая окончания процесса. Для начала слежения перейдите в терминал, который вы хотите наблюдать и нажмите Ctrl+a M для слежения за активностью (сработает при появлении новой информации) или Ctrl+a _ для слежения за бездействием (сработает при прекращении поступления информации в терминал). Затем вы можете спокойно переключиться в другое окно или создать новое. При наступлении события, screen предупредит вас об этом сообщением с номером окна в заголовке терминала. Для быстрого переключения в это окно используйте Ctrl+a ” (это символ кавычки). Вы увидите список всех активных окон на данный момент. Для перехода в нужное можно использовать стрелки или просто набрать номер нужного окна. Для прекращения наблюдения перейдите в нужное окно и отмените мониторинг той же командой. Например, для прекращения наблюдения за активностью нажмите Ctrl+a M

 

Информация взята http://boombick.org/blog/posts/22

Гру 232011
 

Устанавливаем Webmin на FreeBSD сервер.

Webmin мне необходим для удобного управления сайтами и т.д. в Веб Браузере.

Webmin — это web-интерфейс для удобного администрирования Unix систем. Используя любой баузер, Вы можете настраивать аккаунты юзеров, сервер Apache, DNS, файловый сервер и многое другое.

cd /usr/ports/sysutils/webmin

make install clean

 

Редактируем /etc/rc.conf для запуска прописываем webmin_enable=”YES”

После удачного компилирования необходимо запустить установочный файл.

/usr/local/lib/webmin/setup.sh

Log file directory [/var/log/webmin]: [Жмем Enter]

Full path to perl (default /usr/bin/perl): [Жмем Enter]

Web server port (default 10000): [Жмем Enter]

Login name (default admin): [Жмем Enter]

Login password: [Ввводим ваш пароль]

Password again:[Ввводим ваш пароль]

Use SSL (y/n): [y]

 

После проделанных манипуляций мы можем запускать сервер:

/usr/local/etc/rc.d/webmin start

https://your-domain.com:10000/

Гру 232011
 

Red Hat/Fedora Core/CentOS Linux

В Red Hat/Fedora Core/CentOS Linux- подобных наберите следующую команду чтобы получить список установленных программ

# rpm -qa | less

Debian Linux

В Debian Linux список установленных пакетов можно увидеть так:

# dpkg –get-selections

Ubuntu Linux

В Ubuntu Linux список установленных программ смотрим так:

# sudo dpkg –get-selections

FreeBSD

В FreeBSD установленные программы можно посмотреть так:

# pkg_info | less
# pkg_info apache

Используйте команду pkg_version чтобы показать общий список версий всех установленных пакетов в FreeBSD:

# pkg_version | less
# pkg_version | grep ‘lsof’

OpenBSD

В OpenBSD команда use pkg_info так же ведет себя как и в FreeBSD и покажет список установленных пакетов:

# pkg_info | less
# pkg_info apache