будущий_gate# sh conf/net_gate.sh будущий_gate# init 6 будущий_server# sh conf/net_server.sh будущий_server# init 6
gate# sh conf/dhcp.sh server# sh conf/dns.sh
C:\> ipconfig /release C:\> ipconfig /renew gate# dhcp-lease-list gate# ip n
Сценарий: Забыли про номерной план 4XX!!! В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью персональных шлюзов.
Методическая рекомендация: Выполнять лабораторную работу в два этапа, отдельно для интерфейсов FXS и FXO
server# cat /etc/asterisk/sip.conf
... [101+X] type=friend secret=tpassword101+X host=dynamic
gate# dhcp-lease-list
server# cat /etc/asterisk/extensions.conf
См. /* возможно, стоит переделать с использованием макросов */ комментарий
... exten => 101+X,1,Dial(SIP/${EXTEN},10) same => n,FollowMe(${EXTEN}) ;exten => 101+Y,1,Dial(SIP/${EXTEN},10) ; same => n,FollowMe(${EXTEN}) ...
server# cat /etc/asterisk/sip.conf
... [fxo101+X] type=friend secret=fpassword101+X host=dynamic
server# cat /etc/asterisk/extensions.conf
... exten => _1XX/101+X,1,Dial(SIP/fxo101+X/${EXTEN}) ;exten => _1XX/101+Y,1,Dial(SIP/fxo101+Y/${EXTEN})
Сценарий: Делаем Linksys из Asterisk и Платы Digium TDM
Методическая рекомендация: проверку доступности стойки со стендов слушателей можно совместить с первой половиной (многопортовый FXS шлюз) следующей работы
Для системы 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)
Сценарий : В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью многопортового шлюза с FXO/FXS интерфейсами.
Примечание:
Конфигурация:
server# cat /etc/asterisk/sip.conf
;[101+X] ;... ... ;[fxo101+X] ;... ... [tau32m] type=peer host=192.168.1.2 ;directmedia=no
server# cat /etc/asterisk/extensions.conf
... ;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})) ...
Демонстрирует преподаватель, поскольку конфигурация не отличается от ранее выполненных заданий. !!! На преподавательском астериске, убедиться что шлюзы с него видны!!!
Общий сценарий: Старую АТС выключили. В компанию приходит несколько городских линий для абонентов 4XX.
Сценарий 1: Подключаем несколько (2-3) городских линий 84951234560+X к Asterisk с помощью однопортовых шлюзов слушателей с FXO интерфейсом. Телефон на столе преподавателя (84951234560) и телефоны слушателей, шлюзы которых не используются, играют роль абонентов PSTN. Так же, нужно добавить функционал отправки вызова обратно в город (на телефон слушателя) в случае отсутствия ответа.
server# cat /etc/asterisk/sip.conf
... [pstn2] type=friend secret=ppassword2 host=dynamic [pstn3] type=friend secret=ppassword3 host=dynamic [pstn4] type=friend secret=ppassword4 host=dynamic
server# cat /etc/asterisk/extensions.conf
... 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) ...
Сценарий 2: Подключаем городские линии Asterisk с помощью много-портового шлюза с FXO интерфейсами.
Реализация:
Конфигурация:
server# cat /etc/asterisk/extensions.conf
... 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) ...
Сценарий: В компании используется классическая ATC с PRI интерфейсом, разворачиваем рядом Asterisk, новые IP телефоны, план нумерации для них. Соединяем абонентов старой АТС и Asterisk с помощью шлюза с PRI интерфейсом. Программируем в классической ATC транк в номерной план Asterisk через PRI интерфейс.
server# cat /etc/asterisk/sip.conf
... ;[tau32m] ; ... ... [smg1016] type=peer host=192.168.1.3 ;directmedia=no
server# cat /etc/asterisk/extensions.conf
... ;exten => _1XX,1,Dial(SIP/tau32m/${EXTEN}) ;... ... exten => _1XX,1,Dial(SIP/smg1016/${EXTEN}) ... exten => _8XXXXXXXXXX,1,Dial(SIP/smg1016/${EXTEN}) ...
server# cat /etc/asterisk/sip.conf
... ;[101+X] ; ... ... [403] type=friend secret=tpassword403 host=dynamic [404] type=friend secret=tpassword404 host=dynamic
gate# dhcp-lease-list
server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE
или, для видеозвонков:
# cat /etc/resolv.conf
search corpX.un nameserver 192.168.X.10
voip1.un# cat /etc/asterisk/sip.conf
... [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 ...
server# service asterisk restart
!!!Примечание!!!
Эксперимент работает не сразу, попробовать
server# cat /etc/asterisk/sip.conf
[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 ...
!!!Примечание!!!
На преподавательской системе прописать маршруты в сети слушателей (из-за сети 192.168.1.5/24)
server# cat /etc/asterisk/sip.conf
... [402] ... nat=force_rport,comedia directmedia=no qualify=yes ... [corpY] ... nat=force_rport,comedia directmedia=no ;;qualify=yes ...
server# service asterisk restart
gate# dhcp-lease-list server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE and port 80
server# cd /var/www/html/ server# mv -v spa-000E08NNNNNN.cfg /root/
gate# tcpdump -ni eth1 -s0 -w file1.dmp
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 ...
server# cat /etc/asterisk/sip.conf
[general] ... autocreatepeer=no ...
server# asterisk -rx 'sip show settings' | grep AutoCreate
AutoCreate Peer: Off
!!! Для демонстрации необходимо установить струю версию ZoIPer !!!
server# cat /etc/asterisk/sip.conf
[general] ... allowguest=no ...
server# asterisk -rx 'sip show settings' | grep unknown
Allow unknown access: Yes
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
Always auth rejects: No
server# cat /etc/asterisk/sip.conf
[general] ... alwaysauthreject=yes ...
server# cat /etc/asterisk/sip.conf
... [401] secret=1234 ...
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
server# cat /etc/asterisk/sip.conf
[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 ...
server# cat /etc/asterisk/iax.conf
... [corpY] ;type=user context=from-corp ...
server# cat /etc/asterisk/extensions.conf
[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)
server# cat /etc/asterisk/extensions.conf
... [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}) ...
# nslookup -q=SRV _sip._udp.corpX.un