Goal
To enable users registered at a Nortel MCS5100 SIP proxy to call to other SIP domains, and be reachable from other domains in a scalable manner.
Applicability
Nortel MCS5100 can only accept external SIP calls from domains that are statically entered into the configuration. If the end-users that are registered at the MCS want to call 'outside', or want to be reached from outside, the administrator would have to enter each domain that end users would like to call or be called from, which would require too much work. This recipe can make it possible using Asterisk as a SIP Border Controller (SBC).
...
so the original '@' must be replaced by an underscore, and the new URI must be followed by the domain that corresponds with the SBC, so that the MCS can forward it to the SBC.
Prerequisites (OS, dependencies on other software)
- Nortel MCS5100 3.5.7
- Asterisk 3.1 (in this example on Redhat 4)
- DNS SRV records for SIP pointing at the SBC for domainA (instead of the MCS)
Configuration (OS agnostic)
Configuration of the Nortel MCS5100 proxy
In the administrator web interface, adjust the following settings:
Add a foreign domain for the SBC:
And make sure that the MCS services its own IP address when you look at the main properties of the 'domainA.net' domain (click on the map icon that corresponds with your domainA in the menu on the left, which is 'surfnet.nl' in this picture):
Configuration of the Asterisk SBC
Edit sip.conf as follows (replace everything between <> for your situation):
...
No Format |
---|
[general] static=yes writeprotect=yes ;###################################################### ;## Local extensions ## ;###################################################### [default] ;###################################################### ;## Variables ## ;###################################################### [globals] ;###################################################### ;## Macro's ## ;###################################################### [macro-safedial] exten = s,1,Dial(${ARG1},${ARG2},${ARG3},${ARG4}) exten = s,2,Goto(s-${DIALSTATUS},1) exten = s-CANCEL,1,Hangup exten = s-NOANSWER,1,GotoIf($["${DIALEDTIME}" = "0"]?3) exten = s-NOANSWER,2,Hangup exten = s-NOANSWER,3,Verbose(1,Need failover for "${ARG1}") exten = s-BUSY,1,Busy exten = s-CHANUNAVAIL,1,Verbose(1,Need failover for "${ARG1}") exten = s-CONGESTION,1,Congestion exten = _s-.,1,Congestion exten = s-,1,Congestion ;###################################################### ;## Inbound lines ## ;###################################################### [in-guest] ; Anonymous SIP calls ; Accepted formats: ; <cc><ac><pref><ext> ; <0><ac><pref><ext> ; <ext> ; firstname.lastname exten = _[0-9A-Za-z].,1,Verbose(1,Routing external call from ${CALLERID} to ${EXTEN} on ${CHANNEL}) exten = _[0-9A-Za-z].,n,Dial(SIP/erik.dobbelsteijn@surfnet.nl) exten = _[0-9A-Za-z].,n,Busy exten = _[0-9A-Za-z].,n,Hangup [in-pbx] ; Routable traffic from the MCS exten = _[0-9A-Za-z].,1,Verbose(1,Routing MCS call from ${CALLERID} to ${EXTEN} on ${CHANNEL}) exten = _[0-9A-Za-z].,n,Set(REQURI=${CUT(EXTEN,_,1)}) exten = _[0-9A-Za-z].,n,Set(REQDOMAIN=${CUT(EXTEN,_,2)}) exten = _[0-9A-Za-z].,n,Verbose(1,Rewrote MCS call from ${CALLERID} to ${REQURI}@${REQDOMAIN} on ${CHANNEL}) exten = _[0-9A-Za-z].,n,Dial(SIP/${REQURI}@${REQDOMAIN}) [inbound-router] include = route-dnid include = route-vpbx exten = i,1,Congestion ;###################################################### ;## Routing tables ## ;###################################################### ; ; International call formats used ; [routing] ;include = route-local ;include = route-smarthost exten = i,1,Congestion exten = t,1,Busy |