All pages
Powered by GitBook
1 of 12

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Подключение с помощью SSH (Windows)

Подключение к MikoPBX по SSH с помощью Powershell (OpenSSH)

Создание и привязка ключа

Для начала необходимо произвести установку OpenSSH. Сделать это можно по ссылке.

  1. После установки необходимо проверить ее корректность. Для этого введите следующую команду в Powershell:

ssh -V

У Вас должна отобразиться версия OpenSSH:

Версия OpenSSH

В случае, если при вводе команды для проверки версии ничего не произошло, Вы можете ввести - Add-WindowsCapability -Online -Name OpenSSH.Client*

  1. Далее необходимо сгенерировать SSH ключ, для этого введем следующую команду:

ssh-keygen -t ed25519 -C "[email protected]"

В данном случае будет сгенерирован ключ типа "ed25519" с комментарием "[email protected]" - это поможет идентифицировать его в будущем.

Помимо этого, можно указать путь, куда будет сохранён файл с ключами, по умолчанию это "C:\Users<Username>.ssh\id_ed25519". Для этого добавьте -f и укажите путь, например:

ssh-keygen -t ed25519 -f ~/.ssh/my_new_key
Создание ключа в Powershell

После этого, ключ будет создан в указаной директории. В одном файле будет располагаться публичный ключ, а в другом - приватный.

Созданные ключи
  1. Введем команду для получения публичного Ssh-ключа:

Get-Content ~/.ssh/id_ed25519.pub

Скопируйте его.

  1. Перейдите в web-интерфейс MikoPBX, во вкладку "Система" -> "Общие настройки":

Раздел "Общие настройки"
  1. Перейдите в раздел "SSH" и вставьте публичный ключ в поле "SSH Authorized Keys" в формате:

Тип ключа
Ключ

Нажмите "Сохранить":

Поле "SSH Authorized Keys"

Подключение с помощью SSH

Для подключения по SSH выполните следующую команду в Powershell:

ssh -i C:\Users\<Username>\.ssh\id_ed25519 root@mikopbxipadress

Замените следующие данные, исходя из ваших параметров:

  • Путь к SSH ключу.

  • Подставьте IP вашей MikoPBX вместо mikopbxipadress.

Произойдет подключение к консоли MikoPBX с помощью SSH:

Успешное подключение!

Подключение к АТС с помощью WinSCP

  1. Скачайте установщик программы WinSCP с официального сайта по ссылке

  2. Установите программу

  3. В случае, если ранее вы подключались к MikoPBX по SSH соединению с помощью PuTTYб программа сразу предложит импортировать соединение

  1. Если же подключения не было - нужно заполнять данные вручную

  1. Имя хоста - IP адрес MikoPBX Порт - порт для подключения по SSH по умолчанию это 22 Имя пользователя - всегда нужно указывать root Пароль - SSH пароль от Вашей MikoPBX

  1. Перед подключением вам необходимо разрешить авторизацию по паролю в веб-интерфейсе MikoPBX, а также задать пароль для подключения: для этого перейдите "Общие настройки" -> "SSH"

  1. Для подключения нажмите "Войти"

  1. После успешного подключения у вас откроется корневая папка MikoPBX

Подключение с помощью SSH (Linux/MacOS)

Подключение к MikoPBX по SSH с помощью Powershell (Terminal)

Создание и привязка ключа

  1. Для начала необходимо сгенерировать SSH ключ. Перейдите в терминал и введите следующую комманду для его генерации:

В данном случае будет сгенерирован ключ типа "ed25519" с комментарием "[email protected]" - это поможет идентифицировать его в будущем.

Помимо этого, можно указать путь, куда будет сохранён файл с ключами, по умолчанию это "~/.ssh/id_ed25519.pub". Для этого добавьте -f и укажите путь, например:

