В данной инструкции описано как с нуля установить и произвести первоначальную настройку компьютерной телефонии на базе IP ATC MikoPBX с подключением к услуге «iD Phone» компании «Казахтелеком».

Несколько лет назад я уже писал аналогичное руководство: Установка и настройка Asterisk под iD Phone (iDPhone).

После этого я несколько раз обновлял нашу офисную АТС. Сначала на более свежие сборки «AsteriskNOW», а последний раз — на «FreePBX Distro». И с каждым разом меня все больше напрягал процесс настройки, т.к. для наших нужд все огромные возможности Asterisk'а весьма избыточны. Давно хотелось что-нибудь совсем не прожорливое в плане требований к железу, и чтобы настраивалось как можно быстрее. Кажется, MikoPBX — как раз такая сборка. Кому нужна легкая и быстронастраиваемая АТС под «iD Phone» — милости прошу под кат.

Скачиваем «MikoPBX» отсюда: https://github.com/telefon1c/MikoPBX/releases/. Я использовал релиз MikoPBX 2020.1.124.

Сам процесс установки хорошо описан на сайте разработчиков. Я не буду на нем останавливаться. Отмечу лишь, что конкретно в моем случае АТС установлена на виртуальную машину Hyper-V. К машине подключено два диска: один под АТС, второй — под данные АТС (записи разговоров и т.п.). Проброшено две сетевых карты: одна смотрит в Интернет через офисный роутер, вторая — в SIP-сеть Казахтелекома.

Вот так выглядит экран сразу после установки:



Видно, что интерфейс eth0 (172.20.10.X) смотрит в Интернет. Именно из этой подсети раздает адреса DHCP-сервер роутера.

eth1 получил адрес из подсети 10.X.X.X — это интерфейс, который смотрит в SIP-сеть «Казахтелекома». Именно из этой подсети раздает адреса DHCP-сервер «Казахтелекома».

Установим на eth0 статический IP-адрес. Для этого используем пункт меню (2) и следуем вопросам мастера.



Открываем веб-интерфейс управления «MikoPBX». Для этого на любом компьютере в локальной сети открываем веб-обозреватель и в адресной строке набираем адрес, который присвоили АТС.
В нашем случае:

172.20.10.3

Данные для первого входа в панель: admin/admin.

Вот так выглядит экран первого входа в веб-интерфейс АТС:



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

Подключаемся к нашей АТС через putty (здесь уже данные для входа: root/admin, или свой пароль, который можно задать в разделе веб-интерфейса «Общие настройки» — «SSH»), переходим в консоль (9) и даем команду:

route

Получаем вывод:
Вывод команды route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.10.5     0.0.0.0         UG    0      0        0 eth0
10.28.0.0       *               255.255.252.0   U     0      0        0 eth1
172.20.10.0     *               255.255.255.0   U     0      0        0 eth0

На данном этапе АТС должна уже уметь общаться с Интернетом. Но телефония на такой конфигурации сети еще не заработает. Дело в том, что для нормального функционирования телефонии необходимо, чтобы в интерфейс SIP-сети уходил не только трафик, имеющий назначением подсеть 10.28.X.Х (в моем случае), а весь трафик для подсети 10.Х.Х.Х.

Для того, чтобы добиться такого эффекта в веб-интерфейсе АТС открываем пункт «Кастомизация системных файлов» в разделе «Система». В открывшемся списке находим файл /etc/static-routes и жмем кнопку редактирования.



На открывшейся странице переставляем поле «Режим» в значение «Добавлять в конец файла», а в поле редактирования добавляем такую строку:

route add -net 10.0.0.0 netmask 255.0.0.0 dev eth1


Не забываем нажать кнопку «Сохранить»

Иногда такой строки недостаточно. В Петропавловске, например, работает вышеуказанный вариант, а вот в Нур-Султане потребовалось явно указать адрес шлюза в подсеть «Казахтелекома». Делается это таким образом:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.19.X.1 dev eth1

10.19.X.1 — это адрес шлюза «Казахтелекома» для моего случая. Такое решение мне не очень нравится, т.к. адрес своего шлюза «Казахтелеком» может поменять в любой момент, но как сделать лучше, я не знаю. По-идее, необходимо сначала каким-то образом получить адрес шлюза по DHCP, а потом уже создавать маршрут через этот адрес.

