Сервер IP телефонии Raspberry Asterisk

У нас стоят задачи:

  • сделать полнофункциональный сервер IP телефонии
  • подключить 1-2 GSM телефонных номера
  • минимизировать стоимость решения
  • уменьшить энергопотребления
  • повысить надежность и время восстановления после сбоев

Для этих задач вполне подходит миникомпьютер Raspberry Pi.

Стоимость решения:

  • миникомпьютер Raspberry Pi – 2100 руб.
  • блок питания USB 1А – 250 руб.
  • кабель USB 50 руб.
  • флешка SD card 16гб класс 10 – 500 руб.

ИТОГО: 2900 руб.

Для надежности мы сделали “корпус” из обычной бутылки от минеральной воды. На корпусе проделали множество дырок для вентиляции. Блок питания нужно покупать не менее 1А, если Вы собираетесь использовать 2 GSM USB, то потребуется более мощный блок питания. Примечание – если блок питания недостаточно мощный, то может не работать сетевой интерфейс, не загружаться операционная система и т.п.

raspberry

Установка и настройка:

Установка FreePBX на Raspberry Pi

Мы воспользуемся бесплатным проектом raspberry-asterisk.org , что позволит нам быстро и просто установить FreePBX на Raspberry Pi. Установка состоит в распаковке образа настроенной операционной системы Linus на SD карту:

  • Загружаем образ операционной системы с этой страницы;
  • Используя программу Win32DiskImager (Windows) или dd (Linux) распаковываем образ на SD  карту (требуется SD карта не менее 4Гб);
  • Вставляем подготовленную SD карту в Raspberry, подключаем устройство к локальной сети, к монитору (или телевизору) и включаем питание.

Получить доступ к управлению миникомпьютером можно 2 способами:

  1. Когда Raspberry загрузится, смотрим на нашем маршрутизаторе(шлюзе), какой IP адрес был выделен устройству DHCP. Теперь, мы можем войти на него через SSH или http, указав этот IP;
  2. Используем монитор/телевизор и подключенную по USB клавиатуру.

Для входа используйте следующую комбинацию логин / пароль:

SSH: root / raspberry
Доступ через WEB браузер к FreeBX: admin / admin

Для удобства можно установить файловый менеджер midnight commander (в консоли запускается командой mc):

apt-get install mc

В стандартном образе операционной системы он почему-то не установлен.

Смена стандартных паролей

Первым делам необходимо сменить стандартные пароли на личные. Для этого в консоли SSH набираем:

# passwd root

и вводим новый пароль.

Для доступа к FreePBX пароль меняется так:
меню Admin -> раздел Administrators -> выбираем admin и меняем пароль.

Установка статического IP адреса Raspberry Pi

Чтобы DHCP в будущем не сменил IP адрес миникомпьютеру Raspberry при его очередной перезагрузке, необходимо назначить ему статический IP адрес.

В консоли SSH, открываем для редактирования файл конфигурации сети /etc/network/interfaces:

nano /etc/network/interfaces

и вместо строчки (ее можно закомментить знаком #)

iface eth0 inet dhcp

вставляем:

iface eth0 inet static
  address ***НУЖНЫЙ IP***
  netmask 255.255.255.0
  gateway 192.168.0.1
  dns-nameservers 8.8.8.8

Перезагружаем настройки сетевого интерфейса:

service networking restart

Настройка USB модемов для работы с FreePBX.

GSM USB модемы продают многие – МТС, Мегафон, Билайн и т.п. У каждой модели есть свои особенности настройки, мы же для примера возьмем Huawei e1550. Для установки драйверов и модуля chan_dongle запустите в командной строке Linux:
install-dongle

Проверка USB модема:
Подключаемся к модему. Устройство необходимо перевести в режим – “только модем” для этого подключимся к модему через его com-порт.
minicom -D /dev/ttyUSB0

ВАЖНО! Находясь в программе minicom вводимые и выполняемые команды не видны, выводится лишь от отчёт ok или error, но это не проблема копируем команды Ctrl+c вставляем Ctrl+v жмём Enter
Включаем режим “только модем”:
AT^U2DIAG=0
Для новых модемов E171 с прошивкой 21.156.00.00.143 и IMEI начинается с 8614 требуется другая команда для включения режима модема
AT^SETPORT=”A1,A2;1,2,3″
Проверить текущее состояние счетчика и блокировки можно командой, а то вдруг его уже разлочили или забыли заблокировать, бывает и такое…
AT^CARDLOCK?
в ответ модем выдаст
CARDLOCK: A,B,0
где A -> 2- означает, что симлока нет, 1-если модем залочен
B -> количество оставшихся попыток разблокировки.
У нового модема ==10
Узнать IMEI, запоминаем, а лучше записываем
AT+CGSN
Перезагрузить модем
AT+CFUN=1,1
Выйти из minicom – после выполнения перезагрузки модема программа порядка 5-10 секунд не реагирует, ждём, после чего для выхода выполняем [ctrl+a q] Enter Если не получается, перезапускаем консоль и переподключаем модем физически.

Проверка включения активации голосового режима:
AT^CVOICE=?
^CVOICE:(0)
OK

Переключение режимов работы:
AT^U2DIAG=0    –   Только модем
AT^U2DIAG=1    –   Модем + CD
После ввода команды, появится “OK”

Описание активации голосового режима, прошивки модемов, снятия блокировки оператора и т.п. выходит за рамки данной статьи.

Как посмотреть устройства в командной строке астериск:
dongle show devices

состояние устройства:
dongle show device state dongle0

На WEB странице конфигурирования FreePBX создаем новый Custom Trunk. В поле Custom Dial String прописываем настройку исходящих звонков:

Dongle/dongle0/$OUTNUM$

dongle

Применяем настройки для FreePBX. Настройка закончена. После окончательной настройки можно сделать резервную копию образа с SD карты, чтобы в случае сбоя можно было легко и быстро восстановить систему. Решения на Raspberry PI + Asterisk вполне достаточно для обработки 4-8 одновременных звонков.