Enum (e164 Number Mapping)
Přesná definice ENUMu by mohla znít, že jde o mapovací systém mezi různými prostory identifikátorů. Vstupním prostorem ENUMu je prostor telefonních čísel. Jeho výstupním prostorem potom prostor všech URI identifikátorů. Po dotazu od uživatele na určité telefonní číslo tedy ENUM vrací odpověď v podobě URI identifikátoru. ENUM však není nutným požadavkem pro VoIP a neměl by se plést s běžným směrováním VoIP, založeným na protokolech SIP a H323 s použitím URI. Poskytovatelé služeb VoIP přiřazují URI zákazníkovi tak, aby mohli vytvořit spojení přes internet, tedy v podstatě telefonní hovor. ENUM je systém založený na DNS, který poskytuje vhodné služby, které pomáhají uskutečnit hovor, ale rozšiřuje i možnosti spojení o další DNS služby. Pro systém ENUM byl vyroben speciální typ záznamu v DNS – NAPTR. Mezinárodní telekomunikační unie alokovala ENUM zvláštní zónu, jmenovitě „e164.arpa“ pro použití s čísly E.164. Jakékoli telefonní číslo pak může být transformováno do doménového jména obrácením čísel a jejich oddělením tečkami a přidáním přípony e164.arpa, jako v následujícím příkladu: +420123456789 = 9.8.7.6.5.4.3.2.1.0.2.4.e164.arpa.
Z pohledu IP telefonie může být ENUM rozdělen na :
-
User ENUM
Výhody a využití ENUMu
ENUM dovoluje zveřejnit k telefonnímu číslu informaci, jak se na něj dovolat přes internet. Zbytek již obstará telekomunikační infrastruktura podporující ENUM, která při vytočení telefonního čísla vždy nejprve zjistí, zda-li se může spojit s telefonem volaného účastníka přes internet. Pokud ano, hovor je spojen tímto způsobem a je zdarma. V případě, že propojení přes internet není možné, hovor proběhne běžnou cestou po telefonních linkách veřejné telefonní sítě a je zpoplatněn dle aktuálních ceníků telefonních operátorů
Získání telefonního čísla
Registrace telefonního čísla do ENUM probíhá podobně jako registrace klasické domény. Uživatel si zvolí registrátora a do jeho registračního systému vloží potřebné údaje. Nejdůležitější údaj představuje telefonní číslo, jehož správnost a regulernost bude po zapsání do registru ještě ověřena (validace). Validace nejčastěji probíhá formou zaslání SMS na toto číslo. Zpráva obsahuje heslo, které je nutno zadat, aby došlo k ověření. Ale existují i jiné způsoby validace. Proces je ukončen přidáním záznamu se SIP adresou do DNS.
Instalace ENUM
Do
souboru /etc/asterisk/extensions.conf přidáme
pravidla pro
přímé vytáčení
čísel
(bez využití ENUM) a kontext
pro vytáčení přes ENUM:
exten
=>
411119695024,1,Dial(SIP/uzivatel1)
exten
=>
511119695024,1,Dial(SIP/uzivatel2)
exten
=>
611119695024,1,Dial(SIP/uzivatel3)
exten
=>
711119695024,1,Dial(SIP/uzivatel4)
include
=> enum
Pomocí pravidla include
=> enum je
přidán kontext enum
do vlastního kontextu
users_all , což umožní
uživatelům využívat pravidal definovaná
v kontextu enum:
include
=> users_all
[macro-enumexten]
exten
=> s, 1,
Set(entrycount=${$ENUMLOOKUP
(+${ARG1},sip,c,e164.arpa)}|counter=0)
exten
=> s, 2,
GotoIf($[”${counter}”<”${entrycount}”]?3:6)
exten
=> s, 3,
Set(counter=$[${counter}+1])
exten
=> s, 4,
Dial(SIP/${ENUMLOOKUP
(+${ARG1},sip,${counter},e164.arpa)})
exten
=> s, 5,
GotoIf($[”${counter}”<”${entrycount}”]?3:6)
exten
=> s, 6, NoOp(No
SIP entries in e164.arpa for ${ARG1}.)
V
kontextu enum jsou
dále definována pravidla pro převod
čísel do mezinárodního tvaru a jejich
následné
vyhledání
pomocıí makra enumexten:
[enum]
exten
=>
_XXXXXXXXX,1,Macro(enumexten,420${EXTEN})
exten
=>
_00X.,1,Macro(enumexten,${EXTEN:2})
exten => _XXXXXXXXXX.,1,Macro(enumexten,${EXTEN})
KONFIGURACE PBX ASTERISK verze 1.2 pro ENUM
bindport=5060
bindaddr=0.0.0.0
domain=158.196.142.10
srvlookup=yes
Konkrétní definice
uživatelů vypadá následovně:
[users]
type=friend
username=karel
userid=Karel Karel
<1234>
host=dynamic
context=users
[josef]
type=friend
username=josef
userid=Josef Josef
<5678>
host=dynamic
context=users
exten => 1234,1,Dial(SIP/karel)
exten => 5678,1,Dial(SIP/josef)
exten =>
_10XX,1,Dial(SIP/1015@158.196.142.14)
include => enum
(Pozn: extenze exten =>
_10XX,1,Dial(SIP/1015@158.196.142.14) zajistí,
že na číslo 1015
registrované na OpenSER budou přesměrována
volání na jakékoliv čtyřmístné
číslo
začínající dvojčíslím 10.)
Dále je definován kontext
pro příchozí hovory. Kontext v této podobě zajistí že všechny příchozí hovory
budou obsluhovány stejně, jako kdyby byly iniciovány uvnitř naší sítě.
[incoming]
include => users
Kontext pro ENUM - usnadní
vyhledávání a následné vytáčení čísel pomocí ENUM.
[macro-enumexten]
exten
=> s, 1, Set(entrycount=${$ENUMLOOKUP
(+${ARG1},sip,c,e164.arpa)}|counter=0)
exten
=> s, 2, GotoIf($[”${counter}”<”${entrycount}”]?3:6)
exten
=> s, 3, Set(counter=$[${counter}+1])
exten
=> s, 4, Dial(SIP/${ENUMLOOKUP
(+${ARG1},sip,${counter},e164.arpa)})
exten
=> s, 5, GotoIf($[”${counter}”<”${entrycount}”]?3:6)
exten
=> s, 6, NoOp(No SIP entries in e164.arpa for ${ARG1}.)
Kontext ENUM – definuje pravidla pro převod
čísel do mezinárodního formátu a jejich
následné vyhledání pomocí makra
enumexten.
[enum]
exten
=> _XXXX,1,Macro(enumexten,420${EXTEN})
exten =>
_00X.,1,Macro(enumexten,${EXTEN:2})
exten =>
_XXXXX.,1,Macro(enumexten,${EXTEN})
Dále je definována funkce
ENUMLOOKUP, která vyhledá zadané číslo ve stromu ENUM a měla by vrátit zpracovaný NAPTR záznam jednoho typu (URI).
ENUMLOOKUP (1234[, sip[, 1[, e164.arpa]]])
ENUMLOOKUP (5678[, sip[, 1[, e164.arpa]]])
ENUMLOOKUP (1015[, sip[, 1[, e164.arpa]]])
ENUMLOOKUP (1018 [, sip[, 1[, e164.arpa]]])
Pokud budeme chtít zkusit
spojení mezi Asteriskem a SERem, tak na straně Asterisku nejdřív spustíme
Asterisk příkazem v Linuxu:
asterisk –r
a potom zadáme:
což zajistí, že
dojde k aktualizaci možných změn ve vytáčecím plánu, které jsme provedli.
Potom spustíme EKIGU a
registrujeme uživatele následovně:
Registrátor: 158.196.142.10
Uživatel: karel
Heslo: cokoliv
nebo
Název účtu: 5678
Registrátor: 158.196.142.10
Uživatel: josef
Heslo: cokoliv
Registrace by měla proběhnout úspěšně a mělo by být možné volat
v rámci Asterisku mezi čísly 1234 a 5678, dále
mezi uživateli registrovanými na OpenSER a Asterisk, tedy například mezi čísly
1234 a 1015. Na číslo 1015 se dovoláme i tehdy, pokud zadáme jakékoliv
libovolné čtyřmístné číslo začínající dvojčíslím 10.