В дальнейшей настройки нашей IP-АТС мы будем неоднократно обращаться к имени SIP-сервера «Казахтелекома»: sip.telecom.kz. При текущей настройке нашего компьютера это имя разрешается в белый IP-адрес 92.46.61.21. Нам необходимо добиться того, чтобы это имя разрешалось в IP-адрес SIP-сети «Казахтелекома».

Сначала необходимо узнать внутренний IP-адрес сервера, который определен для вашего региона. Для этого открываем следующую страницу: http://idphone.kz/?page_id=1010. На ней есть таблица адресов Outbound Proxy при настройке услуги iD Phone через pvc 0/41. Именно в ней ищем необходимый нам адрес.

На всякий случай процитирую эту таблицу здесь:
Актау 10.0.0.44
Актобе 10.0.0.36
Алматытелеком 10.0.0.12
Астанателеком 10.0.0.20
Атырау 10.0.0.28
Караганда 10.0.0.148
Кокшетау 10.0.0.140
Костанай 10.0.0.129
Кызылорда 10.0.0.60
Павлодар 10.0.0.108
Петропавловск 10.0.0.116
Семей 10.0.0.92
Шымкент 10.0.0.68
Талды-Корган 10.0.0.84
Тараз 10.0.0.76
Уральск 10.0.0.52
Усть-Каменогорск 10.0.0.100
Жезказган 10.0.0.156
Открываем пункт «Кастомизация системных файлов» в разделе «Система». В открывшемся списке находим файл /etc/hosts и жмем кнопку редактирования. На открывшейся странице переставляем поле «Режим» в значение «Добавлять в конец файла», а в поле редактирования добавляем такую строку:

10.0.0.116 sip.telecom.kz

Это для Петропавловска (мой случай). Замените адрес 10.0.0.116 на соответствующий вашему региону.


Нажимаем кнопку «Сохранить»

Перезагружаем АТС и убеждаемся, что все работает правильно. Для этого подключаемся к нашей АТС через putty и даем команду:

ping 8.8.8.8

Если пинг идет, значит компьютер имеет доступ к Интернету.

Даем команду:

ping ya.ru

Если имя разрешилось, значит DNS-работает корректно.

Даем команду:

ping 10.0.0.116

Если пинг идет, значит компьютер имеет доступ к SIP-сети «Казахтелекома». На момент написания статьи в «Казахтелекомовской» сети адрес 10.0.0.116 пинговался. Но, на самом деле отсутствие пинга не может 100% говорить о том, что у вас проблемы с настройкой. Дело в том, что «Казахтелеком» может в любой момент закрыть пинг на своих серверах.

Даем команду:

ping sip.telecom.kz

Если имя разрешается в тот адрес, что задали в файле /etc/hosts, значит настройка этого момента произведена верно. Как написано выше, пинг на sip.telecom.kz может и не идти.

