Waarom 'n SIP-oproep oor 'n VPN registreer maar geen klank stuur nie
Registrasie en klank volg verskillende paaie. Volg een oproep deur die tonnel om te sien watter adresse die PBX kan gebruik en waar RTP werklik stop.
Suksesvolle registrasie sê byna niks oor klank nie. 'n Sagtelefoon kan ure lank 'n geldige binding by die kantoor se PBX hou en steeds stilte lewer. Die tonnel dra net die pakkette wat iemand doelbewus daarin stuur, en 'n oproep gebruik drie afsonderlike paaie: binding, dialoogopstelling en die RTP-stroom. Sodra jy dit uitmekaar haal, val die fout op een pad eerder as op die woord VPN.
Stel jou 'n skootrekenaar op tuis-Wi-Fi voor wat 'n kantoorbyvoeging deur 'n goedgekeurde tonnel skakel. Die PBX verifieer die gebruiker, aanvaar die REGISTER, en die byvoeging wys as beskikbaar, tog verbind die oproep met dooie lug in een rigting.
Registrasie bind 'n kontak, nie 'n mediapad nie
’n REGISTER-versoek vra die registrateur om 'n koppeling tussen 'n adres-van-rekord en een of meer kontak-URI's te stoor. Daardie koppeling beantwoord 'n noue vraag oor waar 'n nuwe dialoog nou gestuur moet word. Dit sê niks oor waar media hoort nie, en 'n aanvaarde registrasie bewys nie dat 'n latere INVITE 'n bereikbare media-adres dra nie. Registrasies verval ook op 'n tydhouer, so 'n telefoon wat ophou vernuwe verloor inkomende oproepe terwyl sy tonnel steeds gesond lyk. Let op die kontakvervaldatum eerder as die tonnelstatus.
Wanneer die sagtelefoon agter die tonnel sit, kan die kontakkop 'n private adres dra. 'n PBX wat dit na 'n ander eindpunt aanstuur, skep 'n dialoog gerig op 'n netwerk wat die gebelde nie kan bereik nie. Om rewrite_contact=yes op die PJSIP-eindpunt te stel, laat die PBX die bronadres wat dit waargeneem het, vervang, wat dikwels die verskil tussen 'n lui en 'n verstryking is.
Wat die INVITE bied en wie dit kan gebruik
'n INVITE met 'n SDP-liggaam stel voor waar die oproeper media wil ontvang: 'n adres, 'n poort en 'n lys kodeks. Die gebelde antwoord met sy eie adres en poort, en elke kant stuur dan RTP na wat die ander voorgestel het. As die oproeper 'n 192.168.x.x-adres voorgestel het wat net binne sy tuisnetwerk bestaan, het die gebelde nêrens om klank te stuur nie, maak nie saak hoe skoon die seingeewing was nie. Masquerading herskryf IP-opskrifte soos pakkette 'n router verlaat, maar dit herskryf nooit die teks binne 'n SDP-liggaam nie.
Daardie gaping verduidelik die klassieke eenrigting-oproep: seingeewing werk omdat albei eindpunte die PBX kan bereik, en klank misluk omdat een eindpunt aangesê is om na 'n adres te stuur wat net agter 'n ander NAT bestaan.
| Path | Who picks the address | Typical failure |
|---|---|---|
| REGISTER | Softphone, rewritten by the registrar if configured | Binding expires or points at a private address |
| INVITE and SDP | Each endpoint in its own offer or answer | Offer names a media address nobody can route to |
| RTP | PBX relay policy or the two endpoints | Port range blocked, or no return path |
Wie die klank dra, is 'n konfigurasiekeuse
Seingeewing en media is aparte rolle. 'n Proxy kan 'n hele oproep lank op die seingpad bly en nooit 'n enkele RTP-pakket aanraak nie. Of die PBX 'n media-herleier word, hang van die konfigurasie af, nie van die teenwoordigheid van 'n tonnel nie.
Met direkte media ruil die eindpunte self RTP, wat goed werk op een LAN en sleg wanneer een kant agter 'n nou poortreeks sit.
Om direct_media=no te stel, dwing die PBX in die mediapad in sodat albei bene op 'n adres eindig wat hy beheer, wat bandwydte en rekenkrag verruil vir voorspelbare adressering. Wanneer hy herlei, moet die PBX steeds 'n bereikbare adres adverteer. Op 'n multi-homed gasheer besluit external_media_address en external_signaling_address in pjsip.conf wat in SDP en in Via-opskrifte verskyn. Laat dit ongestel en die PBX kan sy LAN-adres aanbied aan 'n oproeper wie se enigste roete die verre kant van die tonnel is.
Volg elke rigting voordat jy instellings aanraak
Begin met die soktabel op die PBX terwyl 'n oproep aktief is: ss -uanp | grep -E '5060|10000' wys of RTP-poorte gebind is en watter plaaslike adres hulle gebruik. As niks in die media-reeks gebind is nie, is die herleier nie betrokke nie en praat die eindpunte direk. Maak dan op die sagtelefoonkant opnames met tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap. Uitgaande pakkette sonder inkomende pakkette vernou die probleem tot die terugpad of tot die adres wat aan die verre kant gesê is om te gebruik, en 'n leë opname beteken media het nooit die tonnelkoppelvlak bereik nie. 'n Seingeewing-opname met sngrep beantwoord die ander helfte deur die SDP-verbindingslyn te wys soos dit gestuur is.
Vergelyk die adres in daardie verbindingslyn met die adres waarheen die verre kant werklik kan roeteer. Daardie een vergelyking los die meeste eenrigting-klankverslae vinniger op as enige konfigurasie-oorsig.
Enkripsie stop by die tonnelrand
SIP oor TLS beskerm die seingeewingsprong waarvoor dit opgestel is, SRTP beskerm media wanneer albei kante dit onderhandel, en die tonnel beskerm verkeer tussen sy eie eindpunte. Nie een van dié gee die ander nie. 'n Oproep wat binne die tonnel geïnkripteer is, kan die poort in duidelike teks na die PBX verlaat, wat 'n ontwerpbesluit is eerder as 'n fout.
Voordat jy die kaartjie sluit, bevestig drie dinge in volgorde: die registrasie is vars, die SDP dra 'n adres wat die verre kant kan bereik, en pakkette vloei beide kante toe op die media-poorte. As enige een daarvan onwaar is, is die tonnel nie waar die probleem woon nie. Maak die pad reg wat gefaal het en herhaal dan dieselfde opname om die verandering te bevestig. Om die opnames van voor en ná te hou, maak die volgende eenrigting-verslag 'n vyfminuut-toets eerder as 'n middag.