SIP Trunk configureren in Asterisk met PJSIP
Stap-voor-stap handleiding voor het instellen van een OpVoIP SIP-trunk in Asterisk via het PJSIP-kanaalstuurprogramma. Van toepassing op Asterisk 16, 18 en 20 (LTS).
Problemen bij het instellen? Onze specialisten controleren uw Asterisk-configuratie kosteloos.
Gratis SIP-trunk check aanvragenVereisten
- Asterisk 16, 18 of 20 (LTS-versie aanbevolen)
- Module
res_pjsipgeladen (vervanger van chan_sip) - OpVoIP SIP-credentials: gebruikersnaam, wachtwoord en SIP-server
- Root- of sudo-toegang tot de Asterisk-server
chan_sip is deprecated vanaf Asterisk 19 en verwijderd in Asterisk 21. Gebruik altijd PJSIP voor nieuwe installaties.
Stap 1 — Controleer of PJSIP geladen is
Log in op uw Asterisk-server en controleer via de CLI:
asterisk -rx "module show like pjsip"
U moet minimaal res_pjsip.so en res_pjsip_session.so zien staan als Loaded.
Niet aanwezig? Voeg toe aan /etc/asterisk/modules.conf:
load = res_pjsip.so load = res_pjsip_session.so load = res_pjsip_outbound_registration.so load = res_pjsip_authenticator.so
Stap 2 — Transport aanmaken in pjsip.conf
Open /etc/asterisk/pjsip.conf en voeg een UDP-transport toe (nog niet aanwezig):
[transport-udp] type = transport protocol = udp bind = 0.0.0.0:5060
Stap 3 — OpVoIP trunk configureren
Voeg onderstaande blokken toe aan pjsip.conf. Vervang GEBRUIKERSNAAM en WACHTWOORD door uw OpVoIP-credentials.
; Registratie bij OpVoIP [opvoip-registration] type = registration transport = transport-udp outbound_auth = opvoip-auth server_uri = sip:sip.opvoip.nl client_uri = sip:GEBRUIKERSNAAM@sip.opvoip.nl retry_interval = 60 ; Authenticatie [opvoip-auth] type = auth auth_type = userpass username = GEBRUIKERSNAAM password = WACHTWOORD ; AOR (Address of Record) [opvoip-aor] type = aor contact = sip:sip.opvoip.nl ; Endpoint [opvoip] type = endpoint transport = transport-udp context = van-trunk disallow = all allow = alaw,ulaw outbound_auth = opvoip-auth aors = opvoip-aor from_user = GEBRUIKERSNAAM from_domain = sip.opvoip.nl send_pai = yes trust_id_inbound = yes ; Identify (voor inkomende gesprekken) [opvoip-identify] type = identify endpoint = opvoip match = sip.opvoip.nl
Stap 4 — Codecs instellen
In het endpoint-blok (Stap 3) zijn de codecs ingesteld op allow = alaw,ulaw. OpVoIP ondersteunt:
| Codec | Naam | Gebruik |
|---|---|---|
alaw | G.711 A-law | Primair — standaard in Europa |
ulaw | G.711 u-law | Fallback |
g722 | G.722 | HD-audio, optioneel |
g729 | G.729 | Lage bandbreedte, optioneel (licentie vereist) |
Extra codecs toevoegen in pjsip.conf:
allow = alaw,ulaw,g722,g729
Stap 5 — Inkomende routing (dialplan)
Inkomende gesprekken van OpVoIP komen binnen op de context van-trunk (zie endpoint-blok, Stap 3). Voeg toe aan /etc/asterisk/extensions.conf:
[van-trunk]
; Specifiek DID-nummer doorsturen naar extensie 101
exten => 0851234567,1,NoOp(Inkomend DID ${EXTEN})
same => n,Dial(PJSIP/101,30)
same => n,Voicemail(101@default,u)
same => n,Hangup()
; Catch-all voor overige nummers
exten => _X.,1,NoOp(Inkomend van OpVoIP: ${EXTEN})
same => n,Goto(intern,${EXTEN},1)
same => n,Hangup()
Vervang 0851234567 door uw DID-nummer en 101 door de doelextensie. Meerdere DID-nummers = meerdere exten => regels.
Stap 6 — Uitgaande routing (dialplan)
Voeg de uitgaande routering toe aan uw interne context:
[intern]
; Nederlandse nummers (10 cijfers, begint met 0)
exten => _0XXXXXXXXX,1,NoOp(Uitgaand via OpVoIP: ${EXTEN})
same => n,Dial(PJSIP/${EXTEN}@opvoip,30)
same => n,Playtones(congestion)
same => n,Hangup()
; Internationaal (00 + landnummer)
exten => _00.,1,Dial(PJSIP/${EXTEN}@opvoip,30)
same => n,Hangup()
; Noodoproepen altijd door
exten => 112,1,Dial(PJSIP/112@opvoip)
same => n,Hangup()
Het patroon _0XXXXXXXXX matcht alleen nummers van precies 10 cijfers. Gebruik _0. als catch-all voor kortere nummers (bijv. 0800-nummers).
Stap 7 — Uitgaand CallerID via P-Asserted-Identity (PAI)
OpVoIP presenteert het uitgaande telefoonnummer via de P-Asserted-Identity (PAI)-header. Het aan uw account gekoppelde nummer wordt automatisch door OpVoIP meegegeven bij elk uitgaand gesprek.
Wilt u per extensie een ander nummer presenteren (bijv. afdeling-specifiek), dan stuurt u vanuit het dialplan een CALLERID(num) mee — OpVoIP honoreert dit als het nummer is geautoriseerd op uw account:
; Stel CallerID in vóór het bellen
exten => _0.,1,Set(CALLERID(num)=0851234567)
same => n,Dial(PJSIP/${EXTEN}@opvoip,30)
same => n,Hangup()
Stap 8 — Asterisk herladen en testen
asterisk -rx "core reload" asterisk -rx "pjsip show registrations"
De status van de OpVoIP-registratie moet Registered zijn. Test een uitgaand gesprek via uw interne toestel.
Veelvoorkomende problemen
| Probleem | Oplossing |
|---|---|
| Registratie blijft op "Trying" | Controleer firewall: UDP 5060 en 10000-20000 (RTP) moeten open zijn |
| Geen audio bij gesprek | Stel localnet en externaddr in via rtp.conf als u achter NAT zit |
| 401 Unauthorized | Gebruikersnaam of wachtwoord onjuist — controleer uw OpVoIP-portaal |