neděle 26. června 2016

T-Mobile VoIP a Asterisk za NATem

Je známo, že každý VoIP poskytovatel má řešení připojení dle svojí IP technologie, znalostí techniků dohledového centra a obchodní politiky prodeje služby atd.. Z toho vyplývá podstata problému připojení hlasových služeb, protože co funguje u jednoho operátora to u jiného fungovat z největší pravděpodobností nebude. Proto je zde popis připojení VoIP účtů do komunikačního systému Asterisk, který je umístěn za NATem (operátor T-Mobile (obdoba podobného připojení jako u O2 Centrex, ale zde to není nesmyslně blokované)). Jistě to není jediné řešení, ale pro mé potřeby dostačující a sloužící jako zápisek postupu oživení.

Pro připojení "Hlasové linky Premium", potřebujeme od operátora znát (z oficiálního dokumentu T-Mobile s drobnými úpravami):
  1. Telefonní číslo – telefonní číslo ve tvaru 420123456789
  2. Uživatelské jméno – telefonní číslo ve tvaru 420123456789
  3. Přístupové heslo – je uvedeno na přístupové kartě pro službu a má podobu 12ti místného čísla.
  4. adresa SIP serveru: sip.tmip.cz
  5. adresa registračního SIP serveru: sip.tmip.cz
  6. adresa SIP GW: sip.tmip.cz
Pro provoz Telefonní linky Premium jsou používány následující porty a protokoly, které musí prostupovat přes firewally:
  1. TCP a UDP protokol na portu 5060 a 5061 (pro signalizaci)
  2. UDP protokol pro RTP přenos na portech 16348-32768 (pro přenos hlasu)
Doporučuje se používat STUN server ani PROXY server. V některých zařízeních ale nemůže zůstat nevyplněný, v tomto případě je nutné zadat ims.tmobile.cz. Rovněž se doporučuje deaktivovat zasílání Keep-alive Message pro UDP. Pro správnou funkčnost přesměrování a předávání hovoru musí mít koncové zařízení aktivované zasílání Prack zpráv.
Nároky na kvalitu internetového připojení
  • latence: max. 200 ms
  • ztrátovost: max. 1 %
  • jitter: max. 30 ms
  • rychlost uploadu pro jedno tel. číslo min. 50 kbps pro faxy doporučujeme min. 100 kbps
Pro telefonování prostřednictvím IP musí být správně nastavené podporované protokoly, a to v pořadí: G.729 (G.729 v Asterisku zbytečně vytěžuje CPU a je licencován),
G.711 a-law, G711 u-law. V případě dostatečné rychlosti linky je možné na telefonu povolit i kodek G.722 pro hovory mezi IP telefony na stejné ústředně v kvalitě HD voice. Jiné protokoly nejsou podporovány.Nastavení Asterisku:

sip.conf
[general]
port = 5060
bindaddr = 0.0.0.0                           ; IP adresy kde Asterisk poslouchá
externip = 46.13.203.38                   ; IP adresa serveru T-mobile ; důležité pro příchozí hovory
localnet = 10.0.0.1/255.255.255.0    ; identifikace lokalní sitě s Asteriskem
;nat=force_rport                              ; v případě problémů nastavit (default = yes)
allowguests = no
context = fail                                    ; v pripade utoku odkaz na kontext
disallow = all
allow = alaw
language = cz

; registrace k operátorovi

register => 420123456789:321645987852@sip.tmip.cz:5060/123456789
;register => uživatel:heslo@doménaVOIP:port/extension pro příchozí hovor

;==================USERS=====================
[101]
...
[102]
...
;==================LINE====================== 

[420123456789]
type = friend
host = sip.tmip.cz
fromdomain = sip.tmip.cz
context = from_VOIP_ISP                                  ; kontext pro příchozí hovor
dtmfmode = rfc2833
insecure = invite,port                                           ; způsob vyjednání hovoru
defaultuser = 420123456789                               ; nahrazuje položku username
fromuser = 420123456789                                   ; identifikace from (CLIP)
secret = 321645987852                                         ; heslo
canreinvite = no                                                    ; drží spojení RTP přes Asterisk !!!!
                                                                               ; v nové verzi přejmenováno na "directmedia"

Nejdůležitějšími parametry jsou "externip", což pomáhá propojit vnější síť s lokální sítí a druhý nejdůležitější parametr je "canreinvite" který říká, že audio stream musí jít přes Asterisk, který už prošel NATem, tudíž koncové přistroje komunikují s Asteriskem a Asterisk s poskytovatelem. Asterisk se chová jako media gateway. Více zde.

extension.conf
[general]
static = yes
writeprotect = yes
autofallthrough = yes

[fail]                                                                                                             ; bezpečnostní kontext
exten => _X.,1,Hangup()                                                                       ; ukonči vše

[from_VOIP_ISP]
exten => 123456789,1,NoOp (number=${CALLERID(number)})     ; zobrazí internat. CLIP
same => n,Set(CALLERID(all)=${CALLERID(number):5})             ; nastaví national CLIP
same => n,NoOp(${CALLERID(all)})                                                ; zobrazí nastavení CLIP
same => n,Dial(SIP/101)                                                                       ; volá uživatele

[out]
exten => _X.,1,Set(CALLERID(all)=420123456789)    ; nastaví odchozí international ID (CLIP)
exten => _X.,n,Dial(SIP/420123456789/${EXTEN})    ; odchozí hovor pomocí
                                                                                               ; kontextu v sip.conf

V nastaveni dial plánu je důležité nastavení mezinárodního formátu čísla a to příchozí hovory dle kontextu "from_VOIP_ISP" a pro odchozí hovory dle kontextu "out". Vytočení čísla směrem k operátorovi slouží kontext "420123456789" v parametru "Dial" odkazující na sip.conf.
Popis sip.conf parametrů zde.
T-Mobile VoIP a Asterisk za NATem 2