Site icon Блог Дмитрия Абакумова

Связь без мобильной сети: как я развернул свою VoIP-телефонию на участке

Когда мобильная связь подводит, особенно важно оставаться на связи с близкими. Почему бы тогда не организовать собственную телефонную сеть на основе VoIP?
Меня зовут Дима Абакумов, и под катом расскажу, как я решал эту задачу и с какими трудностями столкнулся

Проблема

В моём случае есть два дома на одном участке. В одном живут родители, в другом — дедушка с бабушкой. Из-за близости к военному объекту мобильная связь заметно ухудшена: стабильно работает только на улице, и то далеко не всегда. Смартфоны с VoLTE ловят сеть с перебоями, а обычные кнопочные телефоны внутри домов сеть не видят совсем

Как результат вместо нормального общения — обрывки слов, внезапное завершение вызова или вовсе невозможность позвонить. В таких условиях элементарно невозможно связаться по мобильной связи между домами. Конечно, всегда можно пешком пройтись до соседнего дома и сказать вживую, но: зимой для этого нужно одеться, а в случае экстренной ситуации (если кому-то станет плохо) такой вариант не подходит
Значит, нужна альтернатива — недорогая, стабильная и работающая в пределах участка

Вариант 1. Радиосвязь

Первое, что приходит на ум — две переносные радиостанции, по одной в каждый дом

Плюсы:

Минусы:

Из-за этих минусов вариант с радиосвязью отпадает

Вариант 2. SIP-телефоны

Изначально я задумался об использовании обычных городских телефонов, но резко вспомнил, что краем уха слышал об IP-телефонии, и точно видел ее в поликлиниках, университете Интересно, а сколько стоят такие телефоны?

Однако, недешево. Два таких телефона — 5000 руб. А еще нужны провода, коннекторы. А что там на рынке б\у?

А все довольно неплохо. С учетом всех расходников можно уложиться в 1000 руб! Решено, будем строить свою VoIP сеть

VoIP-сервер

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

В доме номер 1 сетевой стек следующий: Mikrotik 5009 получает интернет через EPON, к нему подключен роутер ASUS TUF Gaming AX4200 в режиме точки доступа и роутер NETIS NC65 в режиме mesh-сети соединяющий такой же в доме номер 2 и самосборный NAS-сервер на базе OpenMediaVault

Важное уточнение, что Netis в режиме mesh-сети создает свою подсеть и отказывается работать с уже существующей, а в режиме моста сильно режет скорость соединения. Значит придется немного пободаться с NAT

Беглый поиск по форумам дает нам следующий варианты VoIP-сервера: OpenSIPS, ejabberd, 3СХ, Asterisk и FreePBX

Проверив разные варианты остановился на FreePBX. У него есть несколько готовых Docker-образов с открытым кодом, админка с настройкой Asterisk и пара полезных плагинов в комплекте. Плюс, проект живой и активно развивается, используется в крупных сетях и вообще красивый

FreePBX

По инструкции с этого сайта берем образ от tiredofit/freepbx и немного дорабатываем:

И запускаем на OVM

Идем в Приложения — Внутренние номера и добавляем для теста пару номеров

Для проверки можно использовать клиент под Windows или под Android / IOS. Я выбрал LinPhone Вводим логин, пароль, протокол и адрес сервера, подключаем и пробуем позвонить на второе устройство с номером 101

Звоним и … Ничего. Звонок проходит, но звука нет, как и соединения. IP-адрес звонящего при этом — внутренний IP-адрес контейнера Docker

Потратив еще некоторое количество времени на дебаг вместе с tcpdump проверкой NAT находим одну маленькую, но важную деталь:

Переменная окружения переданная в контейнер не меняет порты для SIP. Выставляем руками 18000 — 18030, перезагружаем FreePBX и пробуем еще раз. Вуаля, звонок прошел, слышно громко и четко!

В процессе дальнейшей настройки узнаем, что SIP есть в двух вариациях — chan_pjsip и chan_sip. Современным является именно pjsip. Проверяем могут ли телефоны в pjsip и после положительного ответа заказываем. Я взял 4 штуки snom 320. Это простые телефоны, без видеосвязи, но по 240 руб за штуку. В комплекте нет блоков питания

Оригинальный блок питания стоит 1200 руб за штуку, но телефоны поддерживают PoE 802.3 af/at, а значит можно приобрести PoE-инжектор за 243 руб за штуку. Еще и уменьшить количество проводов, идущих до телефона. Заказываем и их

Snom 320

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

После непродолжительного поиска, узнаем, что их можно прошить, если поднять tftp-сервер и подкинуть прошивку с правильным названием

Телефоны старые, поэтому все прошивки уже в архиве, идем сюда и качаем последнюю доступную для snom 320. Правильное название прошивки находим тут, поднимаем tftp-сервер и кладем прошивку с названием snom320.bin

Телефон обновляется, и теперь его можно настроить через веб-панель. Задаем ему логин, пароль, протокол и адрес сервера. Также пропишем адрес ntp-сервера для правильного времени и сообщение на экране

После этого телефоны готовы к работе

Итог

Теперь между домами есть стабильная внутренняя связь, которая работает даже при полном отсутствии мобильной сети. Телефоны интуитивно понятные в использовании, поэтому старшее поколение разобралось за 10 минут. Стоимость решения получилась минимальной, а надёжность — на уровне проводного стационарного телефона

Exit mobile version