Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недорогой способ это сделать — развернуть бесплатный сервер VoIP с открытым исходным кодом Asterisk на виртуальной машине. В статье для примера мы использовали Ubuntu 20.04, но этот рецепт подойдет и для других версий популярного дистрибутива — 18.04 и 18.10, а также (в теории, мы не проверяли) для актуальных версий Debian.

Asterisk + Ubuntu + VDS = IP-PBX


Существуют и другие серверы VoIP, при этом некоторые коммерческие продукты ограниченное время можно использовать бесплатно. Считается, что они гораздо проще в настройке, но требуют для работы Windows или установки с собственного дистрибутива Linux. Это сразу отсекает большинство недорогих VDS, а собственное железо с каналом передачи данных или аренда выделенного аппаратного сервера обходятся дороже. Бесплатный Asterisk разворачивается на любой виртуальной машине, к тому же внедрить его не так сложно. Для этого не потребуется даже сборка из исходных текстов. С помощью Asterisk нетрудно наладить телефонную связь между IP-телефонами (аппаратными и программными), а если подключиться к внешнему провайдеру VoIP, то за небольшую сумму денег вы получите полноценную IP АТС (IP-PBX). Если потребность в ней исчезнет, отказаться можно в любой момент — аренда выгоднее вложений в железо и софт.

Установка Asterisk


Для тестов мы взяли недорогую виртуальную машину, но боевая конфигурация зависит от потребностей заказчика. Здесь проявляется главное преимущество VDS: ресурсов можно заказать по минимуму, а потом добавить, если возникнет такая потребность. Обычно для полноценной работы АТС нужно не меньше 2 ГБ оперативной памяти, но если их будет много, отказаться от лишних ресурсов нетрудно.



Инсталляция сервера VoIP на Ubuntu 20.04 — самая простая часть квеста. Необходимый пакеты есть в официальном репозитории дистрибутива и добавляются в систему парой команд. В Ubuntu мы используем механизм повышения привилегий sudo, а в Debian он скорее всего не понадобится, поскольку там практикуются интерактивные сеансы с правами root:

sudo apt-get update
sudo apt-get install asterisk asterisk-dahdi

Запуск и остановка службы Asterisk производятся через systemd, а посмотреть ее статус после инсталляции можно с помощью команды systemctl:

sudo systemctl status asterisk

Если все прошло удачно, результат будет примерно таким:



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

sudo systemctl start asterisk
sudo systemctl stop asterisk
sudo systemctl restart asterisk

Пока все стандартно, но самая увлекательная часть нашего приключения впереди. Сервер VoIP нужно настроить.

Настройка Asterisk


Файлы конфигурации находятся в каталоге /etc/asterisk, причем их там огромное количество.

ls /etc/asterisk



Продукт настраивается очень гибко и обладает массой возможностей, но для решения простых задач большинство из них нам не понадобится. В этой статье мы ограничимся правкой двух конфигурационных файлов: /etc/asterisk/sip.conf и /etc/asterisk/extensions.conf. Предварительно стоит сделать их резервные копии:

sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.b
sudo mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.b

Переходим к редактированию новых конфигурационных файла (самые любопытные могут изучить резервные копии дистрибутивных, там много интересного):

sudo nano /etc/asterisk/sip.conf

В файл нужно добавить минимум двух пользователей (внутренних абонентов) с номерами 1001 и 1002, а также задать для них пароли (параметр secret). На вашем сервере внутренние номера и пароли будут другими:

[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes

[1001]
type=friend
host=dynamic
secret=1234

[1002]
type=friend
host=dynamic
secret=5678


Аналогично делаем новый extensions.conf:

sudo nano /etc/asterisk/extensions.conf

Его содержание будет следующим:

[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no

[default]
exten => 1001,1,Dial(SIP/1001,10)
exten => 1002,1,Dial(SIP/1002,10)


Меняем владельца и права доступа к файлам, поскольку там лежат, в частности, пароли пользователей нашей АТС

sudo chown asterisk:asterisk /etc/asterisk/sip.conf /etc/asterisk/extensions.conf
sudo chmod 640 /etc/asterisk/sip.conf /etc/asterisk/extensions.conf

Теперь нам остается только перезапустить службу и проверить ее работоспособность:

sudo systemctl restart asterisk
sudo systemctl status asterisk

На этом настройка IP АТС с возможностью телефонной связи между внутренними абонентами завершена. Перейдем к проверке ее работоспособности.

Подключение абонентов


Чаще всего для подключения к виртуальной АТС используют программные телефоны для настольных и мобильных операционных систем. Их существует великое множество, для тестов мы взяли бесплатный Linphone для iOS и Android. При первом запуске нужно будет выбрать опцию «ИСПОЛЬЗОВАТЬ SIP ПОЛЬЗОВАТЕЛЯ», а затем указать в настройках IP нашего сервера, логин и пароль. Учетную запись сервиса Linphone создавать не надо, у нас есть собственный.



После подключения к нашей АТС клиенты готовы общаться между собой. На рабочей станции с Linux и графическим окружением можно использовать тот же самый Linphone, доступный в официальном репозитории дистрибутива:

sudo apt-get install linphone

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