Успешна регистрација готово ништа не говори о звуку. Софтверски телефон може сатима да одржава важећу везу са канцеларијским PBX-ом и ипак да преноси тишину. Тунел преноси само оне пакете које неко намерно шаље у њега, а позив користи три одвојена пута: повезивање, успостављање дијалога и RTP ток. Када их раздвојите, квар пада на један пут уместо на реч VPN.

Замислите преносни рачунар на кућном Wi-Fi-ју који бира канцеларијски локални број кроз одобрени тунел. PBX аутентификује корисника, прихвата REGISTER, и локални број се приказује као доступан, али позив се повезује са потпуном тишином у једном смеру.

Регистрација везује контакт, а не медијски пут

Захтев REGISTER тражи од регистрара да сачува мапирање између адресе записа и једног или више контактних URI-ја. То мапирање одговара на уско питање: где нови дијалог треба сада да се пошаље. Оно не говори ништа о томе где припадају медији, а прихваћена регистрација не доказује да каснији INVITE носи достижну медијску адресу. Регистрације такође истичу по тајмеру, па телефон који престане да се освежава губи долазне позиве док његов тунел још изгледа здраво. Пратите истек контакта, а не стање тунела.

Када софтверски телефон стоји иза тунела, заглавље контакта може да носи приватну адресу. PBX који га прослеђује другој крајњој тачки ствара дијалог усмерен ка мрежи до које позвани не може да стигне. Постављање rewrite_contact=yes на PJSIP крајњој тачки тера PBX да замени примећену изворну адресу, и то је често разлика између звона и истека времена.

Шта INVITE нуди и ко може да га користи

INVITE са SDP телом предлаже где позивалац жели да прима медије: адресу, порт и листу кодека. Позвани одговара својом адресом и портом, а затим свака страна шаље RTP ономе што је друга предложила. Ако је позивалац предложио адресу 192.168.x.x која постоји само у његовој кућној мрежи, позвани нема где да пошаље звук, колико год је сигнализација била чиста. Маскирање преписује IP заглавља када пакети напуштају рутер, али никада не преписује текст унутар SDP тела.

Овај јаз објашњава класичан једносмерни позив: сигнализација ради јер обе крајње тачке стижу до PBX-а, а звук не успева јер је једној крајњој тачки речено да шаље на адресу која постоји само иза другог 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

Ко носи звук је избор конфигурације

Сигнализација и медији су одвојене улоге. Прокси може да остане на путу сигнализације цео позив и никада не дотакне ниједан RTP пакет. Да ли PBX постаје медијски релеј зависи од конфигурације, а не од присуства тунела.

Са директним медијима крајње тачке саме размењују RTP, што добро ради у једној LAN мрежи, а лоше када једна страна стоји иза уског опсега портова.

Постављање direct_media=no гура PBX на медијски пут тако да обе ноге завршавају на адреси коју он контролише, размењујући пропусни опсег и процесор за предвидиво адресирање. Када релејира, PBX ипак мора да објави достижну адресу. На хосту са више мрежа, external_media_address и external_signaling_address у pjsip.conf одређују шта се појављује у SDP-у и у Via заглављима. Ако их оставите неподешене, PBX може да понуди своју LAN адресу позиваоцу чији је једини пут далека страна тунела.

Пратите сваки смер пре него што дотакнете подешавања

Почните од табеле сокета на PBX-у док је позив активан: ss -uanp | grep -E '5060|10000' показује да ли су RTP портови повезани и коју локалну адресу користе. Ако ништа није повезано у медијском опсегу, релеј није укључен и крајње тачке разговарају директно. Затим снимите на страни софтверског телефона помоћу tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap. Одлазни пакети без долазних сужавају проблем на повратни пут или на адресу коју је далека страна добила да користи, а празан снимак значи да медији никада нису стигли до интерфејса тунела. Снимак сигнализације помоћу sngrep одговара на другу половину показујући SDP линију везе онако како је послата.

Упоредите адресу у тој линији везе са адресом до које далека страна заиста може да усмерава. То једно поређење решава већину извештаја о једносмерном звуку брже од било ког прегледа конфигурације.

Шифровање се зауставља на ивици тунела

SIP преко TLS-а штити скок сигнализације за који је конфигурисан, SRTP штити медије када се обе стране договоре, а тунел штити саобраћај између сопствених крајњих тачака. Ниједно од тога не даје остала. Позив шифрован унутар тунела може да напусти пролаз у чистом тексту ка PBX-у, и то је пројектна одлука, не дефект.

Пре затварања тикета потврдите три ствари по реду: регистрација је свежа, SDP носи адресу до које далека страна може да стигне, и пакети теку у оба смера на медијским портовима. Ако је било шта од тога нетачно, тунел није место проблема. Поправите пут који је отказао, па поново покрените исти снимак да потврдите промену. Чување снимака пре и после чини следећи извештај о једносмерном звуку петоминутном провером уместо целог поподнева.

Повезани чланци