Asterisk

In dit artikel is een configuratie beschreven voor Asterisk zonder NAT. In veel gevallen zijn er Asterisk installaties met NAT, zonder dat het nodig is. Het is ook geen probleem om NAT te hebben, maar in sommige gevallen werkt het simpelweg gewoon niet met NAT. In het geval dat de provider alle inkomende poorten blokkeert, is het niet mogelijk om een NAT configuratie te gebruiken. Dan kun je de onderstaande configuratie gebruiken. Hiermee is het mogelijk om je te registeren bij een SIP provider voor inkomende telefoongesprekken en op het lokale netwerk kunnen SIP devices/clients verbinden met de Asterisk server. Het is zelfs mogelijk om een SIP device vanaf internet te verbinden, maar dat moet dan via een VPN.

Gebruikte Asterisk versie: 1.8.13.1, en zal op alle Asterisk 1.8 versies wel werken.

Lees hier meer over diverse NAT oplossingen: Asterisk+SIP+NAT+solutions

Originele configuratie bewaren

De originele Asterisk configuratie, hebben we later in dit artikel nog nodig en bevat ook heel veel informatie. Dus deze gaan we verplaatsen naar een onderliggende directory.

$ cd /etc/asterisk
$ mkdir org
$ mv * org

Uit de originele configuratie, gebruiken we 2 files, namelijk asterisk.conf en indications.conf. Deze gaan we terug kopiëren:

$ cp org/asterisk.conf .
$ cp org/indications.conf .

Nu zijn we klaar om de andere configuratie files nieuw aan te maken. Met onderstaande instructies, krijg je de basis configuratie.

Aanmaken van extensions.conf

Extensions.conf is één van de belangrijkste files, hierin staat het dialplan. We maken deze als volgt aan met ‘vi’:

$ vi /etc/asterisk/extensions.conf

Als het goed is, is deze leeg omdat we de originele file zonet verplaatst hebben. Insert met ‘i’, de volgende configuratie in de file:

[general]
autofallthrough=yes
clearglobalvars=yes
priorityjumping=no

[globals]

[default]
include => Internal
include => CallingRules

[Incoming]
; Ring on extension 6001, 6002
exten => s,1,Answer()
;exten => s,n,Dial(SIP/6001&SIP/6002&SIP/6003&SIP/6004,40,g)
exten => s,n,Dial(SIP/6001&SIP/6002,40,g)
exten => s,n,Goto(s-${DIALSTATUS},1) ; Routes the call to the status NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER
exten => s-NOANSWER,1,Goto(Voicemenu,s,1) ; Nobody picked up the phone: Not available
exten => s-BUSY,1,Goto(Voicemenu,s,1) ; Person at extension: Is busy
exten => s-ANSWER,1,Congestion(10) ; Generate a congestion tone
exten => s-ANSWER,n,Hangup() ; Hangup the answered call
exten => _s-.,1,Goto(s-NOANSWER,1) ; Handle unhandled status, like NOANSWER

[Voicemenu]
exten => s,1,NoOp()
exten => s,n,Answer()
exten => s,n,Playback(record/NietBereikbaar)
exten => s,n,Set(CHANNEL(language)=en)
exten => s,n,Voicemail(6001@default)
exten => s,n,Hangup()

[Internal]
; Listen to the voicemail on your extension
exten => 5000,1,VoiceMailMain(${CALLERID(num)})

; Listen to your voicemail message and use the voicemail (for testing)
exten => 6000,1,Goto(Voicemenu,s,1)

; Internal lines
exten => _600X,1,Dial(SIP/${EXTEN},40,g)
exten => _600X,n,Hangup()

[CallingRules]
; Callingrule: NL vast en mobiel (default)
exten => _0XXXXXXXXX,1,Dial(SIP/Poivy/${EXTEN},60,tr)

; Callingrule: Call via Budgetphone (Dial '1' before the whole 10-digits nr)
exten => _10XXXXXXXXX,1,Dial(SIP/Budgetphone/${EXTEN:1},60)

