Uso di NRENUM

L’albero nrenum.net, essendo pubblico, e’ consultabile da chiunque intenda fare o ricevere chiamate SIP, quindi anche da coloro che non fanno direttamente parte della Comunità GARR o delle altre Reti della Ricerca in generale.


Per poter invece inserire uno spazio di numerazione sotto nrenum.net bisogna essere effettivamente titolari di un prefisso E.164 per il quale si chiede la delega e bisogna far parte della Comunità GARR.
A partire da tali presupposti, per partecipare all’iniziativa, bisogna disporre nella propria infrastruttura di rete, di sistemi che svolgono funzioni IP-PBX quali ad esempio, SER o Asterisk, in grado fare e ricevere richieste ENUM sotto l’albero di nrenum.net.


Per quanto riguarda SER (versione 0.9.6), in configurazione va aggiunto quanto segue all’interno del file /usr/local/etc/ser/ser.cfg per eseguire il “load” del modulo ENUM:

 

 

loadmodule "/usr/local/lib/ser/modules/enum.so"


Per permettere al proprio SIP proxy SER di utilizzare la tecnologia ENUM, vanno inserite nella route[x] dedicata alle chiamate in uscita le seguenti righe di codice:

 # cattura tutti i numeri con "00" davanti, e sostituisce "00" con "+" 
     if (uri=~"^sip:00[0-9]+\*?[0-9]+@") { 
      subst_uri('/sip:00([0-9]+\*?[0-9]+)@(.*)/sip:+\1@\2/g');         
       };

# cattura tutti i numeri italiani, senza +39 o 0039 davanti, e aggiunge il +39 
     if (uri=~"^sip:0[^0][0-9]+\*?[0-9]+@") { 
     subst_uri('/sip:([0-9]+\*?[0-9]+)@(.*)/sip:+39\1@\2/g');         
      };

# a questo punto si puo' effettuare la query enum, ma solo se la R-URI inizia col "+"
       if (uri=~"^sip:\+[0-9]+\*?[0-9]+@") {   
       if (!enum_query("e164.arpa.")) {           
       enum_query("nrenum.net.")  
         } 
       } 

Nell’esempio sopra viene mostrato come le richieste vengano fatte all’albero e164.arpa; nel caso di mancata risposta le query vengono rivolte all’albero di nrenum.net. Per quanto riguarda le chiamate in ingresso si deve predisporre il SIP Proxy per ricevere SIP URI simili a quelle che si ottengono dal DNS, "customizzando" le route caso per caso.

Per quanto riguarda Asterisk (versione 1.4), in configurazione va aggiunto quanto segue all’interno del file /etc/asterisk/extensions.conf:

 exten => _+.,1,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip,1,e164.arpa)})
 exten => _+.,n,GotoIf($["${Sipuri}" != ""]?dial)
 exten => _+.,n,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip,,1,nrenum.net)})
 exten => _+.,n,GotoIf($["${Sipuri}" = ""]?lookupfailed)
 exten => _+.,n(dial),Dial(SIP/${Sipuri},60,r)
 exten => _+.,n(lookupfailed),Hangup()

Con l’istruzione “Set” viene assegnato il valore dell’URI trovato nel ramo dell’ e164.arpa alla variabile SipURI. Se la variabile SipURI é non nulla, con l’istruzione “GotoIf” si può passare al comando “Dial”; in modo del tutto analogo alla prima istruzione, con la seconda “Set” viene assegnato il valore dell’URI trovato nel ramo dell’nrenum.net alla variabile SipURI. Se invece la variabile SipURI é nulla, mediante la seguente istruzione si passa al comando “Hangup”.

Stampa