С тех пор, как в «Укртелекоме» сообщили, что восстановление кабельной сети ожидается не ранее первой половины 2020-ого года я окончательно понял, что ожидать нам уже нечего и в офисе скорее появится спутниковый телефон, чем проводной стационарный. Тем не менее, кабельная инфраструктура-то имеется, равно как и куча стационарных телефонных аппаратов, которые ныне продают по объявлениям едва ли не по десятке за штуку. На днях меня посетила очень интересная идея: а что, если использовать нашу IP-АТС еще и как коммутатор для стационарной связи? Для этого были закуплены адаптеры Cisco ATA 186 без блоков питания. Небольшой спойлер: как правило, там, где продают адаптеры, есть и блоки питания, но покупать вы их там будете втридорога. Лучше пойти на ближайший радиорынок и купить аналогичные БП в три (!) раза дешевле, как это сделал я.
Данная статья предполагает, что IP-АТС Asterisk у вас уже поднята и заострять на ней внимание я не буду, только укажу настройки, которые обеспечили оптимальное качество связи на канале ATA-Asterisk-ATA.
Итак, у нас на руках есть Cisco ATA 186. В отличие от роутеров и точек доступа, здесь не получится просто зайти на 192.168.0.1, ввести admin:admin и начать администрировать. Все намного интереснее — у адаптера есть голосовое меню настроек, но оно полностью на английском и версии на русском я никогда не встречал. Тем не менее, базовые настройки легко вводятся и без знания языка. Первое, что нам нужно сделать — это определить IP-адрес, к которому прибилась ATA в нашей локальной сети (и присвоен ли он вообще).
1. Настройки сети.
По умолчанию, ATA принимает настройки сетевого соединения по DHCP. Однако, если она прежде была в эксплуатации, то вполне вероятно, что IP-адрес установлен в такое значение, которое либо занято в вашей локальной сети, либо вообще находится вне адресного пространства.
Подключаем ATA к локальной сети, а в первый телефонный порт включаем любой стационарный телефон с тональным набором (хотя импульсные терминалы тоже с легкостью могут быть подключены к IP-АТС, но для этого между терминалом и ATA нужно установить конвертер импульсов в тональные сигналы, стоит копейки, т.к. практически неприменим в современном мире). Поднимаем трубку на телефоне и видим, что на верхней панели ATA загорелась красная кнопка. Жмем на нее и слышим в телефоне голосовое меню. Для того, чтобы узнать текущий IP-адрес адаптера, введите комбинацию 21#. Робот прочитает IP-адрес по цифрам с указанием точек. Если IP-адрес соответствует вашей локальной сети, то можно попробовать ввести его в веб-браузере и если откроется страница настройки, то от голосового меню можно отстать (одинаково при этом, нажмете вы на диез или же просто положите трубку).
Если названный роботом IP-адрес совершенно не соответствует вашему адресному пространству (например, у вас локальная сеть 192.168.0.0/16, а ATA присвоил себе адрес 10.0.1.250), то пришло время заняться настройкой сети более детально. Для начала, давайте определимся: в вашей сети адреса присваиваются по DHCP или вручную?
1.1. Присвоение адресов по DHCP.
Здесь все просто. Настройка DHCP имеет приоритет над статичным IP-адресом, поэтому достаточно только установить ее значение в единицу и перезапустить ATA.
Входим в голосовое меню адаптера и вводим комбинацию 20#1#3. После перезагрузки еще раз проверяем назначенный IP-адрес командой 21# и если он изменился, то дело в шляпе.
Кстати, небольшой совет: за все время своей работы в больших локальных сетях я убедился в том, что намного удобнее статичные IP-адреса объявлять не на самом устройстве, а на маршрутизаторе с использованием MAC-адреса. Это позволяет в последствии совершать любые манипуляции над локальным адресным пространством без необходимости бегать по всему офису и вручную менять настройки.
1.2. Присвоение статичного IP-адреса.
Тут картина совершенно обратная предшествующему пункту. DHCP отключается командой 20#0#3 (обязательно, иначе настройки статичного IP будут проигнорированы), затем начинается указание сетевых настроек. Предположим, что наш ATA будет иметь IP-адрес 10.1.1.150 в сети, где маршрутизатор находится по адресу 10.1.1.1 и все это имеет маску 255.255.255.0. В таком случае необходимо вводить поочередно следующие комбинации:
1#10*1*1*150#3
10#255*255*255*0#3
2#10*1*1*1#3
Если в открывшемся веб-интерфейсе у вас есть SIP — поздравляю — у вас SIP-версия прошивки. У меня же на всех ATA оказалась прошивка SCCP, которая для работы с Asterisk не годится. Как выяснилось, сменить прошивку очень даже просто.
2. Перепрошивка в SIP.
Сама работающая прошивка у меня есть, вот и она.
Процесс прошивки ATA очень прост: нам всего лишь нужно запустить примитивный веб-сервер, к которому в последствии обратится ATA и скачает себе весь исполняемый код. В том файле, ссылку на который я дал выше, есть все необходимое для работы и под Linux, и под Windows. Я лично сделал все из-под виртуальной машины с Windows, так как времени на эксперименты уже не было, но приведу на всякий случай и вариант для Linux, поскольку есть все шансы, что он сработает (а если не сработает, то мы ничего не теряем — прошивка начнется только с нашего ведома, а не автоматически).
Итак, что в Linux, что в Windows, сначала выбираем ту директорию, в которую мы распечатали прошивку. В моем примере это C:\cisco\186 для Windows и /home/cisco/186 для Linux:
cd C:\cisco\186\
sata186us.exe ATA030100SIP040211A.zup -any2 -d3
cd /home/cisco/186
chmod +x sata186us.linux
./sata186us.linux -any -d2 ATA030100SIP040211A.zup -h10.1.1.25
В примере для Linux IP-адрес 10.1.1.25 — это IP-адрес того компьютера, на котором мы запускаем сервер прошивок.
Если все прошло успешно, в ответ мы увидим сообщение с дальнейшими инструкциями. Теперь нам нужно войти в голосовое меню ATA и набрать комбинацию 100#10*1*1*25*8000# (у вас она будет другая, именно ту, что написал я, вводить не нужно). Процесс перепрошивки происходит достаточно быстро и в случае, если ATA успешно подключится к серверу, в консоли вы увидите процесс передачи данных. Если вдруг подключение не проходит, попробуйте проверить, открыт ли тот порт, на котором работает сервер (как правило, 8000) для входящих подключений. В Windows лучше всего временно отключить фаервол и на сообщение системы об административных действиях отвечать утвердительно — никаких вирусов в прошивке нет и если вы в этом сомневаетесь, то недолго и проверить на virustotal. После успешного завершения процесса прошивки вы услышите в трубке «Upgrade successfull», только после этого можно класть трубку и перезагружать ATA. Сервер прошивок можно просто закрыть, он нам больше не нужен.
3. Настройка SIP.
Попробовали зайти в веб-интерфейс ATA и получили сообщение «Invalid Access»? Это не сбой прошивки и не закодированный какой-то файл, просто теперь при обращении по IP необходимо добавить также путь «/dev».
Теперь кратко опишу параметры, которые нужно вводить в веб-интерфейсе. По сути дела,
нам нужен только логин, пароль, IP-адрес сервера Asterisk и его порт.
GkOrProxy и OutBoundProxy — IP-адрес сервера и порт через двоеточие.
Например, 10.1.1.107:5000.
UID0, LoginID0 и DisplayName0 — логин первого порта телефонии. Везде один и тот же.
PWD0 — пароль первого порта.
UID1, LoginID1 и DisplayName1 — логин второго порта телефонии.
PWD1 — пароль второго порта.
UseLoginID и SIPRegOn — устанавливаем в «1» и разрешаем авторизацию по логину.
SIPRegInterval — рекомендуется установить в «1800».
SIPPort — по умолчанию установлено в «5060», но во всех инструкциях почему-то советуют изменить на «7070». В причины не вникал, но работает нормально и так,
и так.
4. Регистрация на Asterisk.
Вот мы и подошли к завершающей стадии. Подключаемся к нашему серверу Asterisk, да и открываем файл «/etc/asterisk/sip.conf». В файле создаем такие конструкции для каждого отдельного клиента.
[someTelephonyUser]
type=friend
secret=MySecretPassword
directmedia=no
nat=force_rport,comedia
host=dynamic
canreinvite=no
qualify=300
disallow=all
allow=ulaw
callerid="Home <1001>"
Небольшое пояснение: я большой фанат использования буквенных логинов для большей безопасности, поэтому вместо номера телефона у меня логин «someTelephonyUser». Вы можете установить вместо него напрямик номер и тогда следующий пункт можно будет пропустить. «MySecretPassword» — пароль учетной записи, а «Home <1001>» — это Caller ID — именно так номер будет определяться у того абонента, которому мы будем звонить. 1001 — это внутренний номер, который я присваиваю этому абоненту.
5. Маршрутизация внутренней связи.
Если в прошлом пункте вы не ввели номер в первую строку, то эта секция для вас. Открываем «/etc/asterisk/extensions.conf» и добавляем в тот контекст, где обслуживаются исходящие звонки с SIP:
exten => 1001,1,Answer()
exten => 1001,2,Dial(SIP/someTelephonyUser,60,ir)
exten => 1001,3,Hangup()
Эта запись позволяет преобразовать телефонный номер 1001 в логин пользователя someTelephonyUser и позвонить ему. Перезагружаем Asterisk (или делаем dialplan reload) и пользуемся с наслаждением.