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

Z Wikiknih

Požadavky[editovat | editovat zdroj]

  • 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 | editovat zdroj]

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

Co je SIP[editovat | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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

Schéma[editovat | editovat zdroj]

Úkoly[editovat | editovat zdroj]

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

Řešení[editovat | editovat zdroj]

Nastavení Raspberry Pi[editovat | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

  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.