Počítačové sítě/LAB: IP telefony

Požadavky

editovat
  • 1x Asterisk na Debian serveru (v příkladu použito Raspberry Pi s OS Raspbian)
  • ?x IP telefon (v příkladu použit Linksys SPA942 a Cisco 303)
  • Funkční síť, funkční DHCP server

Co je VoIP

editovat

VoIP (anglicky Voice over IP) je způsob přenosu hlasové a multimediální komunikace přes protokol IP[1].

Co je SIP

editovat

SIP (anglicky Session Initiation Protocol) je protokol sloužící pro navázání komunikace, často používán ve VoIP[2].

Co je dial plan

editovat

Dial plan je očekávaná sekvence čísel používaná v telefonii pro zavolání funkce (jednou z funkcí je např. Dial - snaží se spojit hovor)[3].

Zadání

editovat

Zprovozněte komunikaci mezi IP telefony, které budou navazovat spojení přes Asterisk server.

Schéma

editovat
  • Sestavit síť podle schématu
  • Nastavit Asterisk ústřednu
  • Nastavit telefony
  • Otestovat komunikaci

Řešení

editovat

Nastavení Raspberry Pi

editovat

Zjištění IP adresy Raspberry Pi pomocí příkazu ip addr:

root@raspberrypi:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:f2:f1:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.21/24 brd 192.168.1.255 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fef2:f117/64 scope link
       valid_lft forever preferred_lft forever

Je třeba nainstalovat SIP ústřednu Asterisk:

root@raspberrypi:~# apt-get update
root@raspberrypi:~# apt-get install asterisk

Nastavení Asterisk

editovat

Nejvíce práce je s nastavením Asterisk ústředny. Pro konfiguraci slouží dva soubory: sip.conf a extensions.conf uložené v adresáři /etc/asterisk. Pro jejich editaci použijeme program nano. Po editaci souboru se změny uloží pomocí klávesové zkratky Ctrl-O, je třeba potvrdit jméno souboru [Enter] a ukončit nano klávesovou zkratkou Ctrl-X.

Soubor sip.conf[4] slouží k autentizaci jednotlivých uživatelů :

root@raspberrypi:~# cd /etc/asterisk
root@raspberrypi:/etc/asterisk# nano sip.conf

Ukázková konfigurace pro 3 telefony:

 [tel1]            ; ID uzivatele
 type=friend
 host=dynamic
 secret=a123       ; heslo uzivatele
 context=locals    ; kontext
 
 [tel2]
 type=friend
 host=dynamic
 secret=b234
 context=locals
 
 [tel3]
 type=friend
 host=dynamic
 secret=c345
 context=locals

Soubor extensions.conf[5] slouží jako dialplan - říká, co se stane, když uživatel na telefonu vytočí nějaké číslo[6]:

root@raspberrypi:/etc/asterisk# nano extensions.conf

Ukázková konfigurace pro 3 telefony:

 [locals]                         ; kontext
 exten => 123,1,dial(SIP/tel1)    ; kdokoli vytoci 123, zavolej tel1
 exten => 234,1,dial(SIP/tel2)
 exten => 345,1,dial(SIP/tel3)

Je třeba, aby parametr context v souboru sip.conf byl stejný jako jméno uvedené v hranatých závorkách [] v souboru extensions.conf.

Spuštění Asterisk

editovat

Spuštění Asterisk ústředny se provede pod uživatelem root příkazem:

root@raspberrypi:~# asterisk -r
raspberrypi*CLI>

Tím se zároveň spustí konzole sloužící k ovládání Asterisk ústředny. V konzoli je po změně autentizačního souboru sip.conf třeba aktualizovat seznam uživatelů, následně lze aktuální uživatele vypsat:

raspberrypi*CLI> sip reload
raspberrypi*CLI> sip show users

Po změně souboru extensions.conf je třeba dial plan aktualizovat:

raspberrypi*CLI> dialplan reload

Vypsání kontextu (v tomto LABu byl použit kontext locals):

raspberrypi*CLI>dialplan show locals

Pokud dojde k nějaké chybě v Asterisk ústředně (většinou způsobené špatnou konfigurací v souborech sip.conf a extensions.conf, zobrazí se tato chyba v konzoli.

Nastavení telefonu Linksys a Cisco

editovat

IP adresa telefonu se získá z menu (tlačítko s obrázkem listu papíru) -> Network. Lze použít i zkratku menu -> 9.

Přihlásit se do webového rozhraní IP telefonu -> Admin login (vpravo nahoře) -> Ext1 a vyplnit následující údaje:

  • Proxy: IP adresa Asterisk serveru
  • User ID: Identifikátor ze sip.conf (ID uzivatele)
  • Password: Heslo ze sip.conf (heslo uzivatele)

Pokročilé nastavení Asterisk

editovat

Asterisk ústředna má mnoho možností nastavení, včetně vytvoření plně automatického systému. Jednoduchý příklad, který po vytočení čísla 999 zvedne hovor, řekne hello world a zavěsí se nastaví v souboru extensions.conf:

 exten => 999,1,Answer
         same => n,Background(hello-world)
         same => n,HangUp

Testování

editovat

Při testování se vytočí číslo sousedního přístroje, ten by měl začít zvonit. Hovor se přijme, otestuje se kvalita hovoru a zavěsí se.

Při testování automatické ústředny se vytočí číslo automatu, měla by se ozvat hláška hello world.

Závěr

editovat

Byla nastavena pobočková ústředna Asterisk a na ní připojeny IP telefony. Pomocí SIP protokolu došlo k navázání spojení mezi telefony, načež byla otestována kvalita hovoru.

Reference

editovat
  1. https://en.wikipedia.org/wiki/Voice_over_IP
  2. https://en.wikipedia.org/wiki/Session_Initiation_Protocol
  3. https://en.wikipedia.org/wiki/Dial_plan
  4. http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf
  5. http://www.voip-info.org/wiki/view/Asterisk+config+extensions.conf
  6. Ve skutečnosti uživatel nevytáčí číslo, ale tzv. extension, což můžou být libovolné alfanumerické znaky.