Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

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

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Настройка шлюзов Parabel Asteroid FXS/FXO

База знаний Настройка VoIP-оборудования

В данной статье мы рассмотрим настройку шлюзов parable asteroid 32 FXO и 32 FXS, разберем возможные проблемы, а также способы их устранения.

Более краткая статья по настройке шлюзов parabel находится тут.

Все настройки выполняются на centOS 6.9 и FreePBX 13.

Начнём с подключения и настройки одного шлюза к нашей телефонной сети. Для начала нам необходимо подключить Ethernet кабель в локальную сеть, затем подключить COM или USB кабель к серверу телефонии.

Рекомендую предварительно выполнить на сервере tailif /var/log/messages, чтобы увидеть tty подключенного устройство.


После того как кабель подключен нам потребуется настроить утилиту minicom, если она у вас не установлена, выполните yum install minicom –y.

После установки утилиты выполняем minicom –s

minicom -s

Теперь нам надо настроить порт. Выбираем пункт Serial port setup. В пункт serial device вписываем наш tty который мы увидели выполнив tailif /var/log/messages, у нас это ttyUSB0, а также выставляем скорость bps/par/bits – 38400 8N1.

Serial port setup

После внесения всех настроек, нажимаем save setup as dfl

Теперь подключаемся к нашему шлюзу введя minicom. Будет проходит инициализация нашего устройства.

После того, как устройство пройдет инициализацию, вы увидите следующее окно:

После инициализации устройства

·         Параметр Clock Source выставляем в asteroid master

·         В параметр MAC пишем мак-адрес нашего шлюза

·         В параметр DST MAC пишем мак-адрес сетевого интерфейса сервера телефонии

·         Coding law выставляем в A

·         Echo Cancellation (EC) выставляем в off

·         FIFO выставляем в Standart

 

Эхоподавление выключить как на шлюзах, так и в конфигурационных файлах, т.к. лучше оставить приятный фоновый шум, а не включать полную тишину при молчании. 

Затем нажимаем кнопку 9, чтобы настройки сохранились. Чтобы выйти из шлюза, нажимаем ctrl+A и X.

Теперь нам необходимо скачать и собрать драйвер Dahdi.

Информер. Рекомендуется использовать версию драйвера  dahdi_2.9.2+2.9.2-parabel_2.9.2
Находясь в root директории выполняем следующее:

mkdir dahdi
cd dahdi/
wget http://parabel.ru/d/software/dahdi/dahdi_2.9.2+2.9.2-parabel_2.9.2.tar.bz2
tar xvf dahdi_2.9.2+2.9.2-parabel_2.9.2.tar.bz2
cd dahdi_2.9.2+2.9.2-parabel_2.9.2/
./build.sh
./install.sh

Более подробно о настройке Dahdi, можно узнать по следующей ссылке.

Теперь нам надо открыть текстовым редактором файл /etc/dahdi/modules и в самом низу файла прописать quasar. Так мы укажем системе, какой драйвер необходимо использовать

Все остальные драйвера, если они не используются, можно закомментировать.


quasar

Далее нам необходимо объявить span нашего шлюза в файле /etc/dahdi/system.conf

Перед редактированием файла system.conf необходимо останавливать драйвер dahdi командой "dahdi_cfg -s"


В самом низу файла пишем:

dynamic=eth,eth0/24:58:02:2B:01:57,32,1
alaw=1-32
fxsls=1-32 // типа сигналинга зависит от того, какой тип шлюза мы подключаем

В строке dynamic: eht0 – это интерфейс, 32 – количество портов, 1 – источник синхронизации времени, если ставим 1, синхронизация происходит на шлюзе.

Теперь, чтобы настройки вступили в силу, выполняем:

Service asterisk stop
Service dahdi restart
Service asterisk start

Введя команду dahdi_tool, проверим, подключился ли наш шлюз:

DAHDI Telephony Interfaces

Статус OK будет означать, что шлюз подключен успешно (наш шлюз 5-й в списке)

Командой dahdi_test можно посмотреть скорость отклика сервера. Значения должны быть не ниже 99,9:

Dahdi test

Теперь нам необходимо настроить каналы нашего шлюза. Откроем файл /etc/asterisk/dahdi-channels.conf, в нем пишем:

