Ei vellukka registrering fortel nesten ingenting om lyd. Ein softphone kan i timar halde ei gyldig binding til PBX-en på kontoret og likevel levere stille. Tunnelen ber berre pakkane som nokon med vilje sender inn i han, og ein samtale brukar tre separate vegar: bindinga, dialogoppsettet og RTP-straumen. Når du skil dei, landar feilen på éin veg i staden for på ordet VPN.

Sjå føre deg ein berbar PC på heimenettet som ringjer ei kontorforlenging gjennom ein godkjend tunnel. PBX-en autentiserer brukaren, godtek REGISTER, og forlenginga vert vist som tilgjengeleg, men likevel vert samtalen kopla opp med daud luft i éin retning.

Registrering bind ein kontakt, ikkje ein medieveg

Ein REGISTER-førespurnad ber registraren lagre ei mapping mellom ei adresse-på-post og éin eller fleire kontakt-URI-ar. Den mappinga svarar på eit smalt spørsmål om kvar ein ny dialog skal sendast akkurat no. Ho seier ingenting om kvar medium høyrer heime, og ei godteken registrering provar ikkje at ein seinare INVITE ber ei nåbar medieadresse. Registreringar går òg ut på ein timer, så ein telefon som sluttar å fornye, mistar innkomande samtalar medan tunnelen framleis ser sunn ut. Følg med på utløpet til kontakten i staden for statusen til tunnelen.

Når softphonen sit bak tunnelen, kan kontakt-headeren bere ei privat adresse. Ein PBX som videresender henne til eit anna endepunkt, lagar ein dialog retta mot eit nettverk den oppringde ikkje kan nå. Å setje rewrite_contact=yes på PJSIP-endepunktet får PBX-en til å erstatte kjeldeadressa han observerte, og det er ofte skilnaden på ein ringjetone og ein timeout.

Kva INVITE tilbyr, og kven som kan bruke det

Ein INVITE med SDP-body føreslår kvar den som ringjer vil ta imot medium: ei adresse, ein port og ei kodekliste. Den oppringde svarar med si eiga adresse og sin eigen port, og deretter sender kvar side RTP til det den andre føreslo. Viss den som ringjer føreslo ei 192.168.x.x-adresse som berre finst på heimenettet, har den oppringde ingen stad å sende lyd, same kor rein signaleringa var. Maskering skriv om IP-headarar når pakkar forlèt ein ruter, men ho skriv aldri om teksten inne i ein SDP-body.

Dette gapet forklarar den klassiske einvegssamtalen: signaleringa verkar fordi båe endepunkta når PBX-en, og lyden feilar fordi det eine endepunktet vart bedt om å sende til ei adresse som berre finst bak ein annan 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

Kven som ber lyden, er eit konfigurasjonsval

Signalering og medium er skilde roller. Ein proxy kan bli på signaleringsvegen gjennom ein heil samtale og aldri røre ein einaste RTP-pakke. Om PBX-en vert ein medierelay, kjem an på konfigurasjonen, ikkje på om det finst ein tunnel.

Med direkte medium byter endepunkta RTP sjølve, noko som fungerer godt på eitt LAN og dårleg når den eine sida sit bak eit smalt portområde.

Å setje direct_media=no tvingar PBX-en inn på medievegen slik at båe beina terminerer på ei adresse han kontrollerer, og byter bandbreidd og CPU mot føreseieleg adressering. Når han relayer, må PBX-en framleis annonsere ei nåbar adresse. På ein multi-homed vert avgjer external_media_address og external_signaling_address i pjsip.conf kva som vert vist i SDP og i Via-headarar. Let du dei stå usette, kan PBX-en tilby LAN-adressa si til ein som ringjer og har den fjerne sida av tunnelen som einaste rute.

Følg kvar retning før du rører innstillingar

Start med socket-tabellen på PBX-en medan ein samtale er aktiv: ss -uanp | grep -E '5060|10000' viser om RTP-portar er bundne og kva lokal adresse dei brukar. Viss ingenting er bunde i medieområdet, er relayen ikkje aktivert, og endepunkta snakkar direkte. Ta deretter opptak på softphone-sida med tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap. Utgåande pakkar utan innkomande pakkar snevrar problemet inn til returvegen eller til adressa den fjerne sida vart bedd om å bruke, og eit tomt opptak tyder på at medium aldri nådde tunnelgrensesnittet. Eit signaleringsopptak med sngrep svarar på den andre halvdelen ved å vise SDP-forbindingslinja slik ho vart send.

Samanlikn adressa i den forbindingslinja med adressa den fjerne sida faktisk kan rute til. Den eine samanlikninga løyser dei fleste einvegslyd-rapportar raskare enn nokon konfigurasjonsgjennomgang.

Kryptering stoppar ved tunnelkanten

SIP over TLS vernar signaleringshoppet det er konfigurert for, SRTP vernar medium når båe endar forhandlar om det, og tunnelen vernar trafikk mellom sine eigne endepunkt. Ingen av dei gir dei andre. Ein samtale som er kryptert inne i tunnelen, kan forlate gatewayen i klartekst mot PBX-en, og det er eit designval, ikkje ein feil.

Før du lukkar saka, stadfest tre ting i rekkefølgje: registreringa er fersk, SDP-en ber ei adresse den fjerne sida kan nå, og pakkar flyt båe vegar på medieportane. Viss noko av dette er usant, er ikkje tunnelen der problemet bur. Rett vegen som feila, og køyr deretter det same opptaket på nytt for å stadfeste endringa. Lagrar du opptaka frå før og etter, vert den neste einvegsrapporten ein femminutts sjekk i staden for ein heil ettermiddag.

Relaterte artiklar