Data/IT‎ > ‎IPTelefoni‎ > ‎

Telefonsentral


Prosjekt: Oppsett av enkel Asterisk IP telefoniserver.

Generalt: Tidligere så var telefonsentraler meget kostbare elektromekaniske innretninger forbeholdt dem med 
et forholdsvis stort budsjett. I dag så kan vi sette opp en fullautomatisk telefonsentral som kjører som et dataprogram
i en PC. Asterisk er et slikt telefoniserverprogram. Vi skal i dette prosjektet lære det helt grunnleggende i forhold
til å ta i bruk et slikt program.

Nødvendig utstyr: Det behøves i prinsipp minst 3 stk PC, dvs to Windows arbeidsstasjoner og en Linux server. Disse
bør være koplet opp i et lokalt nettverk. Det går imidlertid også an å få tingene til å kjøre på et virtuelt nettverk
inne i en PC slik at man kan få testet at tingene fungerer. For å få til en fullverdig test, så behøves også like mange
USB telefonirør som det finnes arbeidsstasjoner.

Framgangsmåte:

Steg 1. Først må vi skaffe til veie 2 stk Windows arbeidsstasjoner. På disse må vi laste med og installere Zoiper
IP telefoni klienter.

Steg 2. Så behøver vi en ekte eller en virtuell Linux server. Da jeg testet ut dette eksemplet så brukte jeg
Ubuntu 10.04 server, som jeg lot kjøre som en virtuell maskin under VirtualBox. Det kan også brukes en fysisk
PC for installasjon av Ubuntu og Asterisk.

Steg 3. Det forutsettes at man har fått en Ubuntu server. Denne kan man så kople seg opp mot ved hjelp av
Putty og WinSCP. Fra putty, så kjører man først "ifconfig" for å se hvilken IP Ubuntuserveren har. I mitt tilfelle
så viste det seg å være 192.168.1.37

