. Установка и настройка Asterisk под iD Phone (iDPhone)
Установка и настройка Asterisk под iD Phone (iDPhone)

Установка и настройка Asterisk под iD Phone (iDPhone)

В данной инструкции описано как с нуля установить и произвести первоначальную настройку компьютерной телефонии на базе «Asterisk» с подключением к услуге «iD Phone» компании «Казахтелеком».

  • во-первых, по указанной инструкции система у меня не заработала;
  • во-вторых, не со всеми решениями в ней я согласен;
  • в-третьих, мы будем настраивать не «Elastix», а «AsteriskNow»;
  • в-четвертых, я постарался написать инструкцию максимально подробной — для людей мало разбирающихся в Linux-системах и в «Asterisk» (каковым я и сам являюсь).
  1. Операционная система будет установлена с нуля. Использован будет дистрибутив «AsteriskNOW» — это операционная система «CentOS» с предустановленным программным обеспечением «Asterisk» и веб-интерфейсом для его управления «FreePBX». Другими словами в данной инструкции отсутствует блок, в котором была бы описана установка «Asterisk» на уже развернутой Linux-системе.
  2. «Казахтелеком» предоставляет услугу «iD Phone» не через Интернет, а подключая абонентов к своей специальной SIP-сети. Физически, конечно, это чаще всего один канал (ADSL или оптика) вместе с Интернет и/или «iD TV». Роутер же отдает предоставляемые услуги на разные порты. Считаем, что у нас уже есть настроенный роутер, который с одного порта отдает Интернет, а с другого — «iD Phone».
  3. Компьютер имеет две сетевых карты: одна из них смотрит в Интернет, другая — в SIP-сеть «Казахтелекома».

Входим в систему под пользователем root и паролем, который задали при установке.

Для редактирования файлов я использую файловый менеджер «Midnight Commander». Для его установки необходимо дать следующую команду:

Эта команда сработает, если ваш компьютер уже получил доступ к Интернету. Это может не произойти по причинам описанным ниже. Тогда можно временно отключить сетевой кабель от интерфейса, который смотрит в SIP-сеть «Казахтелекома». Соглашаемся на всё. Когда понадобиться отредактировать какой-нибудь файл, запускаем «Midnight Commander» командой:

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

Устанавливаем русский язык. Для этого запускаем инсталлированную утилиту:

Для того, чтобы изменения приняли силу, необходимо выйти из терминала и зайти в него снова. После этого, например, в «Midnight Commander» интерфейс станет на русском языке.

Проверяем, что работают оба сетевых интерфейса. Даем команду:

У меня такой вывод:

Это обозначает, что активен только один интерфейс. Активируем второй интерфейс. Для этого необходимо отредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth1. Значение параметра ONBOOT необходимо изменить с «no» на «yes». Даем команду на перезапуск сетевых интерфейсов:

Еще раз даем команду:

И получаем уже новый вывод:

Теперь видно, что активировались оба интерфейса. Разберемся, который из них куда смотрит. eth0 получил адрес из подсети 192.168.0.X — это интерфейс, который смотрит в Интернет. Именно из этой подсети раздает адреса DHCP-сервер роутера. eth1 получил адрес из подсети 10.X.X.X — это интерфейс, который смотрит в SIP-сеть «Казахтелекома». Именно из этой подсети раздает адреса DHCP-сервер «Казахтелекома».

А вот теперь мы приблизились к проблеме, которая мешает одновременному функционированию доступа к Интернету и к SIP-сети «Казахтелекома». Для лучшего понимания дадим команду:

Какой вывод из этого можно сделать? На первый интерфейс у нас назначен шлюз по умолчанию 192.168.0.1 (IP-адрес роутера). Но вместе с получением IP-адреса на второй интерфейс от DHCP-сервера «Казахтелекома» приходит адрес шлюза, который перебивает установленный на первом интерфейсе. После этого весь Интернет-трафик начинает идти в SIP-сеть «Казахтелекома». Запомним адрес шлюза «Казахтелекома» — он нам может потребоваться дальше. В моем случае — 10.2.X.1. Для устранения проблемы конфликта шлюзов заставим второй интерфейс получать от DHCP-сервера только те параметры, которые не помешают работе первого интерфейса. Для этого создаем файл /etc/dhclient-eth1.conf — это конфигурационной файл DHCP-клиента. В файл необходимо добавить следующие строки:

