Úspešná registrácia vám o zvuku nepovie takmer nič. Softphone môže hodiny udržiavať platnú väzbu s kancelárskym PBX a napriek tomu prenášať ticho. Tunel nesie len pakety, ktoré doň niekto zámerne pošle, a hovor používa tri oddelené cesty: väzbu, nadviazanie dialógu a prúd RTP. Keď ich oddelíte, porucha padne na jednu cestu namiesto na slovo VPN.

Predstavte si notebook na domácej Wi-Fi, ktorý vytáča kancelársku linku cez schválený tunel. PBX overí používateľa, prijme REGISTER a linka sa zobrazí ako dostupná, napriek tomu sa hovor spojí s mŕtvym tichom v jednom smere.

Registrácia viaže kontakt, nie cestu pre médiá

Požiadavka REGISTER žiada registrátora, aby uložil mapovanie medzi adresou záznamu a jedným alebo viacerými kontaktnými URI. Toto mapovanie odpovedá na úzku otázku, kam sa má nový dialóg práve teraz poslať. Nehovorí nič o tom, kam patria médiá, a prijatá registrácia nedokazuje, že neskorší INVITE nesie dosiahnuteľnú adresu médií. Registrácie tiež vypršia podľa časovača, takže telefón, ktorý prestane obnovovať, stráca prichádzajúce hovory, zatiaľ čo jeho tunel stále vyzerá zdravo. Sledujte expiráciu kontaktu, nie stav tunela.

Keď softphone sedí za tunelom, hlavička kontaktu môže niesť súkromnú adresu. PBX, ktorý ju prepošle inému koncovému bodu, vytvorí dialóg namierený do siete, kam volaný nemôže dosiahnuť. Nastavenie rewrite_contact=yes na koncovom bode PJSIP prinúti PBX nahradiť pozorovanú zdrojovú adresu, a to je často rozdiel medzi zvonením a vypršaním.

Čo INVITE ponúka a kto ho môže použiť

INVITE s telom SDP navrhuje, kde chce volajúci prijímať médiá: adresu, port a zoznam kodekov. Volaný odpovedá vlastnou adresou a portom a každá strana potom posiela RTP tomu, čo navrhla druhá. Ak volajúci navrhol adresu 192.168.x.x, ktorá existuje len v jeho domácej sieti, volaný nemá kam zvuk posielať, nech bola signalizácia akokoľvek čistá. Maskovanie prepisuje IP hlavičky, keď pakety opúšťajú router, ale nikdy neprepisuje text vo vnútri tela SDP.

Táto medzera vysvetľuje klasický jednosmerný hovor: signalizácia funguje, pretože oba koncové body dosiahnu na PBX, a zvuk zlyháva, pretože jednému koncovému bodu bolo povedané, aby posielal na adresu, ktorá existuje len za iným NAT.

PathWho picks the addressTypical failure
REGISTERSoftphone, rewritten by the registrar if configuredBinding expires or points at a private address
INVITE and SDPEach endpoint in its own offer or answerOffer names a media address nobody can route to
RTPPBX relay policy or the two endpointsPort range blocked, or no return path

Kto nesie zvuk, je voľba konfigurácie

Signalizácia a médiá sú oddelené úlohy. Proxy môže zostať na ceste signalizácie celý hovor a nikdy sa nedotknúť jediného paketu RTP. Či sa PBX stane mediálnym relé, závisí od konfigurácie, nie od prítomnosti tunela.

Pri priamych médiách si koncové body vymieňajú RTP samy, čo funguje dobre v jednej LAN a zle, keď jedna strana sedí za úzkym rozsahom portov.

Nastavenie direct_media=no vtlačí PBX do cesty médií, takže obe nohy končia na adrese, ktorú ovláda, výmenou za predvídateľné adresovanie a za cenu šírky pásma a procesora. Keď preposiela, musí PBX stále inzerovať dosiahnuteľnú adresu. Na hostiteľovi s viacerými sieťami external_media_address a external_signaling_address v pjsip.conf určujú, čo sa objaví v SDP a v hlavičkách Via. Ak ich necháte nenastavené, PBX môže ponúknuť svoju LAN adresu volajúcemu, ktorého jediná cesta je vzdialená strana tunela.

Prejdite každý smer, než siahnete na nastavenia

Začnite tabuľkou socketov na PBX, kým hovor beží: ss -uanp | grep -E '5060|10000' ukáže, či sú porty RTP sviazané a ktorú miestnu adresu používajú. Ak v mediálnom rozsahu nie je nič sviazané, relé nie je zapojené a koncové body hovoria priamo. Potom zachyťte na strane softphonu pomocou tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap. Odchádzajúce pakety bez prichádzajúcich zužujú problém na spiatočnú cestu alebo na adresu, ktorú má vzdialená strana použiť, a prázdna vzorka znamená, že médiá vôbec nedosiahli rozhranie tunela. Zachytenie signalizácie pomocou sngrep odpovedá na druhú polovicu tým, že ukáže riadok spojenia SDP tak, ako bol odoslaný.

Porovnajte adresu v tomto riadku spojenia s adresou, na ktorú vzdialená strana skutočne vie smerovať. Toto jediné porovnanie vyrieši väčšinu hlásení o jednosmernom zvuku rýchlejšie než akákoľvek revízia konfigurácie.

Šifrovanie sa končí na okraji tunela

SIP cez TLS chráni signálny skok, pre ktorý bol nastavený, SRTP chráni médiá, keď sa na tom oba konce dohodnú, a tunel chráni prevádzku medzi svojimi koncovými bodmi. Žiadne z toho nedáva to ostatné. Hovor šifrovaný vnútri tunela môže opustiť bránu v otvorenom texte smerom k PBX, čo je rozhodnutie o návrhu, nie závada.

Než zatvoríte tiket, potvrďte tri veci v poradí: registrácia je čerstvá, SDP nesie adresu, na ktorú vzdialená strana dosiahne, a pakety prúdia oboma smermi na mediálnych portoch. Ak je niektorá z toho nepravdivá, problém nie je v tuneli. Opravte cestu, ktorá zlyhala, a potom zopakujte rovnaké zachytenie, aby ste zmenu potvrdili. Uchovanie zachytení pred a po robí z nasledujúceho hlásenia o jednosmernom zvuku päťminútovú kontrolu namiesto celého popoludnia.

Súvisiace články