Steg 4. Vi kan nå installere asterisk server programmet på Ubuntu serveren. Først taster vi kommandoen
"apt-get update" for å få oppdatert i forhold til repositories. Når denne prosessen er ferdig, så taster vi 
"apt-get install asterisk" og den automatiske prosessen for installasjon av Asterisk er i gang. (Hos Ubuntu
så er det faktisk så enkelt. Hos andre distroer så kan det være noe mer komplisert.  Det tar et stykke tid, så
er Asterisk serveren på plass.

Steg 5. Vi er nå klar til å gå i gang med å konfigurere Asterisk serveren. Dette gjøres enklest fra Windows ved
at vi kopler oss opp mot Linux serveren ved hjelp av programmet WInSCP. I directoriet /etc/asterisk så finner
vi alle konfigurasjonsfilene for Asterisk.

Steg 6. Det kan se ut som om det finnes svært mange konfigurasjonsfiler, men det er bare tre av disse som
vi behøver å arbeide med for å få til vårt lille eksempel. Dette er:

sip.conf som har å gjøre med tilkopling av SIP enheter for trafikk inn og ut av serveren. 

extensions.conf som har å gjøre med hvordan Asterisk setter opp trafikken i forhold til oppringte og mottatte
telefonnummer.

rtp.conf som har å gjøre med hvilke kommunikasjonsporter som Asterisk benytter seg av. Her er det satt opp
som default langt flere porter enn det som behøves for en mindre telefonsentral, slik at dette antallet kan reduseres.

Identifiser hvor de tre konfigurasjonfilene som vi skalgjennomføre endringer i befinner seg.

Steg 7.

For vårt lille eksempel så kan sip.conf settes opp slik:


; ***** Start

[general]

port = 5060           ; Port to bind to (SIP is 5060)
bindaddr = 0.0.0.0    ; Address to bind to (all addresses on machine)
disallow=all
allow=ulaw
allow=alaw
allow=gsm
;allow=all
context = incomming ; Send unknown SIP callers to this context
callerid = Unknown
srvlookup=yes

; Så definerer vi for tilkopling av våre to Zoiper klienter, linje 200 og 201:

[200]
username=200
type=friend
secret=22223333
record_out=Adhoc
record_in=Adhoc
qualify=no
port=5060
nat=no
mailbox=200@device
host=dynamic
dtmfmode=rfc2833
context=from-internal
canreinvite=no
callerid=device <200>

[201]
username=201
type=friend
secret=22223333
record_out=Adhoc
record_in=Adhoc
qualify=no
port=5060
nat=no
mailbox=201@device
host=dynamic
dtmfmode=rfc2833
context=from-internal
canreinvite=no
callerid=device <201>

; Slutt, det var det.

 
Steg 8.

Så var det å sette opp filen extensions.conf som bestemmer hvordan de ulike numrene behandles og hvordan
telefonitrafikken flyter gjennom serveren:

; **** Start

;*********************************************************
[incomming]
;*********************************************************
; Denne seksjonen vil det bare være behov for hvis vi skal ringe inn fra omverdenen.
:
;**************************************
[from-internal]
;*************************************

;******* Intern trafikk mellom interne nummer

exten => 200,1,Answer()
exten => 200,2,Dial(SIP/200)
exten => 200,3,Hangup()

exten => 201,1,Answer()
exten => 201,2,Dial(SIP/201)
exten => 201,3,Hangup()


;****Slutt


Steg 8.

Filen rtp.conf kan vi sette opp for eksempel slik:

;Start
;
; RTP Configuration
;
[general]
;
; RTP start and RTP end configure start and end addresses
;
rtpstart=10000
rtpend=10010
;
;Slutt


Steg 9.

Vi setter så opp Ubuntu serveren slik at det er mulig å gjøre en remoote root pålogging.

Dette gjør vi ved å logge oss på via ordnær brukerkonto først.

Så kjører vi kommando: 

sudo passwd root

Vi legger så inn det nye root passordet.


Steg 10.

Vi fjernpålogger så som root på Ubuntuserveren.

Når vi er inne i root shell, så starter vi opp asterisk sitt CLI kommandoshell slik:

asterisk -vvvvvr

Vi kan nå både se meldinger fra Asterisk serveren mens den kjører og gi kommandoer til den, mens den kjører.

Vi kan forsøke med kommandoen "help" for å se hvilke muligheter som finnes.

Der etter så kjører vi kommandoen "reload" for å laste inn den nye konfigureringen. 


Steg 11.

Vi kan nå logge på de Zoiper klientene. Serverens ip er i begge tilfeller den samme.
(I mitt tilfelle i forbindelse med testingen 192.168.1.37

Pålogging og passord er:

200 / 22223333 og 201 / 22223333


Steg 12.

Det var det. Nå kan de to linjene, henholdsvis 200 og 201 ringe til hverandre, og ved å se inn på Asterisk CLI shell,
så kan vi også se hvordan dette skjer.



Et åpent spørsmål til slutt: Kan vi ikke også ringe ut og inn fra Asterisk serveren ?

Det kan vi godt, men det forutsetter ett av to alternativer.

Enten så må vi lage såkalt terminering selv, ved å kjøpe et telefoniskort som vi så setter inn i PC og kopler opp mot det ordinære
telefoninettet. En annen mulighet er å kjøpe termineringen som en ferdig tjeneste fra en ekstern iptelefoni leverandør. Det lar seg gjøre,
rent teknisk å knytte seg opp mot flere iptelefoni leverandører samtidig. 

Vi kan da for eksempel programmere Asterisk serveren slik at den kjører forskjellig utgående trafikk til den iptelefoni
leverandøren som er rimeligst på hver enkelt trafikk type, for eksempel i ulike land.

For å få til dette, så behøver vi å kunne litt mer om Asterisk serveren og iptelefoni enn det som vi har rukket gjennom til nå, men det
finnes en stor gratis bok om emnet  Her.



Comments