Здесь надо сделать небольшое замечание. В данной АТС обслуживание протокола SIP производится драйвером PJSIP (как и в свежих версиях Asterisk'а), а этот драйвер при разрешении FQDN-имени игнорирует настройки файла hosts. Чтобы обойти это ограничение, придется приложить определенные усилия при настройке подключения к провайдеру. Т.е. наша подмена адреса сервера sip.telecom.kz в файле hosts вроде как и не нужна, но я рекомендую это делать, чтобы в будущем не ломать голову, почему система и драйвер по разному имя видят.

Мы закончили с настройкой операционной системы и теперь пришло время переходить к настройке «MikoPBX». Для начала нам необходимо выяснить наши параметры подключения к SIP-серверу «Казахтелекома». Для этого идем в личный кабинет клиента «Казахтелекома»: https://telecom.kz/account/login.

В кабинете следуем к разделу с параметрами подключения:

Скриншоты пути до параметров подключения ID Phone








Значения в полях «Линия/Порт» (без "@sip.telecom.kz") и «Имя пользователя» у меня одинаковые. У вас тоже, скорее всего, т.к. поля эти для редактирования закрыты. Договоримся в дальнейшем это значение называть <SIP-логин>. На этой же странице можно задать <SIP-пароль>.

Идем в веб-интерфейс системы. В разделе «Маршрутизация» выбираем пункт «Провайдеры телефонии». После первоначальной установки здесь есть «Демо провайдер». Его можно удалить. А далее, нажав кнопку «Подключить SIP», начинаем настраивать подключение к Казахтелекому.

В поле «Название провайдера» задаем понятное нам название транка. В поле «Хост или IP адрес» пишем 10.0.0.116. В поле «Логин» указываем <SIP-логин>, а в поле «Пароль» — <SIP-пароль>. Разворачиваем «Расширенные настройки». В поле «Переопределить имя домена в поле From: в SIP пакетах (fromdomain)» пишем sip.telecom.kz, а в «Дополнительные параметры» вносим такой текст:

[registration]
client_uri = sip:<SIP-логин>@sip.telecom.kz:5060

Если все сделано правильно, то после нажатия кнопки «Сохранить» в правом верхнем углу появится надпись на зеленом фоне «Связь установлена».

Скриншот настройки транка


Создаем исходящую маршрутизацию (объясняем системе, что делать, когда кто-то из пользователей АТС пытается позвонить наружу). Для этого в разделе «Маршрутизация» выбираем пункт «Исходящие маршруты». Жмем на кнопку «Добавить новое правило». В поле «Название правила» указываем понятное нам наименование. В поле «Остальная часть номера состоит из указанного количества цифр» указываем 6. Сохраняем. Таким образом все исходящие звонки на номера, состоящие из шести цифр, мы направили в ранее добавленный транк.



Создаем внутренний номер. Для этого в разделе «Телефония» выбираем пункт «Сотрудники». В открывшемся списке сначала удаляем демо-сотрудников (предварительно придется удалить входящий маршрут, изменить получателя входящего маршрута по умолчанию, удалить IVR меню и очереди вызовов). Задаем «ФИО пользователя», «Внутренний номер» и «Пароль для SIP».



Создаем входящую маршрутизацию (объясняем системе, что делать, когда снаружи кто-то позвонит на наш транк). Для этого в разделе «Маршрутизация» выбираем пункт «Входящие маршруты». Здесь достаточно будет указать получателем созданного нами сотрудника в маршруте по умолчанию.



Ну вот мы и закончили настраивать нашу АТС. Пришло время проверить, как все работает. Для этого установим софт-фон и зарегистрируемся на нашей АТС за внутренним номером «127».
Качаем «MicroSIP» отсюда https://www.microsip.org/downloads.
Устанавливаем на одном из компьютеров локальной сети.

Добавляем учетную запись «MicroSIP». Окно добавления учетной записи можно вызвать по выпадающей кнопке в право верхнем углу (пункт «Add Accaunt...).

В настройках указываем:

  • »SIP Server" — адрес IP-АТС в локальной сети (в нашем случае «172.20.10.3»);
  • «Username» — имя абонента (любое, например, «127»);
  • «Domain» — адрес IP-АТС в локальной сети (в нашем случае «172.20.10.3»);
  • «Login» — внутренний номер, за которым мы хотим зарегистрироваться (в нашем случае «127»);
  • «Password» — пароль внутреннего номера (его мы задали при создании сотрудника).

Настройка MicroSIP






Если мы все сделали правильно, то в статусе софт-фона появится «Online»:

Скриншот подключенного MicroSIP

А вот теперь действительно все! Пробуем позвонить с софт-фона в город, а потом с города, на наш номер «ID Phone».

P.S. Спустя несколько недель эксплуатации системы, я очень доволен результатом. Субъективно еще и качество связи улучшилось по сравнение с тем, как было на FreePBX Distro.

На данный момент у меня наблюдается только одна проблема, с которой мне пока не удается справится: спустя несколько часов отсутствия звонков (например, ночью) почему-то перестает нормально работать интерфейс eth1, который смотрит в SIP-сеть (даже ping не идет), и встают все транки.

Проблема признана разработчиками и, по все видимости, будет устранена в следующих релизах. На данный момент можно воспользоваться таким решением: qa.askozia.ru/7537/%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-%D0%B2%D1%81%D1%82%D0%B0%D0%B5%D1%82-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81?show=7564#c7564.