; Callingrule: Call via Poivy (Dial '2' before the whole 10-digits nr)
exten => _20XXXXXXXXX,1,Dial(SIP/Poivy/${EXTEN:1},60,tr)

; Callingrule: Call to Czech Republic (international) landline and mobile (default)
exten => _0042X.,1,Dial(SIP/Poivy/${EXTEN},60,tr)

; Callingrule: Alarm nr 112
exten => _112,1,Dial(SIP/Budgetphone/${EXTEN},60,tr)

; Callingrule: Prepaid saldo Budgetphone
exten => _444,1,Dial(SIP/Budgetphone/${EXTEN},60,tr)
; Callingrule: Voicemail Budgetphone
exten => _555,1,Dial(SIP/Budgetphone/${EXTEN},60,tr)

; Callingrule: 0800 en 0900 nr's
exten => _0[89]00X.,1,Dial(SIP/Budgetphone/${EXTEN},60,tr)

; Callingrule: NL Gemeentes
exten => _14XXX.,1,Dial(SIP/Budgetphone/${EXTEN},60,tr)

Aanmaken van sip.conf

In sip.conf staat de informatie voor de SIP verbindingen. Meer informatie hierover is hier te vinden: Asterisk+config+sip.conf

We maken deze als volgt aan met ‘vi’:

$ vi /etc/asterisk/sip.conf

Ook is deze file op dit moment leeg. Hierin kopiëren we het volgende:

[general]
registertimeout=120        ; [sec] Timeout for registration of trunk
context=default            ; the default context
allowoverlap=no            ; Disable overlap dialing support
bindaddr=192.168.1.244     ; IP address to listen on
bindport=5060              ; Port to listen on
srvlookup=no               ; No DNS SRV lookups on calls
nat=no                     ; Not a NAT configuration
;rtptimeout = 60           ; [sec] Timeout if there is no RTP traffic
;rtpholdtimeout = 300      ; [sec] Timeout if there is no RTP traffic in hold state
language=nl                ; Default language

; Format for the register statement is:
;       register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry]
;       register => fromuser@fromdomain㊙authuser@host
register => 31152121234@sip1.budgetphone.nl:sipwachtwoord:31152121234@sip1.budgetphone.nl
register => poivyuser:poivywachtwoord@sip.poivy.com

[Budgetphone]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
host=sip1.budgetphone.nl   ; IP address of SIP provider
fromdomain=sip1.budgetphone.nl  ; IP address of SIP provider
fromuser=31152121234       ; SIP user
defaultuser=31152121234    ; SIP user
secret=sipwachtwoord       ; SIP password
context=Incoming           ; Context for incoming calls
dtmfmode=rfc2833           ; Normally used DTMF mode
disallow=all               ; First disallow all
allow=alaw                 ; Used codecs
allow=ulaw
canreinvite=no             ; Stop sending of (re)INVITEs if call is established
nat=no                     ; Don't use NAT
insecure=port,invite       ; Specifies how to handle connections with peers

[Poivy]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
host=sip.poivy.com         ; IP address of SIP provider
defaultuser=gebruiker.poivy  ; SIP user
secret=sipwachtwoord       ; SIP password
insecure=invite,port       ; Specifies how to handle connections with peers
fromuser=0152121234        ; Caller ID what will be shown on other side
context=Incoming           ; Context for incoming calls
qualify=yes                ; Check every 60 sec. if client is reachable
dtmfmode=rfc2833           ; Normally used DTMF mode

[6001]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
defaultuser=6001           ; SIP user
secret=Geheim              ; SIP password
callerid=Gebruiker 1<6001> ; A description of the phone
regexten=6001              ; Phone extension
host=dynamic               ; Phone needs to register itself
mailbox=6001@default       ; Mailbox extension (defined in voicemail.conf)
dtmfmode=rfc2833           ; Normally used DTMF mode
nat=no                     ; Don't use NAT
canreinvite=no             ; Stop sending of (re)INVITEs if call is established
dynamic=yes                ; Possible to call the phone when registered
qualify=yes                ; Regular check if the phone is still registered