По поводу первой строки. Была у меня проблема с одним из роутеров D-Link — даже при отключенном DHCP-сервере роутер присваивал адрес на интерфейс, подключенный к SIP-сети «Казахтелекома». Первая строка конфигурационного файла запрещает интерфейсу eth1 получать IP-адрес от DHCP-сервера с адреса 192.168.0.1. Итак, мы добились того, что шлюзом по умолчанию остается роутер. Это решение порождает другую проблему — часть трафика телефонии должна была бы уходить в SIP-сеть, но будет уходить в Интернет. Для нормального функционирования телефонии необходимо, чтобы в интерфейс SIP-сети уходил не только трафик, имеющий назначением подсеть 10.2.X.Х (в моем случае), а весь трафик для подсети 10.Х.Х.Х. Для этого создаем файл /etc/sysconfig/network-scripts/route-eth1 и добавляем в него следующую строку:

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

10.2.X.1 — это адрес шлюза «Казахтелекома» для моего случая. Такое решение мне не очень нравится, т.к. адрес своего шлюза «Казахтелеком» может поменять в любой момент, но как сделать лучше, я не знаю. По-идее, необходимо сначала каким-то образом получить адрес шлюза по DHCP, а потом уже создавать маршрут через этот адрес.

Настраиваем статический IP-адрес на интерфейсе, который смотрит в Интернет, и по совместительству в локальную сеть, где в будущем будут развернуты SIP-клиенты нашей IP-АТС. Для этого даем команду:

Даем команду на перезапуск сетевых интерфейсов:

В дальнейшей настройки нашей IP-АТС мы будем неоднократно обращаться к имени SIP-сервера «Казахтелекома»: sip.telecom.kz. При текущей настройке нашего компьютера это имя разрешается в белый IP-адрес 92.46.61.21. Нам необходимо добиться того, чтобы это имя разрешалось в IP-адрес SIP-сети «Казахтелекома». Сначала необходимо узнать внутренний IP-адрес сервера, который определен для вашего региона. Для этого открываем следующую страницу: http://idphone.kz/?page_id=1010. На ней есть таблица адресов Outbound Proxy при настройке услуги iD Phone через pvc 0/41. Именно в ней ищем необходимый нам адрес. На всякий случай процитирую эту таблицу здесь:

Теперь добавляем в файл /etc/hosts такую строку:

Это для Петропавловска (мой случай). Замените адрес 10.0.0.116 на соответствующий вашему региону.

Убеждаемся, что все работает правильно. Даем команду:

Если пинг идет, значит компьютер имеет доступ к Интернету. Даем команду:

Если имя разрешилось, значит DNS-работает корректно. Даем команду:

Если пинг идет, значит компьютер имеет доступ к SIP-сети «Казахтелекома». На момент написания статьи в «Казахтелекомовской» сети пинговались адреса 10.0.0.1, 10.0.0.2, 10.0.0.3. Но, на самом деле отсутствие пинга не может 100% говорить о том, что у вас проблемы с настройкой. Дело в том, что «Казахтелеком» может в любой момент закрыть пинг на своих серверах. Например, адрес 10.0.0.116 на момент написания статьи не пинговался. Даем команду:

Если имя разрешается в тот адрес, что задали в файле /etc/hosts, значит настройка этого момента произведена верно. Как написано выше, пинг на sip.telecom.kz может не идти.

Произведем обновление модулей операционной системы. Для этого даем команду:

На все вопросы системы соглашаемся.

Мы закончили с настройкой операционной системы и теперь пришло время переходить к настройке «Asterisk». Для начала нам необходимо выяснить наши параметры подключения к SIP-серверу «Казахтелекома». Для этого идем в личный кабинет услуги «ID Phone»: https://cabinet.idphone.kz. Будьте внимательны: этот сайт открывается только для пользователей Интернета от «Казахтелекома». Т.е. если вы, например, счастливый пользователь проводного Интернета от «Билайна», то кабинет у вас не откроется. В кабинете следуем к разделу с параметрами подключения:

