This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
asterisk._телефонное_оборудование_и_безопасность_2025 [2025/05/27 12:11] val created |
asterisk._телефонное_оборудование_и_безопасность_2025 [2025/05/27 12:47] (current) val [3.2 Настройка NAT и FIREWALL на интернет шлюзе предприятия] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Asterisk. Телефонное оборудование и безопасность 2025 ====== | ====== Asterisk. Телефонное оборудование и безопасность 2025 ====== | ||
+ | ===== Программа курса ===== | ||
+ | |||
+ | * [[http://www.specialist.ru/course/asterisk2|Asterisk. Уровень 2. Телефонное оборудование и безопасность]] | ||
+ | ===== Модуль 0. Подготовка стенда в классе ===== | ||
+ | |||
+ | * Узнать свой номер стенда | ||
+ | |||
+ | ===== Модуль 1. Развертывание компьютерной и телефонной сети предприятия ===== | ||
+ | |||
+ | ==== Теория ==== | ||
+ | |||
+ | * Базовая схема компьютерной сети предприятия | ||
+ | * Базовая схема телефонии предприятия | ||
+ | |||
+ | ==== Лабораторные работы: Настройка ip и voip сети предприятия ==== | ||
+ | |||
+ | |||
+ | ==== 1.1 Схема стенда, импорт, настройка и запуск VM gate и server ==== | ||
+ | <code> | ||
+ | Запустите с правами Administrator | ||
+ | |||
+ | C:\cmder\Cmder.exe | ||
+ | |||
+ | λ bash | ||
+ | |||
+ | λ cd | ||
+ | |||
+ | λ test -d conf && rm -rf conf | ||
+ | |||
+ | λ git clone http://val.bmstu.ru/unix/conf.git | ||
+ | |||
+ | λ cd conf/virtualbox/ | ||
+ | |||
+ | !!! 2 - это номер курса, вместо X укажите Ваш номер стенда, если не помните, спросите преподавателя !!! | ||
+ | |||
+ | λ ./setup.sh X 2 | ||
+ | </code> | ||
+ | ==== 1.2 Настройка сети VM gate и server ==== | ||
+ | |||
+ | * [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | ||
+ | |||
+ | * gate | ||
+ | <code> | ||
+ | # sh net_gate.sh | ||
+ | |||
+ | # init 6 | ||
+ | </code> | ||
+ | |||
+ | * server | ||
+ | <code> | ||
+ | # sh net_server.sh | ||
+ | |||
+ | # init 6 | ||
+ | </code> | ||
+ | |||
+ | * Создать в Putty профили gate, server и подключиться | ||
+ | |||
+ | ==== 1.3 Настройка сервисов DHCP и DNS ==== | ||
+ | |||
+ | * [[Сервис DHCP]] | ||
+ | <code> | ||
+ | gate:~# sh conf/dhcp.sh | ||
+ | </code> | ||
+ | |||
+ | * [[Финальная настройка DNS сервера]] | ||
+ | <code> | ||
+ | server:~# sh conf/dns.sh | ||
+ | </code> | ||
+ | |||
+ | * Настройка клиента DNS на gate и server | ||
+ | <code> | ||
+ | # cat /etc/resolv.conf | ||
+ | </code><code> | ||
+ | search corpX.un | ||
+ | nameserver 192.168.X.10 | ||
+ | </code><code> | ||
+ | # nslookup ns | ||
+ | </code> | ||
+ | |||
+ | ==== 1.4 Настройка сервера Asterisk, sip каналов и базового плана звонков ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Установка]] | ||
+ | * [[Сервис Asterisk#Настройка CHAN_SIP каналов]] | ||
+ | * [[Сервис Asterisk#Настройка базового плана нумерации]] | ||
+ | * Самостоятельная работа **"Ручная"** настройка пользовательского оборудования SIP Phone Panasonic KX-HDVXXX ([[SIP Phone Panasonic KX-HDVXXX#Настройка через WEB интерфейс]]) на номер 401 | ||
+ | |||
+ | ===== Вопросы ===== | ||
+ | |||
+ | * Перечислите варианты, позволяющие узнать IP адрес, полученный оборудованием? | ||
+ | |||
+ | ===== Модуль 2: Подключение телефонного оборудования к Asterisk ===== | ||
+ | |||
+ | ==== Теория ==== | ||
+ | |||
+ | ==== Обзор типов телефонного оборудования и вариантов подключения его к Asterisk ==== | ||
+ | |||
+ | * [[https://ru.wikipedia.org/wiki/IP-%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD|IP-телефон]] | ||
+ | * [[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BB%D0%B0%D1%82%D1%8B_%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F|Телефонные платы расширения]] | ||
+ | * [[https://www.digium.com/products/telephony-cards|Digium Telephony Cards]] | ||
+ | * [[https://ru.wikipedia.org/wiki/VoIP-%D1%88%D0%BB%D1%8E%D0%B7|VoIP-шлюз]] | ||
+ | |||
+ | ==== Интерфейсы FXS, FXO и PRI ==== | ||
+ | |||
+ | * [[https://ru.wikipedia.org/wiki/FXS|FXS (Foreign Exchange Station или Subscriber)]] | ||
+ | * [[https://ru.wikipedia.org/wiki/FXO|FXO (Foreign eXchange Office)]] | ||
+ | * [[https://en.wikipedia.org/wiki/Loop_start|Loop start (often called kewlstart)]] | ||
+ | * [[https://ru.wikipedia.org/wiki/Мультиплексирование_с_разделением_по_времени|Мультиплексирование с разделением по времени]] | ||
+ | * [[https://ru.wikipedia.org/wiki/ISDN|ISDN (Integrated Services Digital Network)]] | ||
+ | * [[https://ru.wikipedia.org/wiki/PRI|Интерфейс первичного уровня (Primary Rate Interface, PRI)]] | ||
+ | * [[https://ru.wikipedia.org/wiki/Q.931|Q.931 - протокол управления соединениями для цифровой телефонии ISDN]] | ||
+ | ==== Схема интеграции VoIP и классического телефонного оборудования предприятия ==== | ||
+ | |||
+ | * [[https://ru.wikipedia.org/wiki/%D0%9E%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F_%D0%90%D0%A2%D0%A1|Офисная АТС, учрежденческая АТС (УАТС)]] | ||
+ | * [[https://ru.wikipedia.org/wiki/IP-%D0%90%D0%A2%D0%A1|IP-АТС, IP-УАТС (IP-PBX, от Internet Protocol и Private Branch Exchange)]] | ||
+ | |||
+ | ==== Использование методик расчета количества каналов для подключения Asterisk к PSTN и PBX ==== | ||
+ | |||
+ | * [[https://ru.wikipedia.org/wiki/%D0%AD%D1%80%D0%BB%D0%B0%D0%BD%D0%B3|Эрланг (обозначение Эрл) — безразмерная единица интенсивности нагрузки]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Лабораторные работы: Подключение голосовых шлюзов и IP телефонов к Asterisk ==== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 2.1 Интеграция Asterisk с классической PBX с использованием персонального голосового шлюза Linksys SPA-3102 ==== | ||
+ | |||
+ | **Сценарий**: Забыли про номерной план 4XX!!! В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью персональных шлюзов. | ||
+ | |||
+ | **Методическая рекомендация**: Выполнять лабораторную работу в два этапа, отдельно для интерфейсов FXS и FXO | ||
+ | |||
+ | * 2.1.1 Переключение телефона 1XX сотрудника на Asterisk и предоставление ему услуг | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [101+X] | ||
+ | type=friend | ||
+ | secret=tpassword101+X | ||
+ | host=dynamic | ||
+ | </code><code> | ||
+ | gate# dhcp-lease-list | ||
+ | </code> | ||
+ | |||
+ | * [[Linksys SPA-3102#Включение WEB интерфейса на WAN интерфейсе]] (Узнать назначенный устройству IP адрес) | ||
+ | * [[Linksys SPA-3102#Настройка VoIP параметров]] | ||
+ | * Подключение к VoIP ([[Сервис Asterisk#Шаблон конфигурации для осуществления исходящих вызовов]]) | ||
+ | * Сервис FollowMe ([[Сервис Asterisk#Переадресация вызовов на внешний номер]]) | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code> | ||
+ | См. /* возможно, стоит переделать с использованием макросов */ комментарий | ||
+ | <code> | ||
+ | ... | ||
+ | exten => 101+X,1,Dial(SIP/${EXTEN},10) | ||
+ | same => n,FollowMe(${EXTEN}) | ||
+ | | ||
+ | ;exten => 101+Y,1,Dial(SIP/${EXTEN},10) | ||
+ | ; same => n,FollowMe(${EXTEN}) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | * 2.1.2 Соединение телефонов 1XX, подключенных к Asterisk с телефонами, подключенными к АТС | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [fxo101+X] | ||
+ | type=friend | ||
+ | secret=fpassword101+X | ||
+ | host=dynamic | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | exten => _1XX/101+X,1,Dial(SIP/fxo101+X/${EXTEN}) | ||
+ | |||
+ | ;exten => _1XX/101+Y,1,Dial(SIP/fxo101+Y/${EXTEN}) | ||
+ | </code> | ||
+ | |||
+ | * Linksys SPA-3102 ([[Linksys SPA-3102#Настройка FXO/LINE/PSTN Line]]) | ||
+ | |||
+ | ==== 2.2 Отладка и мониторинг телефонного оборудования по протоколу Syslog ==== | ||
+ | |||
+ | * [[Локализация системы#Локализация временной зоны]] | ||
+ | * [[Регистрация событий в Linux#Регистрация сообщений, переданных по сети]] в Linux | ||
+ | * Linksys SPA-3102 [[Linksys SPA-3102#Отладка через Syslog]] | ||
+ | |||
+ | ==== 2.3 Подключение оборудования к Asterisk с использованием телефонных плат ==== | ||
+ | |||
+ | **Сценарий**: Делаем Linksys из Asterisk и Платы Digium TDM | ||
+ | |||
+ | * [[Плата Digium TDM]] | ||
+ | |||
+ | ==== 2.4 Подключение телефонного оборудования к MGMT сети ==== | ||
+ | |||
+ | **Методическая рекомендация**: проверку доступности стойки со стендов слушателей можно совместить с первой половиной (многопортовый FXS шлюз) следующей работы | ||
+ | |||
+ | <code> | ||
+ | Для системы server использовать алиасы и адрес 192.168.1.10/24 | ||
+ | |||
+ | Для системы host (win у прохода) использовать адрес 192.168.X.5/24 | ||
+ | плюс дополнительный адрес 192.168.1.5/24 на LAN | ||
+ | (!!! сделать, чтобы не было два default и зависимости от gate) | ||
+ | |||
+ | Для системы client1 оставить dhcp (поможет в отладке лабы provisioning для spa3102) | ||
+ | </code> | ||
+ | |||
+ | * Debian/Ubuntu: [[Настройка сети в Linux#Статическая настройка параметров]] | ||
+ | * Настройка IP параметров [[TAU-32M.IP]] | ||
+ | * Настройка IP параметров [[SMG-1016]] | ||
+ | |||
+ | ==== 2.5 Интеграция Asterisk с PBX с использованием многопортового голосового шлюза TAU-32M.IP ==== | ||
+ | |||
+ | **Сценарий **: В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью многопортового шлюза с FXO/FXS интерфейсами. | ||
+ | |||
+ | Примечание: | ||
+ | |||
+ | * Закомментировать все элементы конфигурации, относящиеся к spa3102 | ||
+ | * К линиям на столах слушателей подключены телефоны, которые играют роль абонентов Asterisk с номерами 103 ... 108, подключенными к порты FXS 3..8. Их линии ATC подключаются к портам FXO 11..16 | ||
+ | * В 109-ю линию включается телефон преподавателя - абонент классической PBX | ||
+ | * Методически преподавтель показывает все этапы, слушатели делают окончательный вариант | ||
+ | * Для тестирования доступности оборудования в стойке, при ее передаче, убрать на шлюзе алиас 192.168.1.1/24 | ||
+ | |||
+ | Конфигурация: | ||
+ | |||
+ | * TAU-32M.IP [[TAU-32M.IP#Настройка параметров SIP и плана номеров]] | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ;[101+X] | ||
+ | ;... | ||
+ | ... | ||
+ | ;[fxo101+X] | ||
+ | ;... | ||
+ | ... | ||
+ | [tau32m] | ||
+ | type=peer | ||
+ | host=192.168.1.2 | ||
+ | ;directmedia=no | ||
+ | </code> | ||
+ | |||
+ | * TAU-32M.IP [[TAU-32M.IP#Настройка FXS интерфейсов]] | ||
+ | * TAU-32M.IP [[TAU-32M.IP#Настройка FXO интерфейсов для звонков PBX->TAU32->SIP]] | ||
+ | * TAU-32M.IP [[TAU-32M.IP#Настройка FXO интерфейсов для звонков SIP->TAU32->PBX]] | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | ;exten => _1XX,1,Dial(SIP/${EXTEN},10) | ||
+ | ;... | ||
+ | |||
+ | ;exten => _1XX/101+X,1,Dial(SIP/fxo101+X/${EXTEN}) | ||
+ | |||
+ | exten => _1XX,1,Dial(SIP/tau32m/${EXTEN},10) | ||
+ | ; same => n,NoOp(${DIALSTATUS}) | ||
+ | |||
+ | same => n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?call_pbx) | ||
+ | |||
+ | same => n,FollowMe(${EXTEN}) | ||
+ | same => n,Hangup() | ||
+ | | ||
+ | same => n(call_pbx),Dial(SIP/tau32m/fxo${CALLERID(num)},,D(ww${EXTEN})) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | ==== 2.6 Подключение "Городских линий" через оборудование с интерфейсом FXO к Asterisk ==== | ||
+ | |||
+ | * Подготовительное задание: [[Сервис Asterisk#Шаблон конфигурации для обработки входящих вызовов]] | ||
+ | |||
+ | Демонстрирует преподаватель, поскольку конфигурация не отличается от ранее выполненных заданий. !!! На преподавательском астериске, убедиться что шлюзы с него видны!!! | ||
+ | |||
+ | **Общий сценарий**: Старую АТС выключили. В компанию приходит несколько городских линий для абонентов 4XX. | ||
+ | |||
+ | **Сценарий 1**: Подключаем несколько (2-3) городских линий 84951234560+X к Asterisk с помощью однопортовых шлюзов слушателей с FXO интерфейсом. Телефон на столе преподавателя (84951234560) и телефоны слушателей, шлюзы которых не используются, играют роль абонентов PSTN. Так же, нужно добавить функционал отправки вызова обратно в город (на телефон слушателя) в случае отсутствия ответа. | ||
+ | |||
+ | * [[Linksys SPA-3102#Настройка параметров аналоговой линии]] (Демонстрация важности настройки Disconnect Tone) | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [pstn2] | ||
+ | type=friend | ||
+ | secret=ppassword2 | ||
+ | host=dynamic | ||
+ | |||
+ | [pstn3] | ||
+ | type=friend | ||
+ | secret=ppassword3 | ||
+ | host=dynamic | ||
+ | |||
+ | [pstn4] | ||
+ | type=friend | ||
+ | secret=ppassword4 | ||
+ | host=dynamic | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN}) | ||
+ | exten => _8XXXXXXXXXX,n,Dial(SIP/pstn2/${EXTEN}) | ||
+ | exten => _8XXXXXXXXXX,n,Dial(SIP/pstn3/${EXTEN}) | ||
+ | exten => _8XXXXXXXXXX,n,Dial(SIP/pstn4/${EXTEN}) | ||
+ | ... | ||
+ | exten => frompstn,1,Dial(SIP/401&SIP/402,10) | ||
+ | same => n,Goto(default,84951234565,1) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | * Linksys SPA-3102 ([[Linksys SPA-3102#Настройка FXO/LINE/PSTN Line]]) | ||
+ | |||
+ | **Сценарий 2**: Подключаем городские линии Asterisk с помощью много-портового шлюза с FXO интерфейсами. | ||
+ | |||
+ | Реализация: | ||
+ | |||
+ | * Номера 84951234560 и 84951234561 играют роль городских линий, пришедших в офис и подключаются к портам FXO 9 и 10, которые объединяются в fxogroup 84951234569 (выдуманный номер, играющий роль общего номера для обоих линий). | ||
+ | * Телефонные линии слушателей 84951234560+X включены в телефоны играют роль абонентов PSTN | ||
+ | * Звонок из города, производится на любой из номеров 84951234560 или 84951234561 эмулируя передачу телефонным оператором вызова номера 84951234569 в свободную линию клиента. | ||
+ | * Звонок в город производится с телефона 402 преподавателя (два параллельных звонка с двух каналов) | ||
+ | |||
+ | Конфигурация: | ||
+ | |||
+ | * TAU-32M.IP [[TAU-32M.IP#Объединение FXO интерфейсов в группу для звонков SIP->TAU32->PBX]] | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/tau32m/84951234569,,D(ww${EXTEN})) | ||
+ | ... | ||
+ | exten => 84951234569,1,Dial(SIP/401&SIP/402,10) | ||
+ | ; same => n,Goto(default,84951234567,1) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | ==== 2.7 Подключение Asterisk к PBX через оборудование с интерфейсом PRI ==== | ||
+ | |||
+ | **Сценарий**: В компании используется классическая ATC с PRI интерфейсом, разворачиваем рядом Asterisk, новые IP телефоны, план нумерации для них. Соединяем абонентов старой АТС и Asterisk с помощью шлюза с PRI интерфейсом. Программируем в классической ATC транк в номерной план Asterisk через PRI интерфейс. | ||
+ | |||
+ | === Настройка Asterisk и голосового шлюза === | ||
+ | |||
+ | * [[SMG-1016]] | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | ;[tau32m] | ||
+ | ; ... | ||
+ | ... | ||
+ | [smg1016] | ||
+ | type=peer | ||
+ | host=192.168.1.3 | ||
+ | ;directmedia=no | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | ;exten => _1XX,1,Dial(SIP/tau32m/${EXTEN}) | ||
+ | ;... | ||
+ | ... | ||
+ | exten => _1XX,1,Dial(SIP/smg1016/${EXTEN}) | ||
+ | ... | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/smg1016/${EXTEN}) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | ==== 2.8 Подключение к Asterisk телефонных аппаратов ==== | ||
+ | |||
+ | * Настройка SIP каналов | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | ;[101+X] | ||
+ | ; ... | ||
+ | ... | ||
+ | [403] | ||
+ | type=friend | ||
+ | secret=tpassword403 | ||
+ | host=dynamic | ||
+ | |||
+ | [404] | ||
+ | type=friend | ||
+ | secret=tpassword404 | ||
+ | host=dynamic | ||
+ | </code> | ||
+ | |||
+ | * [[Сервис Asterisk#Мониторинг текущего состояния абонента (BLF)]] (поддержка должна быть включена до настройки в телефоне) | ||
+ | * Для дополнительных кнопочных панелей требуется внешний блок питания | ||
+ | |||
+ | |||
+ | ==== 2.9 Использование Provisioning для настройки пользовательского телефонного оборудования ==== | ||
+ | |||
+ | === Настройка сервисов DHCP, TFTP и HTTP для поддержки Provisioning === | ||
+ | |||
+ | * Сервис DHCP [[Сервис DHCP#Стандартная конфигурация]] [[Сервис DHCP#Проверка конфигурации и запуск]] | ||
+ | * [[Сервис ТFTP]] | ||
+ | * [[Сервис HTTP#Установка и запуск сервера Apache]] | ||
+ | |||
+ | <code> | ||
+ | gate# dhcp-lease-list | ||
+ | </code> | ||
+ | |||
+ | === Подготовка файлов конфигурации VoIP оборудования для Provisioning === | ||
+ | |||
+ | * [[Cisco 7912#Использование Provisioning]] для Cisco 7912 | ||
+ | * [[Linksys SPA-3102#Использование Provisioning]] для Linksys SPA-3102 | ||
+ | * [[SIP Phone Panasonic KX-HDVXXX#Использование Provisioning]] для SIP Phone Panasonic KX-HDVXXX | ||
+ | * [[SIP Phone Digium D40#Использование Provisioning]] для Digium D40 | ||
+ | |||
+ | <code> | ||
+ | server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE | ||
+ | </code> | ||
+ | |||
+ | * Linksys SPA-3102 [[Linksys SPA-3102#Восстановление фабричных настроек]] | ||
+ | * SIP Phone Panasonic KX-HDVXXX [[SIP Phone Panasonic KX-HDVXXX#Сброс к заводским установкам]] | ||
+ | |||
+ | |||
+ | |||
+ | === Дополнительные задания === | ||
+ | |||
+ | * [[Сервис Asterisk#Интеграция с Microsoft AD и LDAP]] | ||
+ | * [[Сервис Asterisk#Provisioning]] | ||
+ | |||
+ | ==== 2.10 Подключение Asterisk к PBX через плату с интерфейсом PRI ==== | ||
+ | |||
+ | * [[Плата OpenVox D130]] | ||
+ | ===== Вопросы ===== | ||
+ | |||
+ | * В чем разница между FXO и FXS интерфейсами? | ||
+ | * Чем отличаются сети с коммутацией пакетов от сетей с коммутацией каналов? | ||
+ | * Какая формула используется для расчета необходимого количества телефонных линий? | ||
+ | * Какое сообщение используется в PRI для инициализации исходящего вызова? | ||
+ | * Как определить, поддерживает ли оборудование Provisioning? | ||
+ | * В каком файле хранится конфигурация драйвера для телефонной платы? | ||
+ | ===== Модуль 3: Управление прохождением голосового трафика через NAT и FIREWALL ===== | ||
+ | |||
+ | ==== Теория ==== | ||
+ | |||
+ | * [[https://www.mango-office.ru/support/tekhnicheskaya_podderzhka/sip_oborudovanie/obshchie_voprosy_po_sip_telefonam/translyatsiya_setevykh_adresov_nat_vidy_skhemy_raboty/|Трансляция сетевых адресов (NAT) и SIP]] | ||
+ | * [[http://voiplab.by/wiki/asterisk/61-asterisk-13-za-nat-net-zvuka-v-odnu-storonu-net-slyshimosti|Asterisk 11 за NAT, нет звука в одну сторону, нет слышимости... Что делать?]] | ||
+ | * [[http://asterisk.ru/knowledgebase/RTP+Symmetric|Симметричный RTP]] | ||
+ | * Варианты расположения VoIP участников с точки зрения NAT и FIREWALL | ||
+ | * Особенности протоколов сигнализации SIP и IAX с точки зрения NAT и FIREWALL | ||
+ | * Элементы конфигурации Asterisk с точки зрения NAT и FIREWALL | ||
+ | ==== Лабораторные работы: Прохождения голосового трафика через NAT и FIREWALL ==== | ||
+ | |||
+ | ==== 3.1 Распространение IP телефонии за пределы офиса ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Подключение Asterisk к Asterisk по протоколу IAX]] | ||
+ | |||
+ | или, для видеозвонков: | ||
+ | |||
+ | * [[Сервис Asterisk#Видеозвонки]] | ||
+ | * [[Сервис Asterisk#Настройка базового функционала IP PBX]] для подключение Asterisk к Asterisk по протоколу SIP | ||
+ | * [[Сервис Asterisk#Настройка плана нумерации]] | ||
+ | |||
+ | ==== 3.2 Настройка NAT и FIREWALL на интернет шлюзе предприятия ==== | ||
+ | |||
+ | * Отключаем маршруты в сети слушателей | ||
+ | * Настраиваем NAT ([[Сервис NAT#Трансляция на основе адреса отправителя]]) | ||
+ | |||
+ | ==== 3.3 Подключение SIP абонента (server.corpX.un), находящегося за NAT к Asterisk провайдера ==== | ||
+ | |||
+ | <code> | ||
+ | voip1.un# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [000001] | ||
+ | ... | ||
+ | ;nat=yes | ||
+ | nat=force_rport,comedia | ||
+ | ;canreinvite=no | ||
+ | directmedia=no | ||
+ | qualify=yes | ||
+ | ... | ||
+ | [000006] | ||
+ | ... | ||
+ | ;nat=yes | ||
+ | nat=force_rport,comedia | ||
+ | qualify=yes | ||
+ | ;canreinvite=no | ||
+ | directmedia=no | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# service asterisk restart | ||
+ | </code> | ||
+ | |||
+ | ==== 3.4 Подключение Asterisk, находящегося за NAT к VoIP провайдеру ==== | ||
+ | |||
+ | === CHAN SIP === | ||
+ | |||
+ | !!!Примечание!!! | ||
+ | |||
+ | Эксперимент работает не сразу, попробовать | ||
+ | |||
+ | * pfctl -F states на voip1.un | ||
+ | * отключить windows firewall на host системе | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | [general] | ||
+ | ... | ||
+ | localnet=192.168.1.0/255.255.255.0 | ||
+ | localnet=192.168.X.0/255.255.255.0 | ||
+ | |||
+ | ;;externip=172.16.1.X | ||
+ | ;externaddr=172.16.1.X:6050 | ||
+ | externaddr=172.16.1.X | ||
+ | ;;defaultexpiry=60 | ||
+ | ... | ||
+ | [voip1_00000X] | ||
+ | ... | ||
+ | nat=comedia | ||
+ | qualify=yes | ||
+ | directmedia=no | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | === PJSIP === | ||
+ | |||
+ | * [[https://wiki.asterisk.org/wiki/display/AST/Configuring+res_pjsip+to+work+through+NAT|Asterisk and Phones Connecting Through NAT to an ITSP]] | ||
+ | * [[Сервис Asterisk#Настройка RES_PJSIP каналов]] | ||
+ | ==== 3.5 Использование DNS View для подключения к Asterisk предприятия ==== | ||
+ | |||
+ | * [[Сервис NAT#Трансляция портов сервисов]] | ||
+ | * Настраиваем DNS View ([[Финальная настройка DNS сервера]]) | ||
+ | |||
+ | |||
+ | ==== 3.6 Подключение пользователей к Asterisk, находящемуся за NAT ==== | ||
+ | |||
+ | !!!Примечание!!! | ||
+ | |||
+ | На преподавательской системе прописать маршруты в сети слушателей (из-за сети 192.168.1.5/24) | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [402] | ||
+ | ... | ||
+ | nat=force_rport,comedia | ||
+ | directmedia=no | ||
+ | qualify=yes | ||
+ | ... | ||
+ | [corpY] | ||
+ | ... | ||
+ | nat=force_rport,comedia | ||
+ | directmedia=no | ||
+ | ;;qualify=yes | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | ==== 3.7 Подключение Asterisk к Asterisk ==== | ||
+ | |||
+ | * Достаточно перезапустить сервисы Asterisk для вступления в силу новых параметров DNS (см. /etc/asterisk/dnsmgr.conf) | ||
+ | |||
+ | <code> | ||
+ | server# service asterisk restart | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== Вопросы ===== | ||
+ | |||
+ | * Верно ли, что для получения входящих вызовов от VoIP провайдера Asterisk должен иметь публичный адрес? | ||
+ | * Перечислите, какие задачи решают директивы конфигурации nat, directmedia, qualify, localnet/externip? | ||
+ | * Когда требуется открывать доступ к Asterisk из внешней сети? | ||
+ | * В каком файле конфигурации Asterisk можно указать диапазон портов для голосового трафика? | ||
+ | * Что должны разрешать правила в пакетном фильтре для передачи голосового трафика? | ||
+ | * Что должны разрешать правила в пакетном фильтре для передачи SIP сигнализации? | ||
+ | |||
+ | ===== Модуль 4: Подключение внешних пользователей к телефонии предприятия ===== | ||
+ | |||
+ | ==== Теория ==== | ||
+ | |||
+ | * [[http://voipapplication.blogspot.com/2009/01/120000-phone-bill-voip-hacked-small.html|"Voip hackers runs up a phone bill worth $120,000".]] | ||
+ | ==== Вопросы безопасности при подключении внешних пользователей ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Поддерживаемые версии]] | ||
+ | * [[Сервис Asterisk#Список проблем безопасности]] | ||
+ | |||
+ | ==== Варианты защиты Asterisk от несанкционированного использования ==== | ||
+ | |||
+ | * Сервис Asterisk ([[Сервис Asterisk#Зашита от несанкционированного использования]]) | ||
+ | * [[https://code.google.com/p/sipvicious/|SIPVicious security tools]] | ||
+ | |||
+ | ==== Лабораторные работы: Внешние пользователи и безопасность ==== | ||
+ | |||
+ | ==== 4.1 Использование хешей паролей ==== | ||
+ | |||
+ | * [[http://asterisk-support.ru/forum/topics/3032/|SIP авторизация и MD5]] | ||
+ | * [[Сервис Asterisk#Использование хешей паролей для каналов типа user]] | ||
+ | |||
+ | ==== 4.2 Настройка безопасного распространения файлов конфигурации VoIP оборудования ==== | ||
+ | |||
+ | <code> | ||
+ | gate# dhcp-lease-list | ||
+ | |||
+ | server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE and port 80 | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | server# cd /var/www/html/ | ||
+ | |||
+ | server# mv -v spa-000E08NNNNNN.cfg /root/ | ||
+ | </code> | ||
+ | |||
+ | * [[Пакет OpenSSL#Использование алгоритмов симметричного шифрования]] | ||
+ | * Linksys SPA-3102 [[Linksys SPA-3102#Безопасное распространение файлов конфигурации]] | ||
+ | * Linksys SPA-3102 [[Linksys SPA-3102#Восстановление фабричных настроек]] | ||
+ | |||
+ | * [[Пакет OpenSSL#Создание самоподписанного сертификата]] для системы server.corpX.un | ||
+ | * [[Сервис HTTP#Поддержка протокола HTTPS]] | ||
+ | * SIP Phone Panasonic KX-HDVXXX [[SIP Phone Panasonic KX-HDVXXX#Использование Provisioning]] | ||
+ | |||
+ | |||
+ | ==== 4.3 Шифрование телефонного трафика ==== | ||
+ | |||
+ | * Требует телефона с поддержкой TLS SRTP, например - [[ZoIPer]] 3.15 (требует добавление самоподписанного сертификата в систему) или [[PhonerLite]] (принимает самоподписанный сертификат) | ||
+ | * Прослушивание голосового трафика (на gate, [[Утилита Wireshark]], [[Файловый сервер SAMBA#Публичный каталог доступный на запись]]) | ||
+ | |||
+ | <code> | ||
+ | gate# tcpdump -ni eth1 -s0 -w file1.dmp | ||
+ | </code> | ||
+ | |||
+ | * [[Пакет OpenSSL#Создание самоподписанного сертификата]] для системы server.corpX.un | ||
+ | * [[Сервис Asterisk#Использование TLS]] в Asterisk | ||
+ | |||
+ | |||
+ | |||
+ | ==== 4.4 Настройка Asterisk для защиты от несанкционированного использования ==== | ||
+ | |||
+ | * [[https://val.bmstu.ru/unix/voip/python-2.7.10.msi]] | ||
+ | * [[https://val.bmstu.ru/unix/voip/sipvicious-0.2.8.zip]] | ||
+ | |||
+ | === Ищем сервера Asterisk === | ||
+ | <code> | ||
+ | C:\bin\sipvicious-0.2.8>svmap.py 172.16.1.1-172.16.1.254 | ||
+ | |||
+ | C:\>c:\Python27\python.exe C:\sipvicious-0.2.8\svmap.py 172.16.1.1-172.16.1.10 | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | * [[Сервис Asterisk#Сокрытие версии]] | ||
+ | |||
+ | === Подключаемся под произвольной учетной записью === | ||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | [general] | ||
+ | ... | ||
+ | autocreatepeer=no | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# asterisk -rx 'sip show settings' | grep AutoCreate | ||
+ | </code><code> | ||
+ | AutoCreate Peer: Off | ||
+ | </code> | ||
+ | |||
+ | === Звоним анонимно === | ||
+ | |||
+ | !!! Для демонстрации необходимо установить струю версию [[ZoIPer]] !!! | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | [general] | ||
+ | ... | ||
+ | allowguest=no | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# asterisk -rx 'sip show settings' | grep unknown | ||
+ | </code><code> | ||
+ | Allow unknown access: Yes | ||
+ | </code> | ||
+ | |||
+ | === Определяем имена каналов === | ||
+ | |||
+ | <code> | ||
+ | c:\Python27\python.exe C:\sipvicious-0.2.8\svwar.py --force -e100-999 172.16.1.X | ||
+ | ... | ||
+ | server# asterisk -rx 'sip show settings' | grep rejects | ||
+ | </code><code> | ||
+ | Always auth rejects: No | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | [general] | ||
+ | ... | ||
+ | alwaysauthreject=yes | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | === Подбираем пароль к каналу === | ||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [401] | ||
+ | secret=1234 | ||
+ | ... | ||
+ | </code><code> | ||
+ | C:\bin\sipvicious-0.2.8>svcrack.py -u401 -r1-9999 -z4 172.16.1.X | ||
+ | |||
+ | C:\bin\sipvicious-0.2.8>svcrack.py -u401 -d passwd.txt 172.16.1.X | ||
+ | </code> | ||
+ | |||
+ | === Ограничиваем доступ к каналу === | ||
+ | |||
+ | * [[Сервис Asterisk#Использование шаблонов в именах CHAN_SIP каналов]] | ||
+ | ==== 4.5 Использование контекстов, для построения матрицы доступа SIP каналов к номерным планам ==== | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/sip.conf | ||
+ | </code><code> | ||
+ | [general] | ||
+ | ... | ||
+ | context=default | ||
+ | ... | ||
+ | subscribecontext=blf | ||
+ | ... | ||
+ | [office](!) | ||
+ | context=from-office | ||
+ | ... | ||
+ | |||
+ | [internet](!) | ||
+ | context=from-internet | ||
+ | ... | ||
+ | |||
+ | [401] | ||
+ | context=from-office | ||
+ | ... | ||
+ | [402] | ||
+ | context=from-internet | ||
+ | ... | ||
+ | [403] | ||
+ | context=from-office | ||
+ | ... | ||
+ | [404] | ||
+ | context=from-office | ||
+ | ... | ||
+ | [voip1_00000X] | ||
+ | context=incoming | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/iax.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [corpY] | ||
+ | ;type=user | ||
+ | context=from-corp | ||
+ | ... | ||
+ | </code><code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | [default] | ||
+ | |||
+ | exten => _X.,1,Playback(vm-goodbye) | ||
+ | exten => _X.,n,Hangup() | ||
+ | |||
+ | [blf] | ||
+ | exten => _4XX,hint,SIP/${EXTEN} | ||
+ | |||
+ | [from-office] | ||
+ | include => to-office | ||
+ | include => to-corp | ||
+ | include => to-pstn | ||
+ | |||
+ | [from-internet] | ||
+ | include => to-office | ||
+ | include => to-corp | ||
+ | |||
+ | [from-corp] | ||
+ | include => to-office | ||
+ | |||
+ | [to-office] | ||
+ | ;exten => _1XX ... | ||
+ | |||
+ | exten => 301 ... | ||
+ | |||
+ | exten => _4XX ... | ||
+ | |||
+ | [to-corp] | ||
+ | exten => _00Y[41]XX,1,Set(CALLERID(num)=00X${CALLERID(num)}) | ||
+ | exten => _00Y[41]XX,n,Dial(IAX2/corpY/${EXTEN:3}) | ||
+ | |||
+ | [to-pstn] | ||
+ | exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN}) | ||
+ | |||
+ | [incoming] | ||
+ | exten => voip1_00000X,1,Dial(SIP/401&SIP/402&SIP/403&SIP/404) | ||
+ | </code> | ||
+ | |||
+ | * Сервис FollowMe ([[Сервис Asterisk#Переадресация вызовов на внешний номер]]) | ||
+ | |||
+ | <code> | ||
+ | server# cat /etc/asterisk/extensions.conf | ||
+ | </code><code> | ||
+ | ... | ||
+ | [to-pstn] | ||
+ | ;!!! Authenticate !!! | ||
+ | |||
+ | exten => _89XXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN}) | ||
+ | |||
+ | exten => _8495XXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN}) | ||
+ | |||
+ | exten => _8499XXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN}) | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | ==== 4.6 Меняем порт sip для внешних подключений к asterisk ==== | ||
+ | |||
+ | * [[Финальная настройка DNS сервера]] | ||
+ | * [[Сервис NAT#Трансляция портов сервисов]] | ||
+ | |||
+ | <code> | ||
+ | # nslookup -q=SRV _sip._udp.corpX.un | ||
+ | </code> | ||
+ | ==== 4.7 Использование возможностей пакетных фильтров и дополнительного ПО для защиты Asterisk от несанкционированного использования ==== | ||
+ | |||
+ | * [[Сервис Fail2ban]] | ||
+ | |||
+ | ===== Вопросы ===== | ||
+ | |||
+ | * Почему не рекомендуется использовать решения VPN для IP телефонии? | ||
+ | * На что следует обратить внимание при настройке защиты Asterisk в первую очередь? | ||
+ | * Что определяют параметры конфигурации autocreatepeer, allowguest, alwaysauthreject в конфигурации Asterisk? | ||
+ | |||
+ | ===== Модуль 5: Итоговая работа ===== | ||
+ | |||
+ | ==== Задание 1: Настройка SIP оборудования ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Настройка базового функционала IP PBX]] | ||
+ | <code> | ||
+ | gate# dhcp-lease-list | ||
+ | </code> | ||
+ | * [[Базовая станция DECT KX-UDS124]] | ||
+ | * [[Микросотовый терминал KX-UDTXXX]] |