I’ve been troubleshooting a Voice over IP (VoIP) issue at work, so I thought it would be a good time to try my hand at setting up a couple of Asterisk servers and linking them with SIP trunks.
Asterisk 16 now uses the PJSIP module by default and while I found plenty of examples of how to set up a trunk to a VoIP provider using PJSIP, there was nothing on how to configure the other end.
Finally after two days I figured it out, and hopefully to save others from the pain, I ‘ve documented the configuration below.
;
; Server A - pjsip.conf
;
[siptrunk-auth]
type = auth
auth_type = userpass
username = <USER>
password = <ASTRONGPASSWORD>
[siptrunk-aor]
type = aor
contact = sip:serverB.domain.tld
[siptrunk]
type = endpoint
context = from-serverB
allow = !all,g722,ulaw
outbound_auth = siptrunk-auth
aors = siptrunk-aor
direct_media = no
[siptrunk-registration]
type = registration
outbound_auth = siptrunk-auth
server_uri = sip:serverB.domain.tld
client_uri = sip:<USER>@serverB.domain.tld
retry_interval = 60
[siptrunk-identify]
type = identify
match = serverB.domain.tld
endpoint = siptrunk
;
; ServerB - pjsip.conf
;
[<USER>] ;
type = auth
auth_type = userpass
username = <USER>
password = <ASTRONGPASSWORD>
[<USER>]
type = aor
max_contacts = 1
[<USER>]
type = endpoint
context = from-ServerA
allow = !all,ulaw
direct_media = no
auth = <USER>
aors = <USER>
[<USER>]
type = identity
match = ServerA.domain.tld ; sometimes you might need to use the actuall IP Address
endpoint = <USER>
;
; ServerA - extensions.conf
;
[to-serverB]
; route extensions starting with 6XXX to Server B
exten => _6XXX,1,Dial(PJSIP/${EXTEN}@siptrunk,,25)
same => n,Hangup()
;
; ServerB - extensions.conf
;
[to-serverA]
; route extensions starting with 7XXX to Server A
exten => _7XXX,1,Dial(PJSIP/${EXTEN}@<USER>,,25)
same => n,Hangup()