Значения в полях «Линия/Порт» и «Логин» у меня одинаковые. У вас тоже, скорее всего, т.к. поля эти для редактирования закрыты. Договоримся в дальнейшем это значение называть <SIP-логин>. Ну, а значение из поля «Пароль» будем называть <SIP-пароль>.

Открываем веб-интерфейс управления «Asterisk», который называется «FreePBX». Для этого на любом компьютере в локальной сети открываем веб-обозреватель и в адресной строке набираем адрес, который присвоили «Asterisk». В нашем случае:

Первым делом обновим все модули FreePBX до последних версий.

Предустановленные параметры входа в админку: логин — admin, пароль — admin:

В раздел «опции для PEER» вставляем следующий текст:

В раздел «опции USER» вставляем следующий текст:

Поле «Строка регистрации» заполняем следующей строкой:

Остальные поля я заполняю значением телефонного номера и производными от него:

Проверяем в консоли операционной системы, что транк зарегистрировался. Для этого сначала надо попасть в интерфейс командной строки «Asterisk». Набираем:

Должен отобразиться наш транк и его состояние должно быть Registered. Вот пример моего вывода:

  • его название («outside», например);
  • шаблон номера, по которому будет срабатывать этот маршрут (шаблон «9|.» обозначает, что все номера, которые начинаются на «9» будут отработаны этим маршрутом, при этом девятка будет убрана из номера, когда номер пойдет в транк);
  • транк, который мы создали ранее, и в который мы хотим отправлять все наши звонки («502000»).

Создаем внутренний номер:

  • сам номер (например, «101»);
  • как будет отображаться звонящий с этого номера на экране (например, так же «101»);
  • пароль внутреннего номера (минимум 6 символов, минимум две буквы, минимум две цифры — например, «pwd101»).

Создаем входящую маршрутизацию (объясняем системе, что делать, когда снаружи кто-то позвонит на наш транк):

  • его описание (например, «inside»);
  • куда отправлять входящий звонок (в нашем случае отправляем на внутренний номер «101»).

Ну вот мы и закончили настраивать нашу АТС. Пришло время проверить, как все работает. Для этого установим софт-фон и зарегистрируемся на нашей АТС за внутренним номером «101». Качаем «X-lite» отсюда http://www.counterpath.com/x-lite-for-windows-download.html. Устанавливаем на одном из компьютеров локальной сети.

  • внутренний номер, за которым мы хотим зарегистрироваться (в нашем случае «101»);
  • адрес IP-АТС в локальной сети (в нашем случае «192.168.0.3»);
  • пароль внутреннего номера (в нашем случае «pwd101»).

Если мы все сделали правильно, то в статусе софт-фона появится «Available»:

А вот теперь действительно все! Пробуем позвонить с софт-фона в город, а потом с города, на наш номер «ID Phone».

Русифицируем IVR (набор голосовых сообщений, которые умеет произносить АТС). Для этого даем ряд команд:

Я скачиваю пакет русификации с github'а, т.к. на официальном ресурсе (http://downloads.asterisk.org/pub/telephony/sounds/) нет пакета с дополнительными звуками, а без них АТС будет говорить по-русски только частично.

Теперь в файл /etc/asterisk/sip_general_custom.conf необходимо добавить строку:

Перезапускаем АТС и звоним на номер *60. Если все сделали правильно, то АТС на правильном русском языке скажет нам текущее время.

В качестве бонуса для тех, кто так же подвержен паранойе, как и я, немного безопасности.

Во-первых, сделаем доступным FreePBX по https. Для этого устанавливаем соответствующий пакет:

В целях безопасности разрешим работать с нашей АТС только из нашей локальной сети — вдруг кто из Казахтелекомовской подсети попробует нашу АТС на прочность. Настраиваем брандмауэр группой команд (по мотивам «Asterisk + iptables — самый простой способ настройки» — большое спасибо varnav за это):

Сохраняем наши правила:

Чтобы убедиться, что мы ничего не пропустили, посмотрим список правил брандмауэра:

📎📎📎📎📎📎📎📎📎📎