По умолчанию ключ сохраняется в Username/.ssh/id_ed25519.pub

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

  1. Перейдите в "Система" -> "Общие настройки" в web-интерфейсе MikoPBX.

  1. Вставьте ваш ключ в поле "SSH Authorized Keys":

Подключение с помощью SSH

Для подключения по SSH выполните следующую команду в Terminal:

Замените следующие данные, исходя из ваших параметров:

  • Путь к SSH ключу.

  • Подставьте IP вашей MikoPBX вместо mikopbxipadress.

Введите пароль от ssh. Произойдет подключение к консоли MikoPBX с помощью SSH:

ssh-keygen -t ed25519 -C "[email protected]"
ssh-keygen -t ed25519 -f ~/.ssh/my_new_key
cat ~/.ssh/id_ed25519.pub
ssh -i Users\<Username>\.ssh\id_ed25519 root@mikopbxipadress
Создание SSH ключа
Полученный ключ
Раздел "Общие настройки"
Поле "SSH Authorized Keys"
Успешное подключение!

Подключение к АТС с помощью SSH-клиента (Putty)

В данной инструкции будет описано подключение по SSH с помощью Putty

  1. Скачайте программу для подключения по SSH. Это можно сделать на официальном сайте по ссылке

  2. Запустите скаченную программу. У вас откроется главное меню.

  1. Перейдите в раздел «Соединение» - «Данные»

  1. «Имя пользователя для автовхода» укажите root

«Строка типа терминала» укажите xterm-256color

  1. Перейдите в раздел «Кодировка»

  1. «Кодировка» - укажите UTF-8

    Установите флаг «Включить рисование линий VT100 даже в режиме UTF-8»

  1. Перейдите в раздел «Сессия» - «Журнал». Тут можно настроить вывод в файл:

  1. Перейдите в раздел "Сеанс"

9. Необходимые данные:

  • Имя хоста (или IP-адрес)- IP адрес АТС

  • Порт - порт для подключения по SSH по умолчанию 22

  • Введите имя сессии и сохраните ее настройки

  1. В дальнейшем используйте действие «Загрузить» для использования сохраненной ранее сессии

  1. Выполните действие «Соединиться» для подключения к АТС и введите пароль SSH

  1. Перед подключением вам необходимо разрешить авторизацию по паролю в веб-интерфейсе MikoPBX, а так же задать пароль для подключения: для этого перейдите "Общие настройки" -> "SSH"

  1. После ввода пароля SSH, у вас откроется меню АТС

  1. Для открытия консоли перейдите в "[9] Console(Shell)"

Подключение к АТС с помощью SSH

Описание вариантов подключения к АТС по SSH

SSH (Secure Shell) — это протокол для безопасного удалённого подключения к серверам и управления ими. Он используется для выполнения команд, передачи файлов и администрирования систем через зашифрованный канал. SSH помогает защитить данные от перехвата, обеспечивая аутентификацию и шифрование между клиентом и сервером. Это основной инструмент для разработчиков, системных администраторов и DevOps-инженеров при работе с удалёнными машинами.

SSH подключение

Далее будет рассмотренно два разных способа подключения к MikoPBX по SSH протоколу:

  • Подключение с помощью пароля через сторонние приложения (в данной статье в примере - putty)

  • Подключение с помощью ключей, что и будет рассмотренно далее с примером на Windows, Linux (MacOS)



Подключение к АТС с помощью SSH-клиента (Putty)
Подключение с помощью SSH (Windows)
Подключение с помощью SSH (Linux/MacOS)

Анализ трафика средствами Sngrep

Sngrep — это консольная утилита для захвата и анализа SIP-трафика. Она позволяет визуализировать SIP-сессии, фильтровать их и отслеживать проблемы в голосовых соединениях.

Используйте это приложение для анализа логов и их отправки в техническую поддержку.

Для начала работы с приложением используйте Подключение к АТС с помощью SSH-клиента.

Для запуска приложения используйте команду:

# sngrep -r

