====== Использование телефонии 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 "" $4 " " $5 " " $6 " | " $2 " |
"} END {print "
"}' > /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]]