Muvaffaqiyatli ro'yxatga olish ovoz haqida deyarli hech narsa aytmaydi. Dasturiy telefon soatlab ofis PBX bilan haqiqiy bog'lanishni saqlab turishi va baribir sukunat uzatishi mumkin. Tunnel faqat kimdir ataylab ichkariga yuborgan paketlarni tashiydi, qo'ng'iroq esa uchta alohida yo'ldan foydalanadi: bog'lanish, dialog o'rnatish va RTP oqimi. Ularni ajratsangiz, nosozlik VPN so'ziga emas, bitta yo'lga tushadi.

Uy Wi-Fi tarmog'idagi noutbuk tasdiqlangan tunnel orqali ofisning ichki raqamini terayotganini tasavvur qiling. PBX foydalanuvchini autentifikatsiya qiladi, REGISTER ni qabul qiladi va ichki raqam mavjud bo'lib ko'rinadi, lekin qo'ng'iroq bir yo'nalishda to'liq sukunat bilan ulanadi.

Ro'yxatga olish kontaktni bog'laydi, media yo'lini emas

REGISTER so'rovi ro'yxatga oluvchidan yozuv manzili va bir yoki bir nechta kontakt URI o'rtasidagi moslikni saqlashni so'raydi. Bu moslik yangi dialog hozir qayerga yuborilishi kerakligi haqidagi tor savolga javob beradi. U media qayerda joylashishi haqida hech narsa aytmaydi va qabul qilingan ro'yxatga olish keyingi INVITE yetib boriladigan media manzilini olib yurishini isbotlamaydi. Ro'yxatga olishlar taymer bilan ham tugaydi, shuning uchun yangilashni to'xtatgan telefon tunneli hali sog'lom ko'rinib turganda kiruvchi qo'ng'iroqlarni yo'qotadi. Tunnel holatiga emas, kontakt muddatiga e'tibor bering.

Dasturiy telefon tunnel orqasida bo'lganda kontakt sarlavhasi shaxsiy manzilni olib yurishi mumkin. Uni boshqa so'nggi nuqtaga uzatuvchi PBX qo'ng'iroq qilingan tomon yetib bora olmaydigan tarmoqqa yo'naltirilgan dialog yaratadi. PJSIP so'nggi nuqtasida rewrite_contact=yes ni o'rnatish PBX ni kuzatilgan manba manzilini almashtirishga majbur qiladi, va bu ko'pincha jiringlash va vaqt tugashi o'rtasidagi farqdir.

INVITE nima taklif qiladi va kim undan foydalana oladi

SDP tanasi bo'lgan INVITE qo'ng'iroq qiluvchi mediani qayerdan olishni xohlashini taklif qiladi: manzil, port va kodeklar ro'yxati. Qo'ng'iroq qilingan tomon o'z manzili va porti bilan javob beradi, so'ngra har bir tomon ikkinchisi taklif qilgan joyga RTP yuboradi. Agar qo'ng'iroq qiluvchi faqat o'z uy tarmog'ida mavjud bo'lgan 192.168.x.x manzilini taklif qilgan bo'lsa, signalizatsiya qanchalik toza bo'lmasin, qo'ng'iroq qilingan tomonning ovoz yuboradigan joyi yo'q. Maskalash paketlar routerdan chiqayotganda IP sarlavhalarini qayta yozadi, lekin SDP tanasi ichidagi matnni hech qachon qayta yozmaydi.

Aynan shu bo'shliq klassik bir tomonlama qo'ng'iroqni tushuntiradi: signalizatsiya ishlaydi, chunki ikkala so'nggi nuqta ham PBX ga yetib boradi, ovoz esa ishlamaydi, chunki bir so'nggi nuqtaga boshqa NAT orqasida mavjud bo'lgan manzilga yuborish aytilgan.

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

Ovozni kim tashishi konfiguratsiya tanlovidir