Если используется несколько сетевых интерфейсов, то при запуске приложения следует уточнить ID интерфейса:

# sngrep -d eth1 -r

Ключ -r позволяет захватить звуковой трафик.

Список интерфейсов можно посмотреть в выводе команды:

# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:08:EF:FD  
          inet addr:172.16.156.223  Bcast:172.16.156.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81838 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38019 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66203565 (63.1 Mb)  TX bytes:7603334 (7.2 Mb)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:08:EF:07  
          inet addr:172.16.32.162  Bcast:172.16.32.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:48506 errors:0 dropped:4432 overruns:0 frame:0
          TX packets:5386 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3698996 (3.5 Mb)  TX bytes:1886690 (1.7 Mb)

Пример внешнего вида sngrep:

Внешний вид Sngrep

В окне приложения отображается список всех SIP диалогов:

  • Стрелками ⇑ и ⇓ можно перемещаться между диалогами.

  • Нажмите Enter Для просмотра детальной информации по диалогу

Информация по диалогу
  • В детальной информации можно просматривать конкретные SIP пакеты выбирая нужный ⇑ и ⇓

  • Нажмите Enter Для просмотра содержимого SIP пакета

Содержимое SIP пакета
  • Нажмите ESC для возврата к предыдущему окну

  • Используйте клавишу «Пробел» для выбора нескольких SIP диалогов и нажмите Enter для их просмотра в одном окне

  • В детальной информации используйте клавишу «Пробел» для двух SIP пакетов и их сравнения

Сравнение двух SIP пакетов

Сохранение дампа

  1. Выделите клавишей «Пробел» интересующий вас SIP диалог «Call»

Диалог "Call"
  1. Нажмите F2 для вызова диалога сохранения дампа в файл:

  • Стрелками ⇑ и ⇓ перемещайтесь между полями формы ввода

  • Заполните путь и имя файла

  • Выберите действие сохранить и нажмите ENTER

  • Скачайте файл используя Подключение к АТС с помощью WinSCP

Фильтрация

  1. Нажмите F7 для вызова диалога фильтра:

  1. Стрелками ⇑ и ⇓ перемещайтесь между полями формы ввода

  2. Клавишей «Пробел» выберите SIP методы для анализа

  3. Выберите действие «Filter» и нажмите ENTER

Получение логов с помощью приложения tcpdump

tcpdump — это утилита в Linux для захвата и анализа сетевого трафика. Она позволяет в реальном времени отслеживать пакеты, проходящие через сетевой интерфейс, и сохранять их для дальнейшего анализа.

  1. Подключитесь к вашей АТС по SSH (инструкция)

  2. Выполните команду:

tcpdump -i eth0 -n -s 0 -vvv -w /tmp/capturefilename.pcap
Команда в интерфейсе SSH
  1. Воспроизведите Вашу ситуацию, выполните телефонный звонок. Далее нажмите в SSH консоли CTRL + С. Работа приложения tcpdump будет завершена.

Результат работы tcpdump
  1. Подключитесь к АТС с помощью WinSCP (инструкция)

  2. Лог вызова /tmp/capturefilename.pcap отправляйте в техническую поддержку

Файл "capturefilename.pcap"

Снятие лога в АТС с помощью Wireshark

Wireshark — это программа для захвата и анализа сетевого трафика. Она предоставляет удобный графический интерфейс для просмотра и детального изучения пакетов, что помогает в диагностике и решении сетевых проблем.

  1. Скачайте Wireshark по ссылке. Установка по умолчанию.

  2. Запустите Wireshark. Левой кнопкой мыши выделите сеть, по которой будете анализировать трафик и нажмите на синий значок акулы.

  1. Воспроизведите Вашу проблему, совершите тестовый звонок.

  2. Для остановки нажмите на значок:

Настройка Jitter

