====== Использование телефонии Asterisk на предприятии с инфраструктурой Microsoft Active Directory ====== **[[https://youtu.be/uqTXbQBfcQc|Запись]]** **Техническое задание**: Сделать рабочие места в офисе универсальными. Звонок на корпоративный номер сотрудника должен приходить на телефонный аппарат расположенный там, где в данный момент работает сотрудник. Пример: [[http://www.fresher.ru/2011/12/25/neobychnyj-ofis-philips-bez-opredelennogo-mesta-raboty/|Необычный офис Philips – без определенного места работы]] ===== 1. Развертывание сети предприятия ===== **Техническое задание**: реализовать технологию единого входа для доступа к сервисам предприятия * В качестве LAN использовать VirtualBox Host-Only Ethernet Adapter * gate: [[Настройка стендов слушателей]] [[Локализация системы#Локализация временной зоны]] * server: [[Linux FreeBSD Взаимодействие с Microsoft Windows]] (Модуль 8.2) * [[Сервис DHCP]] * clien2: [[Linux FreeBSD Взаимодействие с Microsoft Windows]] (Модуль 8.3) * [[https://youtu.be/yZfoBTlqFCQ|Видеоурок: Авторизация доступа пользователей домена MS Active Directory в Internet с использованием proxy-сервера Squid]] ===== 2. Развертывание телефонии предприятия ===== **Техническое задание**: развернуть телефонию предприятия с номерным планом 4XX, привязанным к телефонным аппаратам ==== PBX ==== * [[Использование Asterisk в офисной телефонии]] (Модуль 2.2, 2.3, на системе gate) ==== 401, 402 ==== * FreeBSD, аудиодрайвер * hostname: phonen, ip: [[Настройка сети в FreeBSD#Динамическая настройка параметров]] * [[Подключение звуковой карты#Проверка работоспособности звуковой карты]] * [[Сервис Asterisk#Установка]] * [[Сервис Asterisk#Использование asterisk в качестве телефона]] ==== 403 ==== * [[Linksys SPA-3102]] ==== Звоним ==== gate*CLI> channel originate SIP/403 extension 401 gate*CLI> channel originate SIP/403 extension 402 phone2*CLI> channel originate Console/dsp extension 403 ===== 3. Интеграция телефонии с LDAP каталогом предприятия ===== **Техническое задание**: использовать LDAP каталог предприятия для установки текстового CallerID при телефонных вызовах * Заполняем атрибуты Display Name, Telephone number, Address->Zip/Postsal code (пароль телефона) ==== Копирование всей, необходимой для телефонии информации из LDAP в текстовый файл ==== # cat /root/create_login_phone_table.sh #!/bin/sh IFS=' ' ldapsearch -x -D "cn=Administrator,cn=Users,dc=corp6,dc=un" -w 'Pa$$w0rd' -h server.corp6.un -b "dc=corp6,dc=un" "(telephoneNumber=4*)" sAMAccountName cn telephoneNumber postalCode | perl -p00e 's/\r?\n //g'| while read s do echo $s | grep -vq '^dn:' && continue read fn cn echo $fn | grep -q '::' && cn=`echo $cn | base64 -d` read fn pass read fn tn read fn login echo $login $tn $pass $cn done # /root/create_login_phone_table.sh > /root/login_phone_table.txt # cat /root/login_phone_table.txt user1 401 tpassword401 Ivan I. Ivanov user2 402 tpassword402 Petr P. Petrov user3 403 tpassword403 Sidor S. Sidorov user4 404 tpassword404 Vsily M. Koshkin user5 405 tpassword405 Федор И. Шаляпин ==== Размещение адресной книги в формате HTML ==== * [[Администрирование сервисов UNIX]] (Веб сервер - Модуль 8.3) # cat /root/login_phone_table.txt | awk 'BEGIN {print ""} {print ""} END {print "
" $4 " " $5 " " $6 "" $2 "
"}' > /var/www/html/addrbook.html
==== Создание файла для импорта адресной книги в формате телефонов Panasonic ==== * [[Базовая станция DECT KX-UDS124]] # cat /root/login_phone_table.txt | awk '{printf ("\t%s %s %s\t\t%s\t\t\t\t\t\n",$4,$5,$6,$2)}' | unix2dos | iconv -f utf-8 -t utf-16 > phonebook.tsv ==== Создание файла users.conf ==== # cat /root/create_users_conf.sh #!/bin/sh while read login cid_number secret fullname do echo "[$cid_number]" echo "cid_number = $cid_number" echo "fullname = $fullname" echo "secret = $secret" echo "type=friend" echo "host=dynamic" echo done # /root/create_users_conf.sh < /root/login_phone_table.txt > /etc/asterisk/users.conf # cat /etc/asterisk/users.conf [401] cid_number = 401 fullname = Ivan I. Ivanov secret = tpassword401 type=friend host=dynamic ... # cat /etc/asterisk/sip.conf [general] transport=udp disallow=all allow=alaw #include "/etc/asterisk/users.conf" [403] secret=tpassword403 type=friend host=dynamic # asterisk -x 'sip reload' # asterisk -x 'sip show users' ===== 4. Настройка телефонного аппарата на номер использующего его сотрудника ===== **Техническое задание**: использовать событие входа сотрудника в домен для настройки телефонного аппарата на его номер ==== 4.1 Подготовка к демонстрации по вебинару ==== * [[Linux FreeBSD Взаимодействие с сетевым оборудованием Cisco]] (Модуль 1: Настройка коммутатора Cisco, подключенного к LAN) * Добавляем Asterisk телефон в GNS назначив ему 2 интерфейса и соответствующую картинку :) * Подключаем Asterisk к коммутатору и настраиваем Bridge [[Настройка сети в FreeBSD]] * Добавляем client2 в GNS и подключаем через Asterisk телефон к LAN ==== 4.2 Настройка Provisioning на Asterisk телефоне ==== * [[Asterisk. Телефонное оборудование и безопасность]] Модуль 2.7 root@gate.corpX.un:~# cat /var/www/html/0800.2700.d8e8.cfg [sipproxy] type=peer defaultuser=40N secret=tpassword40N host=gate.corpX.un insecure=invite callbackextension=sipproxy [phone2:~] # cat /root/fetch_conf.sh #!/bin/sh /usr/local/bin/curl -s http://gate.corp6.un/0800.2700.d8e8.cfg > /usr/local/etc/asterisk/users.conf /usr/local/sbin/asterisk -x 'sip reload' [phone2:~] # crontab -l * * * * * /root/fetch_conf.sh [phoneN:~] # cat /usr/local/etc/asterisk/sip.conf [general] ... defaultexpiry=30 #include "/usr/local/etc/asterisk/users.conf" ==== 4.3 Определение на какой рабочей станции зарегистрировался пользователь ==== * [[Создание отказоустойчивых UNIX решений]] (Модуль 7.5, публичный каталог доступный на запись) * [[Материалы по Windows#Использование Logon скриптов]] gate# tail -n /disk2/logon.txt ==== 4.4 Определение mac адреса телефона, через который подключена рабочая станция ==== * [[Linux FreeBSD Взаимодействие с сетевым оборудованием Cisco]] (Модуль 3. Использование snmp для получения mac address table) * [[Linux FreeBSD Взаимодействие с сетевым оборудованием Cisco]] (Модуль 4. Настройка rcmd сервисов) switch(config) interface VLAN1 ip address 192.168.6.3 255.255.255.0 no shut exit ip rcmd rcp-enable ip rcmd rsh-enable no ip domain lookup ip host gate 192.168.6.1 ip rcmd remote-host root gate root enable mac-address-table aging-time 1000000 gate# apt install rsh-client gate# host CLIENTN gate# arp -a gate# echo "192.168.6.3 switch" >> /etc/hosts gate# rsh switch show mac-address-table ==== 4.5 Собираем все вместе ==== * [[https://youtu.be/GxVmukxVUo0|Видеоурок: Программирование на sh]] gate# cat /root/create_phone_conf.sh #!/bin/sh IFS=' ' while read login host other do ip=`host $host | cut -d' ' -f4` mac=`arp -a | grep $ip | cut -d' ' -f4` mac_format=`echo $mac | sed -E 's/(..):(..):(..):(..):(..):(..)/\1\2.\3\4.\5\6/'` phone_if=`rsh switch show mac-address-table | grep $mac_format | sed -E 's/.*(Fa.*)/\1/'` phone_mac=`rsh switch show mac-address-table | grep -v $mac_format | grep $phone_if | cut -f 1` str=`grep "^$login" /root/login_phone_table.txt` defaultuser=`echo $str | cut -d' ' -f2` secret=`echo $str | cut -d' ' -f3` fullname=`echo $str | cut -d' ' -f4,5,6` cat > /var/www/html/$phone_mac.cfg < * [[https://youtu.be/YXSC7KeIq3E|Видеоурок: Использование screen]] gate# tail -n0 -f /disk2/logon.txt | /root/create_phone_conf.sh * Звоним: gate*CLI> channel originate SIP/403 extension 401 gate*CLI> channel originate SIP/403 extension 402 ===== Итог ===== * [[http://www.specialist.ru/course/guide/17|Путеводитель по курсам Linux(Ubuntu)/FreeBSD]]