context=from-internal // контекст зависит от того, какой шлюз подключаем. Если FXO то from-trunk или from-dahdi, но лучше from-dahdi
group=1 // группа
channel=1-32 // количество каналов
signalling=fxs_ls // тип сигналинга

Теперь заходим в консоль asterisk, выполняем dahdi restart и dahdi show channels. Мы должны увидеть наши каналы.

 dahdi show channels

Если шлюз FXS, то нам необходимо создать Dahdi extensions в веб интерфейсе FreePBX. Заходим в applicationsàextensions нажимаем добавить dahdi exteinsions.

На вкладке generals в поле display name – вводим внутренний номер

На вкладке advanced в строке signaling выбираем fxo_ls

В строке Dial пишем DAHDI/<номер канала>

Edit extension

Сохраняем внесенные изменения. Теперь наша трубка может звонить

 

Если шлюз FXO, то нам необходимо настроить транк и корректно задать входящий маршрут.

Для начала настроим транк:

·         Перейдем в connectivityàTrunks

·         Добавим dahdi транк

·         Дадим имя транку и в dahdi settings в поле DAHDi Identifier укажем g1 (это группа, которую мы объявляли ранее)

Trunk edit

Теперь нам нужно задать DID который будет приходить по данной линии, в этом на поможет модуль Dahdi Channel DIDs.

·         Перейдем в модуль. Connectivityà Dahdi Channel DIDs

·         Нажимаем add channel did

·         В поле Channel – укажем номер канала

·         В поле description – краткое описание

·         В поле Did – номер, который мы в дальнейшем будем указывать во входящих маршрутах

DAHDI Channel DID's

Входящий маршрут настраиваем в connectivityàinbound routes. Образец настроек представлен на скриншоте ниже:

Inbound routes

Исходящий маршрут настраивается также как и с любым другим транком.

На этом настройка шлюза закончена. Теперь рассмотрим ситуацию когда шлюзов не 1, а например 5. Тут нам уже потребуются немного другие манипуляции

Т.к. данные шлюзы работают в мультикаст режиме по TDMoE, то нагрузка на нашу локальную сеть сильно возрастает.

Информер. TDMoE трафик - ethertype 0xD00D. Он игнорируется IP стеком (0x0800 , 0x0806). Пакет будет забивать всю сеть, если switch не получает, на каком порту получатель (Asteroid). Но при получении первого пакета от Asteroid обновит таблицу mac, и будет слать адресно.

В dahdi_tdmox шлются пробные пакеты 2 раза в секунду, и только получив пакет от Asteroid включается работа (1000 пакетов в секунду).

264 байта * 1000 * 60*60*24 = 22,9 Gb за сутки  с одного шлюза.


Чтобы избежать дополнительной нагрузки на локальную сеть, нам потребуются две вещи:

1. Дополнительный сетевой интерфейс на сервере телефонии

2. Неуправляемый свитч, подключенный к дополнительному сетевому интерфейсу.

Все шлюзы должны быть подключены к нашему новому свитчу.

Для начала настроим наш сетевой интерфейс. IP адрес ему не нужен, т.к. обращения идут только по мак-адресу.

·         В консоли пишем ifup eth1

·         Открываем /etc/sysconfig/network-scripts/ifcfg-eth1 и вносим туда следующие настройки (HWADDR и UUID у вас будут свои)

ifcfg-eth1

Выполняем service network restart

Теперь выполним настройки наших шлюзов. Делаем по аналогии настройки для одного шлюза, но необходимо внести некоторые корректировки:

В параметр DST MAC пишем мак-адрес нового сетевого интерфейса (eth1)

Параметр Clock Source выставляем в asteroid master только на том шлюзе, который будет стоять первым в файле /etc/dahdi/system.conf, на остальных шлюзах выставляем параметр asteroid slave.

Теперь объявим span наших шлюзов. Откроем файл /etc/dahdi/system.conf и в самом низу пишем:

#================2458022B0153==========================
#FXS-1-2458022B0153    30 ports
dynamic=eth,eth1/24:58:02:2B:01:53,32,1
alaw=1-32
fxols=1-32
loadzone=ru
defaultzone=ru
 
#================2458022B0154==========================
#FXS-2-2458022B0154    32 ports
dynamic=eth,eth1/24:58:02:2B:01:54,32,0
alaw=33-64
fxols=33-64
 