Обычно настройка Jitter необходима в том случае, если есть значительные проблемы с передачей RTP трафика. Голос собеседника запаздывает, пропадает, не слышно.

Лучше всего искать первопричину, анализировать дамп звонка на АТС / на роутере / на вышестоящем маршрутизаторе. Сравнивать и смотреть где jitter растет.

Есть вот такая статья по проблемам со звуком.

Но есть ряд случаев, когда нет возможности повлиять на качество канала связи. В этом случае, если задержка аудио потока будет слишком большой, то asterisk будет отбрасывать «опоздавшие» пакеты. Эту проблему может решить увеличение значения Jitter.

В MikoPBX настраивать jitter можно только через кастомизацию системных файлов:

modules.conf - добавить:

load => func_jitterbuffer.so

extensions.conf - для провайдера можно добавить custom контексты:

Для внутренних (исходящих):

[all_peers-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

Для внутренних (входящих):

[internal-users-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

Для входящих:

[SIP-1611151795-incoming-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

Для исходящих :

[SIP-1611151795-outgoing-custom] 
exten => _X!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

Решение проблем со звуком

Введение

При разработке MikoPBX, мы стараемся реализовать ту или иную функцию максимально просто, чтобы даже новичок мог быстро начать работу.

Но некоторые вещи неподготовленному пользователю могут существенно усложнить жизнь.

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

Кодеки

Пожалуй это первое, что следует проверить. К MikoPBX возможно подключить самые различные SIP / IAX устройства (endpoints):

  • Аппаратный SIP телефон

  • Аналоговый телефон (через SIP шлюз)

  • Учетную запись провайдера, в качестве "endpoint" тут может выступать как реальная "железка", так и приложение (тот же asterisk)

Устройства, при попытке установить "договориться" о диалоге обмениваются информацией о поддерживаемых кодеках (формате медиа данных), это может быть gsm / ulaw / alaw и так далее.

Если устройства не найдут общий кодек, то вызов скорее всего прервется. В логе отобразиться ошибка, что совместимый кодек не найден.

В MikoPBX кодеки настраиваются в разделе "Общие настройки" - "Аудио/Видео Кодеки" (см. wiki). Наиболее распространенный кодек в РФ alaw. При работе с webRTC следует разрешить кодек opus.

NAT

Некорректно настроенное сетевое окружение - наиболее распространенная проблема.

Типичный пример

На предприятии имеется несколько локальных подсетей:

  • 172.16.32.0/24 - Офис

  • 172.16.33.0/24 - VPN

  • 172.16.34.0/24 - Прочее

Есть внешний IP адрес 109.61.231.230. Сотрудники должны подключаться к АТС из подсетей:

  • Офис

  • VPN

  • Просто из интернет (LTE), для мобильных сотрудников

Для подключения внешних сотрудников необходимо:

  • Публичный, статический IP адрес - приобретается у поставщика услуг связи интернет

  • В настройках сетевого интерфейса следует прописать внешний адрес АТС (см. wiki)

  • Сопоставить на маршрутизаторе внешние порты SIP и RTP (см. wiki) с соответствующими портам на АТС (один к одному). К примеру если на АТС порт SIP=5060 и RTP=с 10000 по 10000, то и на маршрутизаторе следует открывать лучше эти порты.

  • Включить на АТС firewall (см. wiki)

  • Настроить на АТС сетевой экран (см. wiki)

В сетевом экране следует описать все локальные подсети. Обязательно установите для таких подсетей флаг "Это локальная подсеть или VPN...". Если флаг не будет установлен, то АТС будет работать с данной подсеть как с внешней, в SIP сообщениях будет сообщаться внешний адрес АТС, а не внутренний, что повлечет за собой проблемы со звуком.

В версиях АТС 2021.4.1+ появилась возможность прописать stun сервер, он необходим для корректного определения внешнего адреса, и на моей практике, пригодился для корректной работы webRTC клиента:

Адрес STUN сервера

Симптомы некорректной настройки:

  • Односторонняя слышимость

  • Нет звука в обе стороны

  • Не возможно совершать звонки

  • Не завершается вызов

SIP ALG

"SIP ALG" - Это средство преодоление NAT, функция с подобным названием есть в большинстве современных роутерах.

Фактически, когда роутер получает SIP пакет с INVITE он сам подменит ip адрес в пакете, что может привести к проблемам со связью.

Если нет понимания как корректно настроить - отключите SIP ALG на вашем маршрутизаторе

Прочие проблемы

Есть ряд проблем которые сложно сходу обнаружить. На практике встречал следующее:

  • Рассыпался жесткий диск для хранения данных - как следствие, АТС не корректная работа станции, в частности проблемы с качеством связи

  • Не надежный канал связи интернет - перегнули сетевой провод (как ни странно встречается часто), перегрузили канал скачиванием файлов с torrent и прочее подобное

  • Прочие проблемы с железом

Вот пример анализа сетевого трафика по проблемному звонку:

Пример анализа трафика по проблемному звонку

На изображении видны "красно-желтые точки". Фактически, это "отброшенные пакеты", которые не будут воспроизведены клиенту. В данном случае при увеличении значения Jitter Buffer до 800, звук выравнивался, заикания пропадали.

При этом, клиент "получил" все пакеты, но из-за значительных задержек просто не стал их воспроизводить. Конкретно эта проблема заключалась в использовании системы виртуализации Proxmox, решилась переходом клиента на железный сервер.

Итоги

  • При возникновении проблем с качеством связи проверьте настройки NAT

  • Убедитесь, что все устройства поддерживают выбранные кодеки

  • Снимите дамп трафика, и отправьте его провайдеру на анализ

Если ничего не помогает - обращайтесь к нам, присылайте дампы.

Настройка громкости

Бывают случаи, когда при телефонном звонке очень тихо слышно клиента и на телефонном аппарате / софтфоне нет возможности повысить уровень громкости. Опишем способ, который может помочь в решении проблемы:

  1. Перейдите в раздел "Система" -> "Кастомизация системных файлов"

  1. Откройте на редактирование modules.conf

  1. Добавьте в конец файла

load => func_volume.so

Сохраните изменения

  1. Откройте на редактирование файл extensions.conf

  1. Добавьте следующий код в конец файла:

[all_peers-custom]
exten => _X!,1,Set(__DYNAMIC_FEATURES=vUp#vDown)
    same => n,Set(VOLUME(TX)=5)
    same => n,Set(VOLUME(RX)=5)
    same => n,return   
    
[add-trim-prefix-clid-custom]
exten => _.X!,1,Set(__DYNAMIC_FEATURES=vUp#vDown)
    same => n,Set(VOLUME(TX)=5)
    same => n,Set(VOLUME(RX)=5)
    same => n,return

[volume-level-control]
exten => up,1,NoOp()
    same => n,ExecIf($[ "${Vol}x" == "x" ]?Set(Vol=0)
    same => n,Set(Vol=$[${Vol}+5])
    same => n,Set(VOLUME(TX)=${Vol})  
    same => n,return
exten => down,1,NoOp()
    same => n,ExecIf($[ "${Vol}x" == "x" ]?Set(Vol=0)
    same => n,Set(Vol=$[${Vol}-5])
    same => n,Set(VOLUME(TX)=${Vol})  
    same => n,return

Сохраните изменения.

  1. Откройте на редактирование файл features.conf

  1. Добавьте в конец файла следующий код:

[applicationmap](+)
vUp => #1,self,Gosub,"volume-level-control,up,1"
vDown => #0,self,Gosub,"volume-level-control,down,1"

Сохраните изменения.

Громкость по умолчанию станет выше, значение 5 вместо 0. При желании сотрудник может набрать #1 для увеличения громкости или #0 для уменьшения.

Диагностика проблем