[6002]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
defaultuser=6002           ; SIP user
secret=Geheim              ; SIP password
callerid=Gebruiker 2<6002> ; A description of the phone
regexten=6002              ; Phone extension
host=dynamic               ; Phone needs to register itself
mailbox=6002@default       ; Mailbox extension (defined in voicemail.conf)
dtmfmode=rfc2833           ; Normally used DTMF mode
nat=no                     ; Don't use NAT
canreinvite=no             ; Stop sending of (re)INVITEs if call is established
dynamic=yes                ; Possible to call the phone when registered
qualify=yes                ; Regular check if the phone is still registered

[6003]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
defaultuser=6003           ; SIP user
secret=Geheim              ; SIP password
callerid=Gebruiker 3<6003> ; A description of the phone
regexten=6003              ; Phone extension
host=dynamic               ; Phone needs to register itself
mailbox=6003@default       ; Mailbox extension (defined in voicemail.conf)
dtmfmode=rfc2833           ; Normally used DTMF mode
nat=no                     ; Don't use NAT
canreinvite=no             ; Stop sending of (re)INVITEs if call is established
dynamic=yes                ; Possible to call the phone when registered
qualify=yes                ; Regular check if the phone is still registered

[6004]
type=friend                ; SIP type: friend=user+peer (common for SIP devices)
defaultuser=6004           ; SIP user
secret=Geheim              ; SIP password
callerid=Gebruiker 4<6004> ; A description of the phone
regexten=6004              ; Phone extension
host=dynamic               ; Phone needs to register itself
mailbox=6004@default       ; Mailbox extension (defined in voicemail.conf)
dtmfmode=rfc2833           ; Normally used DTMF mode
nat=no                     ; Don't use NAT
canreinvite=no             ; Stop sending of (re)INVITEs if call is established
dynamic=yes                ; Possible to call the phone when registered
qualify=yes                ; Regular check if the phone is still registered

Wijzig hierin het volgende voor BudgetPhone:

  • BudgetPhone gebruikersnaam: Wijzig 31152121234 in je eigen gebruikersnaam
  • BudgetPhone wachtwoord: Wijzig **sipwachtwoord **in je eigen wachtwoord
  • Vergeet niet de Budgetphone gebruikersnaam en wachtwoord in de registry te veranderen.
  • Bij de extensies 6001 callerid veranderen in iets leesbaars. Bijvoorbeeld ‘Beneden <6001>’ o.i.d. Het extensie nr <6001> geeft aan op de gebelde telefoon, vanaf welke extensie gebeld wordt.
  • Poivy: wijzig hier ook de gebruikersnaam en wachtwoord. Ook de fromuser, welke bij Poivy bekend moet zijn. Deze moet je bij Poivy instellen, waardoor je telefoonnr meegezonden wordt als je iemand belt.

Aanmaken van modules.conf

In modules.conf staat de informatie voor de te laden modules. Deze zetten we op autoload=yes

We maken deze als volgt aan met ‘vi’:

$ vi /etc/asterisk/modules.conf

Hierin komt alleen te staan:

[modules]
autoload=yes

SIP devices / telefoons

Om in te loggen op de Asterisk centrale, heb je een gebruikersnaam en een wachtwoord nodig. Deze staan in de sip.conf onder de sectie [6001] etc. beschreven. Het wachtwoord staat achter ‘secret’. Je kunt deze veranderen. In dit voorbeeld zijn de logingegevens:

  • SIP server:
  • gebruikersnaam ‘6001’
  • wachtwoord ‘geheim’
  • Verder niets

Achtergrond informatie

Als je de foutmelding Retransmission timeout reached on transmission krijgt, lees dan hier: Foutmelding: Retransmission timeout reached on transmission

Dit artikel behoort tot de ‘Asterisk configureren’ gids. De andere artikelen zijn:

  1. Asterisk configuratie zonder NAT
  2. Asterisk en de Grandstream HT704 VOIP adapter
  3. Asterisk beltonen instellen in het Nederlands
  4. Asterisk voicemail configureren
  5. Asterisk in het Nederlands
  6. Het gebruiken van Asterisk
  7. Foutmelding: Retransmission timeout reached on transmission