Уровень сложности конфигурации – 4 из 5. / Время на прочтение и реализацию – 1 час.
Сложность в том, что у меня на даче есть два строения, дом и хоз.блок. Все дачные жители, в течение дня, расползаются по участку. Поэтому найти кого-то, чтобы узнать «куда положили отвертку» затруднительно. То же самое относится и к сбору всех на обед. Приходится обходить участок и вручать персональное обеденное приглашение.
А почему бы не использовать мобильный, спросите вы? По трем причинам:
В момент очередного неудобного звонка я и задумался о программной телефонной станции вместе с SIP телефонами. Такими, которые можно повесить на стену. Ну или установить на стол в наиболее посещаемых местах.
И да, на тот момент, меня вполне устраивала лишь внутренняя связь. «Выход в город» особенно не интересовал, так как хотелось решить внутренние коммуникационные сложности.
В качестве телефонной станции выбор пал на бесплатный Asterisk для Linux. В качестве «железа» меня вполне устроил старенький Raspberry Pi.
Было определено несколько мест для расстановки телефонов. Аппараты были заказаны на Aliexpress. Дело было в 2015 году и тогда я купил аппараты VoIP-телефон Flying Voice IP622 c WiFi. Не хотел тащить новые провода. Не знаю есть ли они сейчас, но уверен, что сейчас много всяких разных.
Что касается Asterisk, то его установка и конфигурирование описаны в сети многократно. Я не буду повторять все досконально. Укажу лишь основные места, на которые необходимо обратить внимание.
Итак, ставим.
sudo apt-get update
sudo apt-get install asterisk
Собственно, все. Теперь у вас есть телефонная станция. Она работает на IP адресе вашего Raspberry Pi и, по-умолчанию, слушает на UDP порту 5060.
Теперь настройка. После установки у вас в каталоге /etc/asterisk есть множество файлов. Нам потребуются два – sip.conf и extensions.conf.
Файл extensions.conf описывает номерной план вашей телефонной сети.
Я назвал этот контекст dacha и добавил текст в конец файла extensions.conf.
[dacha]
;Если набран номер 10 - отправлять звонок на SIP-телефон. Дом. 1-й этаж.
exten => _10,1,Dial(SIP/${EXTEN})
;Если набран номер 11 - отправлять звонок на SIP-телефон. Дом. 2-й этаж.
exten => _11,1,Dial(SIP/${EXTEN})
;Если набран номер 20 - отправлять звонок на SIP-телефон. Хозблок. Бойлерная.
exten => _20,1,Dial(SIP/${EXTEN})
;Если набран номер 21 - отправлять звонок на SIP-телефон. Хозблок. Комната.
exten => _21,1,Dial(SIP/${EXTEN})
;Если набран номер 55 - отправлять звонок на Droid.
exten => _55,1,Dial(SIP/${EXTEN})
;Группы.
exten => 15,1,Dial(SIP/10&SIP/11)
exten => 25,1,Dial(SIP/20&SIP/21&SIP/22)
exten => 99,1,Dial(SIP/10&SIP/11&SIP/20&SIP/21&SIP/55)
Небольшие комментарии. Как следует из пояснений, у нас есть 4 телефона, расположенные в двух постройках. Есть номер 55, который получает мой Android, когда регистрируется в дачном WiFi. При этом на Android я использую приложение Zoiper. Его можно найти в Google Play.
Также есть три группы обзвона. Их суть такова – если набрать номер 15, то зазвонят аппараты с номерами 10 и 11 в доме. Если набрать 25, то зазвонят все аппараты в хозблоке. Ну и наконец, номер 99 заставит звонить вообще все телефонные аппараты на даче.
Вот мы описали весь номерной план с именем dacha.
Теперь давайте перейдем к файлу sip.conf.
В нем описываются параметры подключений по протоколу SIP. Наши телефоны подключены именно по нему. Поэтому добавим настройки SIP телефонов в конец файла.
[10]
; Дом, 1-й этаж.
type=friend
host=dynamic
username=10
secret=9999
nat=no
canreinvite=no
context=dacha
callerid=10
disallow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=vp8
[11]
; Дом, 2-й этаж.
type=friend
host=dynamic
username=11
secret=9999
nat=no
canreinvite=no
context=dacha
callerid=11
disallow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=vp8
[20]
; Хозблок, бойлерная.
type=friend
host=dynamic
username=20
secret=9999
nat=no
canreinvite=no
context=dacha
callerid=20
disallow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=vp8
[21]
; Хозблок, комната.
type=friend
host=dynamic
username=21
secret=9999
nat=no
canreinvite=no
context=dacha
callerid=21
disallow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=vp8
[55]
type=friend
host=dynamic
username=55
secret=9999
nat=no
qualify=yes
canreinvite=no
context=dacha
callerid=55
disallow=all
allow=gsm
allow=ulaw
allow=alaw
allow=speex
allow=h261
allow=vp8
allow=h263
allow=h263p
videosupport=yes
Небольшие комментарии.
Как видите, все соединения от телефонных аппаратов сконфигурированы идентично. Указываются username и secret. Это то, с чем телефонные аппараты будут регистрироваться в Астериске. В моем случае я установил пароль 9999 для всех телефонов.
Второй важной особенностью является упоминание названия номерного плана dacha в описании каждого подключения. Это параметр context. Ну и такой набор кодеков (то что начинается со слова allow=) вполне подошел как для стационарных телефонов, так и для SIP клиента Zoiper на моем Android.
Ну, вот и все. Остальные настройки я вроде даже и не менял. Хотя по прошествии трех лет уже не могу быть полностью уверен.
Осталось научиться запускать и останавливать Asterisk.
sudo service asterisk stop
sudo service asterisk start
Прежде чем вы начнете конфигурировать сами телефоны или SIP клиента для Android вам имеет смысл ознакомиться с некоторыми командами Asterisk. Они помогут в поиске возможных проблем.
Можно зайти в режим командной строки Asterisk, выполнив команду.
sudo rasterisk
В командном режиме можно посмотреть ситуацию с подключенными телефонами.
sip show peers
Можно посмотреть все настройки протокола SIP.
sip show settings
Посмотреть заведенных пользователей.
sip show users
Можно включить дебаг протокола SIP.
sip set debug on
Или выключить его.
sip set debug off
Теперь, после знакомства с некоторыми командами, можно перейти к настройкам телефонов. Или SIP клиента на Android. Или компьютера с Windows.
Там все крайне просто. Необходимо создать новую учетную запись (или новое подключение к серверу SIP). При этом указав его IP адрес и порт (5060). Так же нужно указать номер и пароль регистрируемого устройства. Пример настройки вы можете увидеть в инструкции по ссылке ниже. С той лишь разницей, что в ней идет речь про настройку подключения к SIP серверу на площадке VPNKI. Однако для настройки клиентского ПО или телефонного аппарата это безразлично.
https://vpnki.ru/settings/apps/sip-telephony-server
Таким образом, мы создали на двух площадках дачного участка внутреннюю телефонную сеть. Она помогла мне во «внутридачных коммуникациях».
В следующей статье будет рассказано о подключении дачного Asterisk к SIP серверу московского провайдера Onlime. Теперь уже с целью получения московского телефонного номера на даче. Но и не только на даче.
Если что-то не получилось или что-то неверно описано, то задавайте вопросы на форуме https://vpnki.ru/questions/support-forum/blog-news.
Если вы не планируете передачу видео трафика, то мы рекомендуем вам начинать с выбора тарифа PLAN-MYDEV. Если передача видео будет осуществляться, то стоит сразу начинать с PLAN-VIDEO. Если скорости хватать не будет, то в любое время вы можете изменить тариф на более скоростной.
Если вы используете нашу систему для решения бизнес задач, то начинайте с аналогичных тарифов с приставкой BUSINESS-.
Контролировать объем переданного трафика вы можете на странице с графиками использования.
Узнать реальную скорость своего VPN соединения вы можете утилитой iperf3 на странице "Инструменты". Стоит отметить, что вопрос скорости передачи полезных данных будет зависеть от трех факторов:
Худшим вариантом по скорости окажется вариант, когда в качестве транспортного протокола для VPN соединения используется TCP. При этом ваше устройство размещено далеко от сервера VPNKI. В этом случае, реальная скорость передачи данных будет определяться необходимостью подтверждения передачи каждого пакета в протоколе TCP.
Кроме настройки по этой инструкции вам могут пригодиться другие примеры конфигурации и использования системы.
По ссылкам ниже вы можете ознакомиться с информацией, связанной с темой VPN соединений.