ELASTIX – общайтесь свободно

Юров Владислав

Приложения

 

 

Русификация Elastix 2.4

 

Русификация Elastix состоит из нескольких частей:

• добавление русского голоса

• настройка в Asterisk языка по умолчанию

• настройка говорящих часов (номер «100»)

• конвертация базы данных asterisk из кодировки latin1 в кодировку utf8

• настройка для подключений к базам данных mySQL использования кодировки utf8

• отключение контроля вводимых символов в интерфейсе администрирования Elastix

 

Добавление русского голоса

Скачайте русский голос, используя следующие команды:

su root

cd /tmp

wget https://github.com/pbxware/asterisk-sounds/tarball/master – O asterisk-sounds-ru.tar.gz

tar xzvf asterisk-sounds-ru.tar.gz

mv /var/lib/asterisk/sounds/ru /var/lib/asterisk/sounds/ru-orig

mkdir /var/lib/asterisk/sounds/ru

mv pbxware-asterisk-sounds-1fd21fa/* /var/lib/asterisk/sounds/ru/

Либо установите русский голос, используя бесплатный модуль bSmart Voice Manager:

 

Настройка говорящих часов (номер «100»)

Если не выбрали при установке, настройте также часовой пояс:

sudo cp /etc/localtime /etc/localtime.orig

sudo ln – sf /usr/share/zoneinfo/Europe/Moscow localtime

В web-интерфейсе откройте меню «Feature Codes» в разделе «PBX», укажите номер «100» в поле «Speaking Clock»:

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

 

Настройка в Asterisk языка по умолчанию

Откройте меню «General Settings» в разделе «PBX»:

Укажите вашу страну:

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

Откройте меню «Asterisk File Editor» в закладке «Tools» раздела «PBX»:

Убедитесь, что в файле «sip_general_custom.conf» есть строка «language=ru»:

При необходимости добавьте строку, сохраните изменения и перезапустите Asterisk.

 

Конвертация базы данных в UTF8

Начиная с Elastix 2.5 поддерживается работа в кодировке UTF-8, что позволяет использовать для абонентов имена на кириллице и на других языках. Однако Elastix 2.4 и более ранние умеют работать только с алфавитом latin1. Если компания уже давно использует Elastix, порой проще русифицировать текущую версию, чем обновить систему.

Чтобы добавить в Elastix 2.4 полноценную поддержку русского языка экспортируйте, пересоздайте и восстановите БД в UTF-8, а также настройте использование кодировки UTF8 для подключения к mySQL. Для этого создайте скрипт astdb2utf.sh (или загрузите):

sudo mkdir /root/tasks

sudo nano /root/tasks/astdb2utf.sh

напишите следующий текст скрипта:

#!/bin/bash

#конвертация базы данных в UTF-8

fcfg=/etc/amportal.conf

dbuser=$(grep '^AMPDBUSER=' ${fcfg} | sed "s/.*[=]//g" | sed "s/[]//g" | tr – d '\n')

dbpassword=$(grep '^AMPDBPASS=' ${fcfg} | sed "s/.*[=]//g" | sed "s/[]//g" | tr – d '\n')

#конвертация БД в кодировку utf-8

db2utf8() {

db=$1

dbu=$2

dbpwd=$3

fdb=/tmp/${db}.sql

fdbutf=/tmp/${db}-utf8.sql

sql="DROP DATABASE ${db}"

sql="$sql; CREATE DATABASE ${db} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"

mysqldump ${db} – u ${dbu} – p${dbpwd} >${fdb}

sed "s/CHARSET[=]latin1/CHARSET=utf8/g" ${fdb} >${fdbutf}

echo ${sql} | mysql ${db} – u${dbu} – p${dbpwd}

cat $fdbutf | mysql ${db} – u${dbu} – p${dbpwd}

}

#настройка utf8 для подключения к базе данных

ifnotexists() {

str=$1

after=$2

patt=$(echo $2 | sed 's/[=]/[=]/g')

fn=$3

cnt=$(grep – c "${str}" ${fn})

if [$cnt – le 0]; then

sed – i – e "s/.*${patt}/${after}\n${str}/g" ${fn}

echo "added string ${str}"

fi

}

db2utf8 'asterisk' «$dbuser» «$dbpassword»

db2utf8 'asteriskcdrdb' "$dbuser" "$dbpassword"

ifnotexists «character-set-server=utf8» «user=mysql» «/etc/my.cnf»

ifnotexists "collation-server=utf8_general_ci" "user=mysql" "/etc/my.cnf"

ifnotexists "init-connect='set charset utf8; SET NAMES utf8;'" "user=mysql" "/etc/my.cnf"

fl1=/var/www/html/admin/components.class.php

cp $fl1 ${fl1}-orig

txt_old='htmlentities[(][$]this[-][>]currentvalue[)]'

txt_new='htmlentities($this->currentvalue, ENT_COMPAT, "utf-8")'

sed "s/$txt_old/$txt_new/g" – i $fl1

txt_old='htmlentities[(][$]currentvalue[)]'

txt_new='htmlentities($currentvalue, ENT_COMPAT, "utf-8")'

sed "s/$txt_old/$txt_new/g" – i $fl1

fl1=/var/www/html/modules/pbxadmin/js/libfreepbx.javascripts.js

fl2=/var/www/html/modules/pbxadmin/js/script.legacy.js

cp $fl1 ${fl1}-orig

cp $fl2 ${fl2}-orig

txt_old='function isLetter[(]c[)]'

txt_new='function isLetter(c) { return (1==1); } function isLetter_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

txt_old='function isCallerIDChar[(]c[)]'

txt_new='function isCallerIDChar(c) { return (1==1); } function isCallerIDChar_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

txt_old='function isAlphanumeric[(]c[)]'

txt_new='function isAlphanumeric(c) { return (1==1); } function isAlphanumeric_old(c)'

sed "s/$txt_old/$txt_new/g" – i $fl1

sed "s/$txt_old/$txt_new/g" – i $fl2

Запустите созданный скрипт и перезапустите mySQL:

sudo bash /root/tasks/astdb2utf.sh

service mysqld restart

Проверьте, что теперь Вы можете создавать абонентов (Extensions) с русскими именами. Откройте меню «Extensions» в разделе «PBX». Обновите страницу браузера, чтобы обновился скрипт, проверяющий корректность ввода. Добавьте новый телефон, указав русское имя в поле «Display Name»:

Сохраните изменения и проверьте, что в поле Display Name имя осталось написанным по-русски.

 

Меры повышения безопасности

 

Если Elastix находится в открытом доступе, перечисленные в данном приложении мероприятия по защите станции жизненно необходимы. Без должной защиты через несколько недель или месяцев станция будет взломана и начнет использоваться злоумышленниками для звонков за счет вашей компании.

Для Elastix, установленных в локальной сети предприятия, описанные ниже меры не столь критичны, но настоятельно рекомендуются. Не забывайте про компьютеры пользователей – наличие антивирусов не спасает компьютеры от заражения и рано или поздно они станут источником взлома станции. Для взломщиков станция из локальной сети представляет не меньший интерес – злоумышленники получат пароли подключения к вашим провайдерам и будут использовать их услуги за Ваш счет.

Кроме описанных ниже настроек рекомендую приобрести и установить дополнение Anti-Hacker. Дополнение стоит $15 и позволяет существенно упростить процесс настройки защиты, защищая Elastix от атак «грубой силы» – атак, перебирающих пароли. Конечно, из чисто спортивного интереса можно самостоятельно настроить Fail2ban, но практичнее приобрести и настроить Anti‑Hacker, проделать описанные ниже настройки по изменению портов используемых сервисов и активировать FireWall, встроенный в Elastix.

Дополнительную информацию по защите Elastix и его компонентов не сложно найти в Интернет. Например, полезно, в дополнение к описанному ниже, прочитать:

• «9 правил, как защитить свой Asterisk» ()

• «Семь шагов по улучшению безопасности Asterisk» ()

• «Грабли, или 5 типичных ошибок настройки Asterisk ()

 

Усложнение перебора паролей

Рекомендуется включать опцию Asterisk «alwaysauthreject=yes», чтобы усложнить задачу злоумышленников по подбору паролей. В Elastix эта опция активируется через WEB-интерфейс. Зайдите в меню PBX\Tools\Asterisk File Editor, найдите файл «sip_general_custom.conf», нажмите на него и добавьте в него «alwaysauthreject=yes»:

 

Установка и настройка дополнения Anti-Hacker

Установка и настройка модуля требует лишь пары минут:

• откройте WEB-панель управления Elastix

• откройте закладку Addons

• дождитесь загрузки списка доступных дополнений

• нажмите BUY напротив дополнения Anti-Hacker

• откройте закладку Anto-Hacker в разделе Security

• настройте параметры модуля, загрузите полученный ключ лицензии, нажмите Update

• запустите службу Anti-Hacker, нажав Service Start

Чтобы убедиться, что деньги на защиту потрачены не зря, зайдите на закладку Anti-Hacker через месяц, оцените количество попыток добраться до ваших секретов. Если станция установлена в корпоративной сети и недоступна извне, скорее всего, список заблокированных адресов будет пуст, но лучше и в этом случае не экономить на спичках – однажды хакеры задействуют свою бот-нет из зараженных компьютеров, среди которых могут оказаться компьютеры и вашей сети.

 

Защита консольного доступа по SSH

Подключитесь к Elastix через SSH-соединение как пользователь root и создайте пользователя, например, «admin1», назначьте пароль, предоставьте пользователю необходимый доступ:

groupadd sudoers

adduser – G sudoers admin1

passwd admin1

echo '%sudoers ALL = (ALL) ALL' >>/etc/sudoers

sed – i '2i\PATH=$PATH:/sbin:/usr/sbin' /home/admin1/.bashrc

Откройте файл настроек SSH

mcedit /etc/ssh/sshd_config

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

Port 11122

AllowUsers [email protected] # from Office #1

AllowUsers [email protected] # from Office #2

AllowUsers [email protected] # from home

PermitRootLogin no

Если Вы не используйте GSS API (например, для авторизации через Active Directory), можно отключить этот протокол, чтобы SSH подключался быстрее:

GSSAPIAuthentication no

Перезапустите службу SSH:

service sshd restart

Подключитесь к системе как пользователь admin1:

ssh – p 11122 [email protected]

Подключившись к системе настройте сетевую переменную $PATH:

nano.bash_profile

измените строку PATH следующим образом:

PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

сохраните изменения. Теперь подключайтесь к АТС только как admin1, забудьте про пользователя root. Для выполнения команд, требующих полных прав к системе используйте префикс «sudo» перед командами. Например, «sudo service asterisk restart».

 

Защита доступа к WEB-интерфейсу

Откройте основной файл настроек HTTP

sudo mcedit /etc/httpd/conf/httpd.conf

Измените порт и ограничьте доступ:

Listen 11180 #вместо Listen 80

#замените:

# Order Allow, Deny

# Deny from All

#на свои адреса:

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

Откройте файл настроек SSL

sudo mcedit /etc/httpd/conf.d/ssl.conf

Измените порт:

Listen 11188 #вместо Listen 443

Откройте файл настроек сайта управления Elastix

sudo mcedit /etc/httpd/conf.d/elastix-htaccess.conf

добавьте адреса, с которых позволяется подключаться к станции:

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Allow from 127.0.0.1::1

Allow from 123.123.123.123 # Office #1

Allow from 123.124.125.126 # Office #2

Allow from 123.124.125.127 # Admin's home

AllowOverride All

Order Deny,Allow

Deny from All

Перезапустите службу HTTPD:

sudo service httpd restart

 

Защита портов через Firewall

Меню Security доступно в раскрывающемся списке

Исправьте порты для сервисов SSH,HTTPS на закладке Define Ports,View,Edit на те, которые были использованы в файлах /etc/ssh/sshd_config и /etc/httpd/conf/httpd.conf:

Активируйте Firewall:

Отключите неиспользуемые порты (обычно это HTTP, TFTP, SMTP, POP3, IMAP, IMAPS, POP3S), и примените изменения, нажав кнопку «Save»:

Порт TFTP используется для централизованной настройки телефонов (Autoprovisioning) в разделе Batch Configuration. Без доработки работает только при установке Elastix в локальной сети, где установлены телефоны. При установке сервера в Дата-центре TFTP лучше отключить.

Также крайне желательно ограничить ( ) подключения по протоколам SSH,HTTPS только из определенных сетей или с определенных IP-адресов. Это существенно уменьшит возможности для взлома вашей станции:

Где «1.2.3.4» – это адрес, с которого будет доступно подключение к сервису на «Destination Port», а «32» – это маска, означающая единственный адрес.

 

Высвобождение места на диске

 

Чтобы избежать аварийной остановки Elastix, поддерживайте необходимый системе объем свободной памяти на диске. Чаще всего при переполнении диска страдает файл AMPUSER, в котором хранится текущая информация обо всех абонентах, каналах и переадресациях. Повреждение этого файла приведет к прекращению работы телефонной станции или к ошибкам в работе, и доставит Вам множество неудобств по восстановлению файла. Обратите внимание на следующие задачи:

• удаление старых аудиозаписей разговоров

• удаление старых резервных копий настроек Elastix

• удаление старых файлов с факсами

• удаление старых файлов голосовой почты

• удаление старых записей из логов звонков (CDR)

Для первых трех задач можно использовать Addon Space Cleaner (, цена $9.90). После установки появляется в меню «System/Space Cleaner»:

Бесплатная версия позволяет автоматически удалять старые факсы и старые резервные копии настроек Elastix.

 

Настройка автоматического удаления старых аудиозаписей

Если ведете аудиозапись разговоров, но решили использовать бесплатную версию Space Cleaner, можете для поддержания свободного места настроить небольшой скрипт для удаления старых аудиозаписей.

Создайте файл /root/tasks/cleanup-asterisk.sh и откройте его в текстовом редакторе:

mkdir /root/tasks

nano /root/tasks/cleanup-asterisk.sh

Напишите следующий текст скрипта и сохраните:

#!/bin/bash

flog=/var/log/asterisk/cleanup-asterisk-log.txt

dtFormat="+%Y-%m-%d %H:%M:%S"

log() {

echo $(date "${dtFormat}")" $1" >>$flog

}

removeOld() {

folder=$1

days=$2

patt=$3

lst=/tmp/cleanup-list.txt

find – P "${folder}" – maxdepth 4 – mtime +${days} – iname "${patt}" – delete – print >${lst}

cnt=$(grep – c "" ${lst})

log "OK: ${cnt} files like '${patt}' removed from '${folder}'"

}

log «Cleanup Asterisk files started»

removeOld '/var/spool/asterisk/monitor' "120" '*.wav'

removeOld '/var/www/backup' "60" 'elastixbackup-*-ab.tar'

removeOld '/var/www/faxes' "120" '*.pdf'

removeOld '/var/www/faxes' "120" '*.tif'

removeOld '/var/www/hylafax' "120" '*.pdf'

removeOld '/var/www/hylafax' "120" '*.tif'

log "Cleanup complete"

exit 0

Настройте автоматический запуск, используя команду

crontab – e

убедитесь, что есть определение переменной окружения PATH

PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

чтобы запускать скрипт каждую ночь в 01:05 добавьте строку:

5 1 * * * /bin/bash /root/tasks/cleanup-asterisk.sh

Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».

Данный скрипт удаляет:

• аудиозаписи старее 120 дней

• резервные копии конфигурации Elastix старее 60 дней (кроме созданных вручную)

• факсы старее 120 дней

При необходимости по аналогии можно добавить другие папки для удаления старых файлов.

 

Отключение резервного копирования аудиозаписей

Если Вы включили резервное копирование конфигурации Elastix на закладке «System/Backup/Restore»

по умолчанию создаются резервные копии даже голосовой почты и аудиозаписей разговоров:

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

nano /var/www/backup/automatic_backup.php

перечислив компоненты для регулярного резервного копирования и дополнив строку запуска процедуры создания резервной копии строкой «' '.$components»:

$components=' – components=as_db,as_config_files,as_voicemail,as_sounds,'

.'as_mohmp3,as_dahdi,fx_db,fx_pdf,em_db,em_mailbox,ep_db,'

.'ep_config_files,sugar_db,vtiger_db,a2billing_db,mysql_db,'

.'menus_permissions,fop_config,calendar_db,address_db,conference_db,eop_db';

system('/usr/share/elastix/privileged/backupengine – backup – backupfile '.

$sBackupFilename.' – tmpdir '.$sBackupDir.' '.$components, $retval);

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

#!/bin/bash

fl=/var/www/html/modules/backup_restore/index.php

cp $fl ${fl}-orig

txt_old='["]as_monitor["]'

txt_new='\/\/ \"as_monitor\"'

sed "s/$txt_old/$txt_new/g" – i $fl

 

Отключение зависших соединений

 

Некоторые разговоры не могут быть разорваны автоматически. Чаще всего это происходит при ошибках передачи данных, когда телефонам абонентов и Elastix не удается корректно отреагировать на не доставленные пакеты. Если у абонентов включен режим Ожидания вызова (Call Waiting), то этого никто не заметит, так как новые звонки продолжат поступать. Если же зависнет соединение с абонентом, у которого отключен режим Ожидания вызова (Call Waiting), то связаться с таким абонентом не получится. Также зависшие соединения создают проблемы абонентам, у которых настроена условная переадресация (по состоянию Занято), и операторам Очередей (Queues), из-за чего к ним не будут поступать новые звонки. Зависшие соединения приходится разрывать вручную или автоматически. Далее описаны оба варианта отключения таких соединений.

 

Ручной разрыв соединений

К сожалению, связь может зависнуть на любой минуте. Есть возможность разорвать зависшее соединение вручную. Для этого следует выполнить в меню PBX \ Tools команду:

core show channels concise

и выяснить уникальный идентификатор соединения, который указан после последнего восклицательного «!» знака:

После чего дать команду вида:

channel request hangup 1422080480.13497

для принудительного разъединения:

Также можно установить бесплатный модуль bSmart Calls Disconnector, отображающий текущие разговоры в табличном виде и позволяющий разъединять соединения:

 

Автоматический разрыв соединений

Для автоматического разъединения соединений можно настроить опции Elastix, ограничивающие время разговора до 30 минут по внутренним и до 15 минут по внешним линиям при помощи указания опций набора:

L(x[: y[: z]])  – ограничить звонок временем в «x» ms, проиграть предупреждение за «y» ms до разрыва соединения, повторять предупреждение каждые «z» ms. Параметры y и z являются не обязательными.

Другой способ автоматического разрыва зависших соединений – создать небольшой скрипт, который будет отслеживать соединения и отключать их при обнаружении проблем. Для этого необходимо подключиться к Elastix под пользователем «root», создать небольшой скрипт:

mkdir /root/tasks

nano /root/tasks/drophunged.sh

следующего содержания (в скрипте «3600» соответствует 60 минутам):

#!/bin/bash

chnls=$(/usr/sbin/asterisk – rx 'core show channels concise' | tr " " "_")

n=0

d=0

for ch in $chnls

do

chname=$(echo $ch | awk '{split($0,a,"!"); print a[1]}')

chdur=$(echo $ch | awk '{split($0,a,"!"); print a[12]}')

chcode=$(echo $ch | awk '{split($0,a,"!"); print a[14]}')

if ["$chdur" – gt "3600"]; then

d=$(($d+1))

/usr/sbin/asterisk – rx "channel request hangup $chcode"

fi

n=$(($n+1))

done

затем назначить исполнение созданного скрипта:

crontab – e

добавлением к списку задач время его выполнения, например, каждый час в 17 минут:

17 0-23 * * * /bin/bash /root/tasks/drophunged.sh

Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».

 

Автоматическое восстановление подключений к внешним линиям

 

Система Elastix позволяет изменять настройки коммуникаций на лету, даже без разрыва текущих соединений. Это очень удобно, но иногда приводит к блокировке входящей связи, если после применения обновленных настроек Asterisk не удается установить заново соединения с Внешними линиями (Trunks). Чтобы быть уверенным, что станция компании осталась на связи с внешним миром, желательно после применения изменений переходить в меню PBX \ Tools и проверять состояние Внешних линий (Trunks) командой:

sip show registry

Корректное состояние внешних линий – «Registered»:

Если же Asterisk не удалось восстановить внешние подключения, состояние всех или части линий будет «Unregistered»:

Для повторения попытки установить соединения следует выполнить команду, которая не прерывая текущих разговоров, применит изменения повторно:

sip reload

В случае, если это не помогло, придется перезапустить ядро Asterisk, что на пару минут прервет связь (как текущие соединения, так и все новые попытки входящих и исходящих звонков):

core restart now

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

 

Автоматическое восстановление внешних подключений

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

mkdir /root/tasks

nano /root/tasks/check-unreg.sh

следующего содержания:

#!/bin/bash

CountReg=$(asterisk – rx "sip show registry" | grep – c 'Registered')

CountUnreg=$(asterisk – rx "sip show registry" | grep – c 'Unregistered')

if [$CountReg – le 1]; then

asterisk – rx "module reload chan_sip"

if (test "$1" = "second"); then

service asterisk restart

fi

fi

затем назначить исполнение созданного скрипта:

crontab – e

добавлением к списку задач время выполнения перезагрузки без разрыва связи (с параметром «first») и время перезагрузки с разрывом связи (с параметром «second»), на случай, если иначе восстановить связь не получилось, например, в 05:15 и 06:15 соответственно:

15 5 * * * /bin/bash /root/tasks/check-unreg.sh first

15 6 * * * /bin/bash /root/tasks/check-unreg.sh second

Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».

 

Использование PoE, VLAN, QOS

При использовании аналоговой телефонии часто не задумываешься о необходимости электропитания телефонов – необходимую для работы телефонов энергию предоставляет телефонная станция по телефонному кабелю. При переходе на VoIP телефонная станция не обеспечивает подключенные к ней телефоны энергией. VoIP телефоны необходимо либо подключать и к сети Ethernet и к электрическим розеткам, либо подавать электричество от свичей, используя PoE. Свичи с поддержкой PoE немного дороже аналогичных моделей без этой функции, но разница в цене обеспечивает большее удобство пользователям и техотделу:

• меньше проводов на столе (только Ethernet кабель)

• меньше блоков питания под столом (телефоны без PoE подключаются к электрической сети блоками питания, обычно занимающими 2–3 розетки в пилоте)

• меньше возможностей для пользователя случайно отключить телефон (уборщица задела пилот, тяжелый блок питания телефона чуть вышел из розетки и оставил сотрудника без связи)

• проще обеспечить энергонезависимость (достаточно обеспечить бесперебойным питанием свичи в серверной и телефоны будут получать электричество из серверной при кратковременных перебоях подачи электричества)

Также у аналоговой телефонной станции качество связи почти не зависит от хаоса в локальной телефонной сети предприятия. VoIP телефония чувствительна к качеству организации компьютерной сети. Если в компьютерной сети несколько десятков устройств, то VoIP, скорее всего, будет хорошо работать и без лишних телодвижений. Но чем больше сетевых устройств, тем сложнее обеспечить стабильную работу локальной сети. Чтобы наслаждаться высоким качеством голоса при использовании VoIP сети, необходимо грамотно настроить работу сети предприятия:

• использовать приоритезацию VoIP трафика (QOS), чтобы критичный к задержкам и к потере пакетов голосовой трафик передавался по сети с наивысшим приоритетом

• разделить локальную сеть на подсети (VLAN), чтобы уменьшить потери полосы пропускания от широковещательного трафика

• навести порядок в схеме сети (минимизировать каскадные подключения, по возможности исключить хабы, заменить неисправные сетевые карты и другое неисправное сетевое оборудование)

Посмотрите в серверной на частоту, с которой мигают лампочки портов на свичах. Если они практически непрерывно светятся – нужно наводить порядок, иначе качество речи VoIP может оказаться неприемлемо низким.

Подробнее про QoS и VLAN: