Priključki vmesnika SPA-3102

Skrivnost fleksibilnosti in velikih možnosti Asteriska (www.asterisk.org) je v njegovi zgradbi, ki omogoča uporabo različnih funkcij in že pripravljenih aplikacij. Te funkcije in aplikacije lahko med seboj kombiniramo ali nadgradimo glede na svoje potrebe, kar pomeni, da smo pri razvoju omejeni le z znanjem, ki ga imamo, in svojo domišljijo. Nekatere funkcije in aplikacije smo spoznali že v prejšnji številki. S preprostimi primeri, ki bodo vse zapletenejši, bomo nadaljevali tudi v tej, predvsem pa naslednji številki, potrebno znanje pa bomo glede na posamezni primer po potrebi nadgrajevali z najnujnejšimi elementi.

Zaradi že opisane široke palete Asteriskovih možnosti je zelo širok tudi razpon zahtev za namestitev – posredno tudi nabora strojne opreme, na katero lahko namestimo Asterisk. Univerzalnega odgovora glede minimalnih zahtev ni, največkrat so glede na različico podane le »grobe« zahteve. Da pa bo sistem deloval zanesljivo in v skladu s pričakovanji, se moramo zavedati, da so te zahteve v veliki meri odvisne od želenih funkcionalnosti - nekatere med njimi le minimalno obremenjujejo sistemske vire, druge so bistveno bolj obremenjujoče (na primer snemanje, predvajanje različnih sporočil, predali govorne pošte, pretvorba različnih signalizacij in kodekov). Zato lahko osnovno funkcionalnost, kot je recimo strežnik v vlogi telefonske centrale z nekaj priključki, s stališča osebnih računalnikov zagotovimo na zelo »podhranjeni« strojni opremi. Tako zadošča včasih že dovolj zmogljiv usmerjevalnik nižjega cenovnega razreda (okrog 50–100 evrov) z modificirano različico programske opreme (na primer dd-wrt – http://www.dd-wrt.com). A tudi če ste na modificirani usmerjevalnik do zdaj brez težav nameščali druge programske pakete, bo večina najverjetneje razočarana, saj bodo to največkrat le starejše različice Asteriska, ki so, če že drugega ne, funkcionalno okrnjene in uporabniku manj prijazne (največkrat bodo brez grafičnih vmesnikov). Asteriska manj vešči si lahko pomagajo tudi tako, da enako različico Asteriska skupaj z želenim grafičnim vmesnikom namestijo na zmogljivejšo strojno opremo, na njej pripravijo želeno konfiguracijo, konfiguracijske datoteke pa nato prenesejo/prekopirajo v novo okolje (na usmerjevalnik).

Stanje FXO- in FXS-vmesnika

UPORABNI MALČKI

Če nimamo prevelikih zahtev oziroma potreb in želimo Asterisk namestiti na energijsko manj potratno strojno opremo, lahko izberemo kakšnega od »mini« računalnikov – recimo Raspberry Pi (www.raspberrypi.org), modificiran Pogoplug (www.pogoplug.com) ali kakšen drug dovolj zmogljiv »plug« računalnik. V tem primeru je treba preveriti, kako je z namestitvijo Asteriska v takšnem okolju, saj imamo lahko kljub dejstvu, da na tovrstno napravo namestimo Linux (na primer Arch Linux, Debian), določene težave zaradi specifik (na primer povezanih z arhitekturo). Takšna rešitev je lahko zanimiva predvsem za osnovno testno okolje, v katerem želimo preveriti delovanje konfiguracijskih datotek ali zagotoviti povezavo med nekaj telefonskimi aparati.

Oglejmo si zato namestitev Asteriska na vse bolj priljubljeno »malino« (Raspberry P1). Namestitev lahko izvedemo po korakih – najprej namestimo operacijski sistem (na primer Arch Linux ali Debian – http://www.raspberrypi.org/downloads) in nato želene Asteriskove pakete. Hitrejša in lažja pot pa je, da s spleta prenesemo že pripravljeno sliko diska, ki jo moramo le zapisati na SD-kartico. V našem primeru smo uporabili Asterisk for raspberry Pi (http://www.raspberry-asterisk.org/), ki v trenutno aktualni različici vključuje Asterisk (1.8.14.0) in grafični vmesnik FreePBX (2.10.0).

Za namestitev potrebujemo vsaj 4-GB SD-kartico. Še opozorilo: ker se pri določenih tipih SD-kartic, ki so deklarirane s kapaciteto 4 GB, pojavijo težave zaradi velikosti, ki jo zazna OS, je zato »varneje« uporabiti SD-kartico z večjo kapaciteto (na primer 8 GB). Zapis na SD-kartico naredimo tako, da arhivsko datoteko (v našem primeru debian6-asterisk-14-07-2012.zip) pretvorimo v datoteko z zapisom slike diska (*.img) in jo začasno shranimo na trdi disk osebnega računalnika. To sliko nato zapišemo na SD-kartico, ki jo vložimo v čitalec za kartice s pomočjo ustrezne programske opreme (v našem primeru Win32 DiskImager). Ko je zapis na kartico končan, je SD-kartica že pripravljena za uporabo na Piju. Seveda pa Asterisk ni konfiguriran. Po uspešno izvedenem zagonu »maline« z SD-kartice se lahko prijavimo lokalno ali prek SSH-povezave kot uporabnik »pi« z geslom »raspberry«. Korak, ki ga nikakor ne smemo pozabiti, je zamenjava gesla (s pomočjo ukaza passwd). Praktične izkušnje kažejo, da »malina« brez težav prevzame delovanje manjšega govornega strežnika. To je navsezadnje tudi pričakovano, saj vgrajeni procesor (po hitrosti primerljiv z računalnikom, ki ima vdelan Pentium II procesor s hitrostjo 200 Mhz) in vdelan pomnilnik ustrezata pogojem za manj zahteven sistem.

Opozorimo še na nekaj posebnosti, povezanih z delovanjem Asteriska na Pogoplug Clasicu (različica V3), ki smo ga že spoznali v vlogi domačega oblaka. Če na Pogoplug namestimo Arch Linux, namestimo Asterisk in potrebne pakete prek spleta s pomočjo ukaza pacman in parametra -u, ki mu sledi ime paketa (na primer pacman -u asterisk, pacman -u mpg123, pacman -u mc …). V določenih primerih (dokaj pogosto) se zgodi, da se po posodobitvi pacmana sistem ne zažene več. Po ponovnem zagonu takrat ves čas utripa svetleča LED-dioda in moramo zato ponoviti celoten postopek namestitve.

Grafični vmesnik vmesnika Linksys 3102

KAJ PA VMESNIŠKE KARTICE ZA POVEZAVO?

Na mogoče težave lahko naletimo na ravni povezovanja, saj v takšno strojno opremo ne moremo vdelati vmesniške kartice za priklop na telekomunikacijsko opremo oziroma omrežja (ISDN BRA/PRA oziroma analogni priključek). S podobno težavo se lahko srečamo tudi v primeru namestitve Asteriska v virtualiziranem okolju (na primer Vmware, VirtualBox). A če podpira sistem, s katerim se želite povezati, tudi komunikacijo prek VoIP-protokola, ste rešeni težav. V takšnem primeru na obeh omenjenih primerih brez težav zagotovimo povezljivost z drugimi napravami na ravni VoIP-povezljivosti (na primer SIP, IAX, H.323 …), prek katerih lahko izvedemo potreben prehod. Namestitev v virtualiziranem okolju pa nam omogoča tudi preprosto optimiziranje potrebnih sistemskih virov, saj lahko glede na realne potrebe določimo potrebne vire (zmanjšujemo jih do ravni, do katere sistem še vedno deluje brez težav).

Če se s svojimi zahtevami postavimo do druge skrajne meje (potrebujemo zelo zapleten sistem), se nam utegne zgoditi, da vseh zahtevanih funkcionalnosti ne želimo ali celo ne moremo zagotavljati na enem samem strežniku, ampak funkcionalnosti delimo med več strežnikov (na primer en strežnik zagotavlja potrebno obdelavo klicev za želeno funkcionalnost klicnega centra, funkcionalnost snemanja pogovora agentov pa zagotavljamo na drugem strežniku).

Telefonski vmesniki Fritz!Boxa

PA VENDAR JE MOGOČE …

V primerih, ko deluje Asterisk v vlogi IP-govornega strežnika (oziroma telefonske centrale), je treba na njem definirati določene uporabniške račune – interne številke. Z njihovo pomočjo omogočimo prijavo posamezne interne številke na govornem sistemu. S pomočjo tega uporabniškega računa se odjemalec (SIP-telefonski aparat, programski SIP-odjemalec) prijavi na strežnik z nameščenim Asteriskom, ki v primeru zahteve po vzpostavitvi komunikacije s to interno številko omogoči komunikacijo s tem uporabniškim računom oziroma napravo, ki ga uporablja. Z drugimi besedami, če imamo na govornem sistemu račun mojMikro, ki smo ga povezali s številko 123 in ga pri prijavi uporablja določen IP-telefonski aparat, bo v primeru klica na številko 123 Asterisk posredoval zahtevo uporabniku mojMikro, kar se bo pokazalo v obliki zvonjenja telefonskega aparata 123. Podobno je zagotovljena tudi povezljivost s karticami (le da jih ne definiramo kot VoIP-uporabnike), ki jih vdelamo v strežnik – da lahko z njihovo pomočjo zagotavljamo povezljivost na ravni ISDN (NT-, TE-način) oziroma analognih vmesnikov (FXS-, FXO-način).

Če združimo opisani mehanizem ter vmesniško kartico odstranimo iz strežnika in »naredimo« samostojno napravo, dobimo napravo, na katero lahko priključimo »klasično« (ISDN in/ali analogno) telekomunikacijsko opremo, ki pa se proti strežniku predstavlja kot VoIP-oprema (SIP, H.323, IAX, Cisco SCCP/Skinny …). Največkrat je to tako imenovani ATA-vmesnik (dejansko VoIP-prehod), s pomočjo katerega na VoIP-strežniku lahko uporabljamo klasičen analogni telefonski aparat. Praktično enako delujejo vmesniki za povezavo, ki jih bomo uporabili v našem primeru, le da bomo namesto telefonskega aparata na vmesnik priključili drugo omrežje (oziroma telefonsko centralo). Za lažje razumevanje si oglejmo dva primera.

V prvem primeru smo izbrali Linksysov vmesnik SPA-3102, ki združuje funkcionalnost NAT-usmerjevalnika z DHCP-strežnikom, ATA-vmesnika za priklop analognega telefonskega aparata (1 x FXS-vmesnik) ter VoIP-prehoda za povezavo prek PSTN-omrežja (1 x FXO-vmesnik). Značilnost tega vmesnika je, da ga največkrat uporabljajo ponudniki VoIP-storitev in je zato dokaj slabo dokumentiran – izjema so seveda različne »neuradne« spletne strani. Zavedati se je treba, da so tovrstni vmesniki po lastnostih največkrat slabši kot namenske kartice in se zato lahko na njih prej pojavijo neželeni pojavi (na primer echo – odmev). Opis celotne konfiguracije vmesnika je preobsežen, a mu bo »po občutku« kos vsak, ki je kdaj konfiguriral domači usmerjevalnik in pozna osnove prenosa govora prek IP-protokola. Zato na tem mestu podajamo le najpomembnejše namige. Ena od možnosti, da ugotovimo trenutno dodeljeni IP-naslov (dodeljen prek zunanjega strežnika DHCP), je s pomočjo priključenega telefonskega aparata in vnosa niza **** prek tipkovnice telefonskega aparata (to nam omogoči dostop do konfiguracijskega menija). Za informacijo o IP-naslovu vnesemo 110#, oddaljen dostop pa aktiviramo s pomočjo niza 7932#, ki mu sledi 1#. S pomočjo 1 omogočimo dostop prek spletnega vmesnika.

Pomembne nastavitve, povezane z VoIP-nastavitvami, najdemo prek spletnega vmesnika v zavihku Voice. Nastavitve za javni prenosnik (FXO) oziroma naročniški priključek (FXS) najdemo v menijih PSTN Line in Line 1. Paziti moramo, da sta oba vmesnika omogočena (Line enabe = yes) in da se vrata pri konfiguracijah obeh vmesnikov razlikujejo (na primer Line 1 vrata 5061, PST-line vrata 5060). Pri priključku PSTN-line definiramo usmerjanje v vrstici Dial Plan1. Če vanjo vnesem niz »< :300> S0«, bo dohodni klic iz PSTN-omrežja usmerjen na interno številko 300. Tako konfiguriran vmesnik lahko uporabimo za priklop na drugo telefonsko centralo (vmesnik FXO) ali nanj priključimo analogni telefonski aparat (vmesnik FXS).

Spoznali smo, kako konfiguriramo SPA-3102, poglejmo pa si, kako bomo omogočili njegovo uporabo v povezavi z Asteriskom. Pripravimo najprej konfiguracijski datoteki, s pomočjo katerih bomo vzpostavili povezavo oziroma omogočili uporabo SPA-3102. V datoteko sip.conf oziroma eno od »povezanih« datotek (na primer sip_custom.conf) dodajmo:

[SPA3102]
type=friend
secret=mojmikro
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=fxospa3102

Nato v datoteko extensions.conf vpišemo še vrstice, ki bodo omogočile zvonjenje telefonskih aparatov in povezavo s PSTN-omrežjem.

[fxospa3102]
exten => 210,1,Dial(SIP/210)
exten => 211,1,Dial(SIP/211)
exten => 212,1,Dial(SIP/212)
exten => _0.,1,Dial(SIP/SPA3102 ); usmerjanje v SPA3102
exten => skupina,1,Dial(SIP/210&SIP/211&SIP/212)

Na SPA-3102 moramo vnesti še potrebne parametre, ki omogočijo prijavo na naš strežnik. V zavihku Voice > PSTN Line vnesemo IP-naslov Asterisk strežnika v polje »Proxy and Registration« – Proxy. V polje »Subscriber Information« pa vnesemo uporabniško ime in geslo, ki smo ju definirali v datoteki sip.conf. Za povezavo s PSTN-omrežjem popravimo še polje »Dial Plan 1«, v katero vnesemo (S0< :skupina@IP_naslov_asterisk_strežnika> ).

Cena za SPA-3102 se giblje na spletnih straneh med petdeset in sto evri (za tovarniško obnovljene oziroma nove vmesnike), kar je primerljivo s cenami vmesniških kartic, ki jih vdelamo v strežnike. Še namig: operaterji pogosto fizičnim osebam ne omogočijo povezljivosti domačega Asterisk strežnika s svojim klicnim strežnikom na ravni SIP-protokola (samo ugibamo lahko, zakaj). Ena od možnosti je, da vam omogočijo analogni priključek, sami pa izvedete pretvorbo na zunanjem vmesniku oziroma vdelani kartici. Ni sicer racionalno, da dela operater pretvorbo iz SIP-a na analogni (FXS) vmesnik, vi pa nazaj (prek FXO na SIP), je pa rešitev v smislu kjer je volja, je tudi pot.

Grafični vmesnik Fritz!Box (nemški firmware)

ZA ISDN FRITZ

Za drugi primer smo izbrali AVM-jev Fritz!Box Fon WLAN 7170 (podobne možnosti ponuja tudi novejši model, ki smo ga predstavili kot del Poslovnega paketa Telekoma Slovenije v eni od preteklih številk). Tovarniško obnovljeni Fritz!Box Fon 7170 lahko najdemo na spletu za okrog petdeset do šestdeset evrov, kar pomeni cenovno in funkcionalno eno najugodnejših možnosti za pretvorbo iz VoIP na ISDN. Kljub širokemu naboru možnosti, ki jih ta napravica omogoča (WLAN-dostopna točka, usmerjevalnik, LAN-stikalo …), bomo za naš namen uporabili le »telefonski« del.

Spomnimo se, da imamo v primeru Euro ISDN-vmesnika digitalno So vodilo, na katero lahko priključimo več naprav in jih lahko naslavljamo z do osmimi telefonskimi številkami. Kateri od telefonskih aparatov se bo na določeno številko odzval, je odvisno od MSN-številk, ki jih vpišemo v posamezno napravo. Zato moramo naš VoIP-/ISDN-vmesnik na Asterisk prijaviti z več uporabniškimi imeni (na primer mojMikro1, mojMikro2, mojMikro3 …), vsakemu od njih pa priredimo MSN-številko na vmesniku, prek katere bomo dostopali do določenega telefonskega aparata. To naredimo na Fritzu v dveh korakih – s konfiguracijo internetne linije (internet line) oziroma fiksne linije (fixed line). S pomočjo prvih prijavimo številke na Asterisk strežniku kot SIP-uporabnike, s pomočjo drugih pa te številke usmerimo na MSN-številke ISDN-terminalov, priključenih na Fritzevo ISDN So vodilo.

Tako lahko preprosto in cenovno ugodno prek IP-omrežja priključimo obstoječe ISDN-telefonske aparate in jih po potrebi tudi uporabljamo na drugi lokaciji (prek IP-omrežja). Podobno lahko z uporabo cenovno ugodnega ISDN-vmesnika – modema (omogoča priklop na telekomunikacijsko omrežje) ter vmesnika Fritz!Fon (omogoča priklop internih ISDN-aparatov) naredimo zmogljivo ISDN-centralo – po želji tudi brez enega samega IP-telefonskega aparata. Takšno centralo lahko brez težav uporabimo doma ali v manjšem podjetju. Na tak način lahko ohranimo morebitne obstoječe telefonske aparate, hkrati pa pridobimo veliko prednosti modernega komunikacijskega strežnika (ni recimo možnosti uporabe centralnega imenika LDAP). Kombinacija cenovno ugodnega ISDN-vmesnika/modema in Fritz!Boxa je tudi bistveno cenejša kot možnost namenske ISDN-kartice, ki zagotavlja poljubno konfiguriranje vmesnikov v načinih NT/TE. Še en dokaz, da Asterisk ni le IP-telefonska centrala, ampak razvojno okolje.

Raspberry je lahko zanimiva izbira.

VRNITEV V UKAZNO VRSTICO

V do zdaj opisanih primerih smo uporabljali okolje ukazne vrstice predvsem za dostop do podatkov in nadzor nad sistemom. Do Asteriskove ukazne vrstice smo dostopali s pomočjo ukaza asterisk –rcv(vv..), ki nam je izpisovala želene podatke oziroma v realnem času spremembo trenutnih stanj. Namesto običajnega dostopa prek ukazne vrstice ali grafičnega vmesnika poskusimo drugačno pot.

S pomočjo urejevalnika besedil (na primer vi, mc …) poglejmo vsebino datoteke /etc/manager.conf, v kateri lahko najdemo definicije posameznih uporabniških računov za dostop. V datoteki manager.conf poiščimo najprej definicijo general, ki je videti nekaj podobnega kot:

[general]
enabled = yes (omogoči dostop)
port = 5038 (definira vrata)
bindaddr = 0.0.0.0
webenabled = no

Sledijo definicije posameznih uporabniških računov, ki nam omogočajo dostop in so videti nekaj podobnega kot

[mojmikro]
secret = mikado
deny=0.0.0.0/0.0.0.0
permit=192.168.200.123/255.255.255.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,originate
write = system,call,log,verbose,command,agent,user,originate

kar pomeni, da ima uporabnik z uporabniškim imenom »mojmikro« in geslom »mikado« v primeru lokalnega dostopa ali z IP-naslova 192.168.200.123 pravice definirane v vrsticah read oziroma write. V primeru prijave prek telneta na vrata 5038 imamo kot uporabnik »admin« možnost popolnega dostopa do sistema, kar lahko pomeni tudi mogočo možnost za zlorabo sistema. Omenjeno prijavo naredimo na strežniku s pomočjo ukaznega niza telnet 127.0.0.1 5038. Uporaba vrat 5038, kot lahko vidimo, ni običajna prijava na sistem, ampak neposreden dostop do Asteriska – tako imenovani AMI (Asterisk manager interface) vmesnik. Možnosti in sintakso tega vmesnika bomo spoznali v naslednji številki. Kot že ime samo namiguje, gre za vmesnik, s pomočjo katerega lahko Asterisk upravljamo ali nadzorujemo vse (tako aktivne kot tiste, ki se dinamično dodeljujejo) kanale na strežniku.

Raspberry in Asterisk


Asterisk lahko povezujemo z drugimi sistemi prek klasičnih telefonskih vmesnikov ali na ravni VoIP-povezljivosti. Povezovanje se vedno naredi tako, da en sistem predstavlja mrežno stran, drugi pa uporabniško napravo v isti tehnologiji. Na ravni ISDN je to par NT (omrežje)/TE (oprema), v primeru analognega vmesnika pa FXO/FXS.

...
Namestitev Asteriska na miniaturno strojno opremo (na primer Raspberry Pi) ali v virtualizirano okolje je lahko zelo vabljiva, tako s stališča prostora in porabe energije kot optimizacije potrebnih sistemskih virov. Zavedati pa se moramo določenih omejitev, ki jih takšna rešitev prinaša.

...
Konfiguriranje vdelanih vmesniških kartic je lažje kot uporaba zunanjih vmesnikov. Če je vmesnik določenega proizvajalca v določeni »distribuciji Asteriska« privzeto podprt, je treba vnesti le minimalno število potrebnih parametrov. V primeru uporabe zunanjega vmesnika pa se konfiguracija razdeli na več delov (konfiguracija na strežniku, usmerjanje na strežniku in vmesniku …). Zato moramo paziti, da konfiguracije na strežniku in vmesniku niso v neskladju.

...
S pomočjo zunanjih vmesnikov (analognih oziroma ISDN) lahko preprosto zagotovimo povezljivost s klasičnimi (TDM) omrežji, tudi če namestimo Asterisk na strojni opremi, ki onemogoča vdelavo vmesniških kartic ali ko ta gostuje na virtualiziranem strežniku.

...
Vmesnik AMI ni edini vmesnik, s pomočjo katerega lahko Asterisk komunicira z drugimi aplikacijami. Različni razvijalci pogosto uporabljajo AGI (Asterisk gateway interface) oziroma njegove »sorodnike«. Vsak od njih ima določene specifike. AGI omogoča preprosto premoščanje, prek katerega je mogoče razviti aplikacije za Asterisk v praktično poljubnem programskem jeziku.

...
Preveč liberalen dostop prek AMI lahko pomeni mogočo varnostno luknjo, ki lahko pripelje tudi do zlorabe sistema.

...
Asterisku lahko pošljemo ukaze tudi prek SSH-povezave. Namesto priljubljenega Puttyja lahko uporabimo njegov »derivat« Kitty, ki omogoča preprosto pošiljanje želenega niza ukazov po vzpostavljeni povezavi. Želeni ukazni niz vpišemo v tekstovno datoteko, ki jo pripnemo določeni povezavi, in uporabimo ukaz asterisk -x.

Moj mikro, september – oktober 2012 | Evan Ambrož