company_banner

Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04

  • Tutorial


Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недорогой способ это сделать — развернуть бесплатный сервер 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 производятся через 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-провайдеру, звонить через него в мобильные и кабельные телефонные сети, принимать входящие внешние звонки, а также делать переадресацию и другие интересные штуки.



RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

Комментарии 17

    +2

    Не проще ли развернуть FreePBX Distro из готового docker-образа для VDS? Там и развертывание проще, и настройка/обслуживание не в консоли

      0
      потом три дня коммерческие модули придется отключать, совсем не проще…
      А вот вопрос защиты надо бы хоть как то раскрыть, fail2ban что ли
      +1
      не стоит использовать chan_sip в 2020 на новых установках. Пора приучать людей к pjsip, так как chan_sip устаревший и в ближайших выпусках от него откажутся окончательно.
        0
        И с такими настройками chan_sip, скорее всего, ничего не заведется.
          0
          угумс, надо, как минимум порт сменить с 5061 на 5060 в конфиге астериска или указать 5061 у клиентов, если астериск свежий и умеет в pjsip.
          0
          не всё его еще окончательно поддерживает
          +6
          sudo apt-get install asterisk asterisk-dahdi
          Драйвер DAHDI отвечает за работу плат интерфейсов телефонии, устанавливаемых непосредственно в сервер или работающих по TDM over IP, от Digium, Openvox и т.д.
          Куда Вы собираетесь устанавливать в виртуалке интерфейсные платы?
          Увидел заголовок и обрадовался новой статье про Asterisk, но оказалось, что кроме рекламы своих услуг и очень краткого пересказа одной из тысяч инструкций в сети ничего нет.
          В тексте написано (… услуги телефонии им оказывает бизнес-центр..) — но ни слова о том, как эту телефонию подключить и использовать удалённо.
          Телефония чисто для внутренних номеров не интересна — есть десятки сервисов для обмена сообщениями и звонков, бесплатно, и этими сервисами, как правило, уже пользуются.
            +2

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

              0
              Минимальный набор модулей — это, наверное, не так просто, чтобы для всех… Когда я пытался «из коробки» поднять Asterisk на Raspbian Buster, там ни в какую не хотел запускаться pbx_conf, но работал pbx_lua. И соответственно вместо extensions.conf пришлось писать extensions.lua. Команда dialplan reload тоже не хотела работать…
              0
              С языка снял. Тоже начал чить, думая, что будет что новое. Ан нет. Даж мануал и то не весь приведён. Всё по минимуму. Жаль потраченное время. (((
                0

                Вроде, ясно подразумевается, что наружу торчит не медь, а sip провайдера телефонии

                  0
                  разумно, согласен на все 100%
                  +1
                  Плохо что в статье не сказано ничего о защите телефонии, а когда придут счета на звонки в Буркина-Фасо после таких примитивных настроек, поздно будет хвататься за голову.

                  А они придут, ломают астериск не редко, в основном перебором.
                    +1
                    Про chan_sip уже сказали выше, полностью согласен, пора приучать к pjsip.
                    А вот про NAT и настройки фаервола в статье забыли.
                    Потом из-за этого возникает 90% проблем, например односторонняя слышимость и т.д.
                      0
                      Кстати, на debian последнем прекрасно ставится и работает. Единственный затык, что сейчас возник, это подружить астериск с mysql нужный коннектор в 10 уже вырезан. Но с cdr все прекрасно работает.
                        –1

                        Статья вредная. Как выше уже указали — нельзя просто ВЗЯТЬ И УСТАНОВИТЬ АСТЕРИСК. Во-первых — нужно настроить взаимодействие с нижележащими поставщиками телефонии (trunks — можно взять ту же ЗаДарму, например). Вторая история — если телефонию не защищать, то ее вмиг поломают и назвонят в Буркина-Фасо или Малайзию. Прецеденты были. Поэтому при прочих равных — опять же проще пойти напрямую в ту же https://zadarma.com/ru/ и не любить себя в голову

                          0
                          secret=1234

                          Глаза режет, нельзя такое писать! Ведь юзеры так и настроят. А без fail2ban это вообще «Добро пожаловать».

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

                          Самое читаемое