[SR-Users] Route calls from Kamailio to Asterisk behind NAT

Daniel Tryba d.tryba at pocos.nl
Sat Aug 12 17:19:34 CEST 2017


On Sat, Aug 12, 2017 at 08:49:45AM +0300, vs at cell.tel wrote:
>    Using alias_db - 7XXX calls were succesfully aliased and routed to
>    Asterisk through 4444 user (asterisk server did not accept connections to
>    sip ports from Internet due to security reasons).
>    On asterisk side, all this calls had equal extension, configured in
>    sip.conf "REGISTER =>.../exten" string.
>     
>    So I had to extract right exten from TO: header in dialplan like this:
...
asterisk conf
...

Alternative is to first do the lookup in kamailio and then restore the
$rU variable:

$var(orgRu)=$rU;
if lookup()/alias_db_lookup success
$rU=$var(orgRu);

     
>    One disadvantage with alias_db - is that i cant use regex to alias all
>    7XXX numbers with 4444 user, so i need to create aliases for every 7XXX
>    user in dbaliases table using this scenario.
>     
>    Is the any other not very difficult way to route all 7XXX calls in
>    Kamailio to Asterisk through 4444 user without creating alias dbrecords
>    for every number?

A way to do this is by storing prefixex in the aliasdb table. I use this
brilliant piece of code to match exact numers, 10 number blocks, 100
and 1000 number blocks. 

if(!alias_db_lookup("dbaliases"))
{
	strip_tail(1);

	if(!alias_db_lookup("dbaliases"))
	{
		strip_tail(1);
		if(!alias_db_lookup("dbaliases"))
		{
			strip_tail(1);
			alias_db_lookup("dbaliases");
		}
	}
}

Since my dbaliases contains full e164 number/prefixes there are no
collisions. Adapt for your number schemes.

An alternative is to use sqlops to do custom queries and for example
retrieve the username and use lookup() to route.




More information about the sr-users mailing list