VoIP PBX
Slackware.SE Wiki
Innehåll |
[redigera] Asterisk VoIP PBX med Slackware
[redigera] Om Asterisk
Asterisk är en Open Source VoIP PBX. Projektet drivs och utvecklas av Digium.
[redigera] Obligatoriska Paket
Installationen kräver följande paket för att kunna kompilera Asterisk och/eller Zaptel
- ncurses, ligger på cd´n under slackware/l
- openssl, ligger på cd´n under slackware/n
- zlib, ligger på cd´n under slackware/l
- bison, ligger på cd´n under slackware/d (Gäller enbart Asterisk 1.0.X)
OBS: Jag tar ej upp något om Zaptel i denna lilla guide.
[redigera] Installation
- Edit: Jag snickarar på ett slackpaket, det är inte riktigt färdigt men det kommer innom kort. ock då slipper ni en hel del skrivande :-)
Vi börjar med att ladda ner filerna och packa upp källkoden.
# cd /usr/src # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.34.tar.gz # tar -zxf asterisk-1.4.34.tar.gz # cd asterisk-1.4.34
För att köra Asterisk som en användare istället för root så ska vi göra en liten ändring i "Makefile" innan vi fortsätter. Man kan göra detta manuellt, men jag har skapade en "patch" för att göra saken lite enklare.
# wget http://jolix.se/slack-patches/asterisk.non-root-fix.patch.gz # gunzip asterisk.non-root-fix.patch.gz # patch -p1 -i asterisk.non-root-fix.patch
Om allt gått rätt till så står nu följande:
patching file contrib/init.d/rc.slackware.asterisk patching file Makefile
Så nu kan vi fortsätta installationen genom att skriva:
# ./configure # make # make install # make samples
Nu är installationen klar så vida inte något paket saknas.
Innan vi försöker starta Asterisk, måste vi lägga till användare och grupp för Asterisk användaren. detta gör vi så här:
# groupadd asterisk # useradd -s /bin/false -g asterisk asterisk
För att Asterisk ska ha tillgång till sina konfigurationsfiler med mera så måste vi sätta rätt behörighet på dessa kataloger. Detta gör vi geom att skriva följande:
# chown -R asterisk:asterisk /etc/asterisk/ # chown -R asterisk:asterisk /var/lib/asterisk/ # chown -R asterisk:asterisk /usr/lib/asterisk/ # chown -R asterisk:asterisk /var/log/asterisk/ # chown -R asterisk:asterisk /var/run/asterisk/ # chown -R asterisk:asterisk /var/spool/asterisk/
Så nu är vi klar med detta steget.
[redigera] Avinstallation
Kan man avinstallera kompilerade installationer? Klart man kan :-) Se till att du sparat katalogen där du körde kompileringen.
Jag personligen brukar spara mina kompileringar i /usr/src/, sedan gör du följande:
# cd /usr/src/asterisk-1.4.34 # make uninstall # make uninstall-all (OBS detta kommando raderar alla filer för asterisk, även konfigurationsfiler) # make clean # rm -rf /usr/src/asterisk-1.4.34
Asterisk är nu avinstallerad.
Körde du kommandot "make uninstall-all" så är det inget kvar av Asterisk filer alls.
[redigera] Konfigurations filer
Som standard sparas konfigurationsfilerna i /etc/asterisk/, "make" kommandot i installationen "make samples" Skapade alla konfigurations filerna och sparade dem i denna katalog.
Vi går inte igenom alla konfigurations filer i denna guide. Men tar upp hur en SIP konfiguration kan se ut. Dom filerna vi går igenom är de filer som gör att du kan få igång systemet och kunna ringa interna anknytningar och även konfigurera DID.
[redigera] sip.conf
I denna konfigurationsfil ställer man in grundkonfigurationen för SIP trunk och anknytningar.
En standard konfiguration med ITSP så som Cellip, Rix Telecom, Phonera och AllTele skulle kunna se ut som följande:
/etc/asterisk/sip.conf
[general]
bindport=5060 ; UDP Port för att lyssna på(SIP standard port är 5060)
bindaddr=0.0.0.0 ; IP address att lyssna på (0.0.0.0 lysnnar på alla adresser)
disallow=all
allow=ulaw
allow=alaw
context=default
callerid=Unknown
useragent=Asterisk Operator
register => DIDanvändarnamn:DIDlösenord@sip.exempel.se/1000
[operator]
context=operator-in
type=peer
username=DIDanvändarnamn
fromuser=DIDanvändarnamn
secret=DIDlösenord
host=sip.exempel.se
fromdomain=sip.exempel.se
insecure=port,invite
canreinvite=no
[200] ; Exempel på hur en anknytning för Softphone X-Lite kan se ut
context=ext-intarn
type=friend ; Endera "friend" (peer+user), "peer" eller "user"
username=X-Lite
secret=losenord
callerid="X-Lite" <200>
host=dynamic
;nat=yes ; X-Lite är bakom NAT router
nat=no ; X-Lite är på samma nätverk som Asterisk
;canreinvite=no ; Oftast sat till "NO" om klient är bakom NAT
disallow=all
allow=gsm ; GSM använder mycket mindre bandbredd än G711-u (ulaw)
allow=ulaw
allow=alaw
mailbox=200@default ; VoiceMail, Telefonsvarare
[201] ; Exempel på hur en anknytning för Grandstream BudgeTone kan se ut
context=ext-intarn
type=friend ; Endera "friend" (peer+user), "peer" eller "user"
username=Grandstream ; Matchar titel sektionen
secret=losenord
callerid=Grandstream <201>
host=dynamic ; Om telefonen är tilldelad en ipadress från en dhcp server
;host=192.168.0.23 ; Annars om vi har en statisk IP address
nat=no ; Det finns inget NAT mellan telefonen och Asterisk
canreinvite=yes ; tillåt RTP voice trafik att gåförbi Asterisk
dtmfmode=info ; Endera RFC2833 eller INFO för BudgeTone telefoner
disallow=all ; Måste "disallow=all" före vi kan "allow="
allow=ulaw ; Notera: I användar sektionen ordningen av "codecs"
; som är listad med "allow=" Spelar ingen roll!
mailbox=201@default ; VoiceMail, Telefonsvarare
[redigera] extensions.conf
I denna konfigurations fil konfigurerar man själva "Dial-plan", alltså hur Asterisk ska koppla samman olika anknytningar och vilka regler som gäller för interna anknytningar, inkommande och utgående samtal:
/etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=no
include => operator-in
[globals]
ALLA=SIP/200&SIP/201
TEL1=SIP/200
TEL2=SIP/201
[default]
[ext-intarn]
include => operator-ut
exten => 200,1,Dial(${TEL1})
exten => 201,1,Dial(${TEL2})
exten => **86,1,VoiceMailMain(${CALLERID(num)}@default) ; Ringer en anknytning "**86" så kommer denna åt sin voicemail.
exten => **86,2,Hangup()
[operator-in]
exten => 1000,1,Dial(${ALLA},20) ; Ringer till alla Anknytningar som är definierade i variabeln ALLA
exten => 1000,2,VoiceMail(200@default,u) ; Obesvarade inkomande samtal hamnar i Anknytning 200's röstbrevlåda
exten => 1000,102,VoiceMail(200@default,b) ; Obesvarade inkomande samtal hamnar i Anknytning 200's röstbrevlåda
exten => 1000,103,Hangup() ; Om ingen svarar innom 20 sekunder lägger Asterisk på automatiskt
[operator-ut]
exten => _x.,1,Dial(SIP/${EXTEN}@operator)
exten => _x.,2,Playback(invalid)
exten => _x.,3,Hangup()
[redigera] voicemail.conf
Röstbrevlåda (VoiceMail) är Asterisk telefonsvarare, som ber den som ringer in att spela in ett meddelande då ingen svarar.
Formatet för en så kallad röstbrevlåda (VoiceMail) ser ut som följande:
röstbrevlåda => lösenord,namn[,epost[,personsökar_epost[,alternativ]]]
Förklaring på varje del:
röstbrevlåda (mailbox):
Detta är nummret till röstlådan. Vanligen samma nummer som till anknytnings nummret.
lösenord:
Detta är ett siffer lösenord som ägaren använder för att komma åt hans/hennes röstbrevlåda. Om en användare byter lösenord, kommer systemet att uppdatera fältet i voicemail.conf filen.
namn
Detta är namnet av röstbrevlåds ägaren.
epost
Detta är epost adressen för röstbrevlåds ägaren. Asterisk kan sända (voicemail) meddelanden. (Inkluderar röstinspelningen med mailet) till den specificerade epost adressen.
personsökar_epost
Detta är epost adressen till röstbrevlåds ägarens personsökare eller mobiltelefon. Asterisk kan sända ett kort röst meddelanden till den specificerade epost adressen.
alternativ
Detta fält är en lista av alternativ som man ställer in röstbrevlåds ägarens tidszon. Den skriver över den globala inställningen. Den har nio olika val och består av alternativen: attach, serveremail, tz, saycid, review, operator, callback, dialout och exitcontext. Dessa val skall vara i alternativ = värde par, separerade med piph tecken "|". tz alternativet sätter ägarens tidszon fördefinierade i [zonemessages] stycket i voicemail.conf. De andra åtta alternativen överskriver de globala voicemail inställningarna med samma namn.
För att konfigurera röstbrevlådan som vi skapat i våran "Dial-plan" så lägger vi till några rader i /etc/asterisk/voicemail.conf som vi förklarat.
Dessa rader lägger vi till efter [default]:
200 => 200,X-Lite Mailbox 201 => 201,Grandstream Mailbox
Så det der ut som följande:
[default] ; Define maximum number of messages per folder for partcular context. ;maxmsg=50 200 => 200,X-Lite Mailbox 201 => 201,Grandstream Mailbox
[redigera] Ljudproblem och felmeddelanden
Om Asterisk ger felmeddelande i CLI eller loggfilen:
rtp.c - in process_rfc3389: Comfort noise support incomplete in Asterisk (RFC 3389). Please turn off on client if possible...
Och du kanske upplever att ljudet hackar eller klipper.
Lösningen på detta problem är oftast att stänga av "silence suppression" i SIP enheten (IP-Telefonen).
Sök efter denna inställning i enhetens konfiguration. Funktionens beteckning kan variera mellan olika enheter.
Men refereras oftast till silence suppression, Voice Active Detector (VAD) och comfort noise
[redigera] Brandvägg
Om Asterisk står bakom en brandvägg som inte har UPNP eller om du kanske konfigurerat iptables på din Linux maskin som kör Asterisk, så måste du "porta" igenom vissa portar till din Asterisk servern för att kunna ansluta till din ITSP och för att få igenom ljudet när någon ringer externt. Dessa inställningar kan variera lite men dessa fungerar oftast:
- UDP 5060 (SIP anslutning)
- UDP 8000-8012 (Ljud genomströmning så kallad RTP)
Din ITSP´s support sidor har troligen mer information och eventuellt andra inställningar. för just sina system.
[redigera] sip.conf tips
Tips på inställningar i /etc/asterisk/sip.conf om din server står bakom en hårdvaru eller Linux brandvägg.
[general]
bindport=5060 ; UDP Port för att lyssna på(SIP standard port är 5060)
bindaddr=0.0.0.0 ; IP address att lyssna på (0.0.0.0 lysnnar på alla adresser)
externip=123.123.123.123 ; Din externa ip adress som du fått tilldelat av din ISP.
; istället för "externip=" kan man använda "externhost=" om din ISP
; tilldelar dig nya ip adresser via dhcp. Och du använder dig av
; tjänster så som dyndns eller no-ip.
localnet=192.168.0.0/255.255.255.0 ; Ditt lokala subnät
disallow=all
allow=ulaw
allow=alaw
context=default
callerid=Unknown
useragent=Asterisk Operator
[redigera] rtp.conf tips
Om din ITSP sänder och tar emot RTP mellan portarna 8000-8012 som nämt tidigare, så kan du ställa in din "port range". Detta ändras i /etc/asterisk/rtp.conf
rtpstart=8000 rtpend=8012
[redigera] Hårdvaru router
Problem som kan uppstå om man ligger bakom en hårdvaru router. Här följer en eventuell lösningar på detta problem.
[redigera] SPI
SPI (Stateful Packet Inspection)
Vissa routrar har en funktion som heter SPI, denna funktionen kan störa VoIP trafiken och om du har en hårdvarubrandvägg med denna funktionen så bör den inaktiveras.
[redigera] Starta Asterisk
För att starta asterisk så skriver man:
# asterisk -U asterisk -G asterisk
För att få Asterisk att starta när du startar systemet gör du följande:
OBS för att följande ska fungera så måste du ha kört patchen "asterisk.non-root-fix.patch" som nämt tidigare.
# cp contrib/init.d/rc.slackware.asterisk /etc/rc.d/rc.asterisk # chmod 755 /etc/rc.d/rc.asterisk
Du kan även nu starta och stoppa asterisk med kommandona:
# /etc/rc.d/rc.asterisk start
Eller för att stoppa Asterisk, skriver du:
# /etc/rc.d/rc.asterisk stop
Om man nu vill titta i Asterisk CLI skriver man följande:
# asterisk -r
Väl inne i Asterisk CLI promt, kan man få hjälp om man skriver:
Asterisk 1.4.34, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 1.4.34 currently running on pbx (pid = 23320) pbx*CLI> help
Och tryck sedan "enter"
[redigera] Stoppa Asterisk
För att stoppa Asterisk så skriver vi i CLI promten:
Asterisk 1.4.34, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 1.4.34 currently running on pbx (pid = 23320) pbx*CLI> stop now
Och tryck sedan "enter"
[redigera] Asterisk GUI
Asterisk GUI är webbgränssnitt som gör det möjligt att konfigurera Asterisk via Webbläsaren, om man nu inte vill göra allt via konfigurations filer som denna guide visat.
Asterisk GUI finns endast tillgänglig för Asterisk 1.4, vilket är del av Digium´s senaste projekt AsteriskNow.
Man har då två val, antingen installerar man Asterisk GUI på en asterisk installation som man själv installerat, eller så installerar man AsteriskNow.
Jag visar enbart installationen av Asterisk GUI i denna guide.
[redigera] Krav
För att kunna installera Asterisk GUI krävs att du installerat senaste Asterisk 1.4 som nämnt tidigare i denna guide.
Punkter 1.2 & 1.3, utöver detta så måste du även installera SVN (subversion) som ligger på instalaltions skivan under slackware/d
Observera: Det grafiska gränssnittet fungerar för närvarande inte med Asterisk 1.6.x, Detta är något man arbetar på.
[redigera] Installation
Installationen ser ut som följande:
# cd /usr/src # svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui # cd asterisk-gui # ./configure # make # make install
Innan vi fortsätter är det rekomenderat att backa up Asterisk konfigurations filer.
Detta gör vi:
# cp -r /etc/asterisk /usr/src/asterisk.backup # make samples
Nu är Asterisk GUI installerat.
[redigera] Avinstallation
Se till att du sparat katalogen där du körde kompileringen.
# cd /usr/src/ # rm -rf asterisk-gui # rm -rf /var/lib/asterisk/static-http/config # cp -r /usr/src/asterisk.backup /etc/asterisk
Så har du avinstallerat Asterisk GUI och återställt dom gamla konfigurations filerna.
[redigera] manager.conf
För att få webbgränssnittet att kunna kommunicera med Asterisk ändrar vi och lägger till de blå markerade raderna i /etc/asterisk/manager.conf
[general] displaysystemname = yes enabled = yes webenabled = yes port = 5038 httptimeout = 60 bindaddr = 0.0.0.0 [admin] secret = astgui read = system,call,log,verbose,command,agent,user,config write = system,call,log,verbose,command,agent,user,config
[redigera] http.conf
För att slutföra inställningarna för själva webbservern så konfigurerar vi /etc/asterisk/http.conf
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport = 8088
[redigera] Laddaom Asterisk
Glöm inte att antingen starta om Asterisk eller gå in i Asterisk CLI och skriva följande:
Starting Asterisk /usr/sbin/asterisk -U asterisk -G asterisk
Asterisk 1.4.34, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 1.4.34 currently running on pbx (pid = 23320) pbx*CLI> reload
[redigera] Kontroll
Slutligen för att kontrollera att installation blivigt korrekt och att konfigurations filerna är korrekt, skriver vi följande:
# cd /usr/src/asterisk-gui # make checkconfig
Nu ska den visa något liknande:
* Checking for http.conf: OK * Checking for manager.conf: OK * Checking if HTTP is enabled: OK * Checking if HTTP static support is enabled: OK * Checking if manager is enabled: OK * Checking if manager over HTTP is enabled: OK -- Everything looks good -- * GUI should be available at http://xxx.xxx.xxx.xxx:8088/asterisk/static/config/cfgbasic.html
Nu ska du kunna surfa till http://xxx.xxx.xxx.xxx:8088/asterisk/static/config/cfgbasic.html och logga in med användarnamn och lösenordet som du uppgav i /etc/asterisk/manager.conf
Klart.
[redigera] Externa länkar
- Asterisk Guru - Tutorials
- Asterisk Wiki - Wiki
- Asterikast - Asterisk how-to videos
- The O'Reilly book, Asterisk: The Future of Telephony
Skapad
--Minime 24 juli 2008 kl. 14.26 (CEST)
Uppdaterad
--Minime 24 juli 2010 kl. 23.41 (CEST)