Signalizatsiya va media alohida rollardir. Proksi butun qo'ng'iroq davomida signalizatsiya yo'lida qolishi va bitta RTP paketiga ham tegmasligi mumkin. PBX media releysiga aylanishi tunnel mavjudligiga emas, konfiguratsiyaga bog'liq.

To'g'ridan-to'g'ri media bilan so'nggi nuqtalar RTP ni o'zlari almashadi, bu bitta LAN da yaxshi ishlaydi, bir tomon tor port diapazoni orqasida bo'lsa yomon ishlaydi.

direct_media=no ni o'rnatish PBX ni media yo'liga itaradi, shunda ikkala oyoq ham u boshqaradigan manzilda tugaydi, bu esa oldindan aytish mumkin bo'lgan manzillash uchun tarmoqli kenglik va protsessorni almashtiradi. Reley qilganda PBX baribir yetib boriladigan manzilni e'lon qilishi kerak. Ko'p tarmoqli xostda pjsip.conf ichidagi external_media_address va external_signaling_address SDP va Via sarlavhalarida nima ko'rinishini belgilaydi. Ularni o'rnatmasdan qoldirsangiz, PBX o'zining LAN manzilini yagona yo'li tunnelning uzoq tomoni bo'lgan qo'ng'iroq qiluvchiga taklif qilishi mumkin.

Sozlamalarga tegishdan oldin har bir yo'nalishni kuzating

Qo'ng'iroq faol bo'lganda PBX dagi soket jadvalidan boshlang: ss -uanp | grep -E '5060|10000' RTP portlari bog'langanmi va qaysi mahalliy manzildan foydalanishini ko'rsatadi. Media diapazonida hech narsa bog'lanmagan bo'lsa, reley yoqilmagan va so'nggi nuqtalar to'g'ridan-to'g'ri gaplashadi. Keyin dasturiy telefon tomonida tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap bilan yozib oling. Kiruvchi paketlarsiz chiquvchi paketlar muammoni qaytish yo'liga yoki uzoq tomonga foydalanish aytilgan manzilga toraytiradi, bo'sh yozuv esa media tunnel interfeysiga umuman yetmaganini bildiradi. sngrep bilan signalizatsiya yozuvi ikkinchi yarmiga SDP ulanish satrini yuborilgan holida ko'rsatib javob beradi.

O'sha ulanish satridagi manzilni uzoq tomon haqiqatan marshrutlay oladigan manzil bilan solishtiring. Aynan shu bitta taqqoslash bir tomonlama ovoz bo'yicha aksariyat hisobotlarni har qanday konfiguratsiya ko'rigidan tezroq hal qiladi.

Shifrlash tunnel chetida to'xtaydi

TLS ustidagi SIP o'zi uchun sozlangan signalizatsiya sakrashini himoya qiladi, SRTP ikkala tomon kelishganda mediani himoya qiladi, tunnel esa o'z so'nggi nuqtalari orasidagi trafikni himoya qiladi. Ularning hech biri boshqasini bermaydi. Tunnel ichida shifrlangan qo'ng'iroq ham shlyuzdan PBX tomon ochiq matnda chiqishi mumkin, va bu nosozlik emas, dizayn qarori.

Tiketni yopishdan oldin uchta narsani tartib bilan tasdiqlang: ro'yxatga olish yangi, SDP uzoq tomon yeta oladigan manzilni olib yuradi va paketlar media portlarida ikkala yo'nalishda ham oqadi. Ulardan biri yolg'on bo'lsa, muammo tunnelda emas. Muvaffaqiyatsiz bo'lgan yo'lni tuzating, so'ngra o'zgarishni tasdiqlash uchun o'sha yozuvni qayta ishga tushiring. Oldingi va keyingi yozuvlarni saqlash keyingi bir tomonlama hisobotni butun tushdan keyin emas, besh daqiqalik tekshiruvga aylantiradi.

O'xshash maqolalar