#================2458022B0155==========================
#FXS-4-2458022B0155    32 ports
dynamic=eth,eth1/24:58:02:2B:01:55,32,0
alaw=65-96
fxols=65-96
 
#================2458022B0156==========================
#FXS-3-2458022B0156    32 ports
dynamic=eth,eth1/24:58:02:2B:01:56,32,0
alaw=97-128
fxols=97-128
 
 
#================2458022B0155==========================
#FXO-1-2458022B0157    32 ports
dynamic=eth,eth1/24:58:02:2B:01:57,32,0
alaw=129-160
fxsls=129-160

 

Объявлять span необходимо в порядке четности последней цифры мак-адреса шлюза, иначе шлюз может получить статус RED. Также обратите внимание на последнее значение в строках dynamic. 1 – ставится только на одном шлюзе, на остальных ставим 0, чтобы время синхронизировалось только через 1 шлюз.
Теперь, чтобы настройки вступили в силу, выполняем:

Service asterisk stop
Service dahdi restart
Service asterisk start

Dandi telephony interfaces

Как видно на скриншоте, все шлюзы корректно определились

Теперь нам необходимо настроить каналы нашего шлюза. Откроем файл /etc/asterisk/dahdi-channels.conf, в нем пишем:

signalling=fxo_ls
context=from-internal
group=1
channel=1-32
 
group=2
context=from-internal
channel=33-64
signalling=fxo_ls
 
group=3
context=from-internal
channel=65-96
signalling=fxo_ls
 
group=4
context=from-internal
channel=97-128
signalling=fxo_ls
 
group=5
context=from-dahdi
channel=134
signalling=fxs_ls
callerid=asreceived
usecallerid=yes
immediate=no
relaxdtmf=yes
 
Screenshot_13.png

Все остальные настройки проводятся аналогично.

 

Что может пригодится для мониторинга работы наших каналов.

 

tcpdump -i eth1 -s 14 "ether proto 0xd00d" // проверить прохождение пакетов между АТС и шлюзом, работающим по tdmoe

 

tcpdump

watch -n 1 "cat /proc/dahdi/1" // Посмотреть каналы на занятость и источник синхронизации

 

Занятость каналов и источник синхронизации

Скрипт для сбора всей информации по вашим dahdi устройствам, вся информация в дальнейшем будет собрана в архив. Не забудьте дать данному скрипту разрешение на исполнение (chmod + x <имя файла>)

 

#!/bin/bash
 
TMPDIR=`mktemp -d /tmp/dumpdahdi.XXXXXXXXXX`
BN=`basename $TMPDIR`
SECONDS=60
 
echo "Collecting system configuration & statistics."
(
  cd $TMPDIR
 
  dmesg > dmesg
  lspci -vv > lspci -vv
  cat /proc/cpuinfo > cpuinfo
  cp -r /etc/dahdi dahdi
  chmod a+w dahdi
 
  echo "Collecting TDMoX statistics."
  echo "It will take $SECONDS seconds."
  echo 1 > /sys/module/dahdi_tdmox/parameters/rxtx_time
   echo 1 > /sys/module/dahdi_tdmox/parameters/tasklet_time
   echo > /proc/dahdi/tdmox_stats
   echo > /proc/dahdi/dahdi_dynamic_stats
 
  NOW=`date +'%Y-%m-%d-%H-%M-%S'`
  mkdir $TMPDIR/$NOW; cd $TMPDIR/$NOW
  cp -r /proc/dahdi procdahdi
  chmod a+w procdahdi
  /sbin/ifconfig > ifconfig
 
  secs=$SECONDS
  while [ $secs -gt 0 ]; do
       echo -ne "$secs\033[0K\r"
       sleep 1
       : $((secs--))
  done
 
  NOW=`date +'%Y-%m-%d-%H-%M-%S'`
  mkdir $TMPDIR/$NOW; cd $TMPDIR/$NOW
  cp -r /proc/dahdi procdahdi
  chmod a+w procdahdi
  /sbin/ifconfig > ifconfig
 
  echo "Compressing files."
  cd /tmp
  tar --remove-files -cf dahdistat4parabel.tgz $TMPDIR
)

 

 dumpdahdi

 

asterisk, dahdi, настройка, тип, TDMoE, шлюз, трафик, FreePBX, Channel, Time, callerid, centOS