Амжилттай бүртгэл дууны тухай бараг юу ч хэлдэггүй. Программ телефон оффисын PBX-тэй хэдэн цагийн турш хүчинтэй холбоо барьж, гэсэн хэдий ч чимээгүй байдлыг дамжуулж чадна. Туннель нь хэн нэгэн санаатайгаар илгээсэн пакетуудыг л зөөдөг бөгөөд дуудлага гурван тусдаа замыг ашигладаг: холбоо, харилцан яриа тогтоох, RTP урсгал. Эдгээрийг салгахад алдаа нь VPN гэдэг үгэн дээр биш, нэг зам дээр буудаг.

Гэрийн Wi-Fi-д байгаа зөөврийн компьютер зөвшөөрөгдсөн туннелээр оффисын дотоод дугаарыг залгаж байна гэж төсөөлөөд үзээрэй. PBX хэрэглэгчийг баталгаажуулж, REGISTER-ийг хүлээн авч, дотоод дугаар боломжтой гэж харагдана, гэхдээ дуудлага нэг чиглэлд бүрэн чимээгүйгээр холбогддог.

Бүртгэл нь харилцагчийг холбодог, медиа замыг биш

REGISTER хүсэлт нь бүртгэгчээс бичлэгийн хаяг болон нэг буюу хэд хэдэн харилцагчийн URI-н хоорондын тохирлыг хадгалахыг хүсдэг. Энэ тохирол нь шинэ харилцан яриаг яг одоо хаана илгээх вэ гэсэн нарийн асуултад хариулдаг. Энэ нь медиа хаана хамаарах тухай юу ч хэлдэггүй бөгөөд хүлээн авсан бүртгэл нь дараагийн INVITE хүрч болох медиа хаягийг агуулж байгааг батлахгүй. Бүртгэлүүд таймераар дуусдаг тул шинэчлэхээ больсон телефон туннель нь эрүүл харагдаж байхад нь ирж буй дуудлагыг алддаг. Туннелийн төлөв биш, харилцагчийн хугацаа дуусахыг ажиглаарай.

Программ телефон туннелийн ард байх үед харилцагчийн толгой хувийн хаяг агуулж болно. Үүнийг өөр төгсгөлийн цэг рүү дамжуулдаг PBX нь дуудагдсан тал хүрч чадахгүй сүлжээ рүү чиглэсэн харилцан яриа үүсгэдэг. PJSIP төгсгөлийн цэг дээр rewrite_contact=yes тохируулбал PBX өөрийн ажигласан эх хаягийг орлуулдаг бөгөөд энэ нь ихэвчлэн дуут дохио болон хугацаа дуусахын хоорондын ялгаа юм.

INVITE юу санал болгодог, хэн ашиглаж болох вэ

SDP биетэй INVITE нь дуудлагыг хийж буй хүн медиаг хаана хүлээн авахыг хүсэж байгааг санал болгодог: хаяг, порт, кодекийн жагсаалт. Дуудагдсан тал өөрийн хаяг, портоор хариулж, дараа нь тал бүр нөгөөгийн санал болгосон газар руу 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 хүрч болох хаягийг зарлах ёстой хэвээр. Олон сүлжээт хост дээр pjsip.conf доторх external_media_address болон external_signaling_address нь 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 холболтын мөрийг илгээсэн хэвээр харуулж нөгөө хагаст хариулна.

Тухайн холболтын мөр дэх хаягийг алслагдсан тал үнэхээр чиглүүлж чадах хаягтай харьцуул. Энэ нэг харьцуулалт нь нэг чиглэлийн дууны ихэнх тайланг аливаа тохиргооны хяналтаас илүү хурдан шийддэг.

Шифрлэлт туннелийн ирмэг дээр зогсдог

TLS дээрх SIP нь тохируулсан сигналын үсрэлтийг хамгаалж, SRTP нь хоёр тал тохиролцсон үед медиаг хамгаалж, туннель нь өөрийн төгсгөлийн цэгүүдийн хоорондын урсгалыг хамгаална. Эдгээрийн аль нь ч бусдыг нь өгдөггүй. Туннель дотор шифрлэгдсэн дуудлага гарцаас PBX рүү тодорхой текстээр гарч болох бөгөөд энэ нь алдаа биш, дизайны шийдвэр юм.

Тасалбарыг хаахаас өмнө гурван зүйлийг дарааллаар нь баталгаажуул: бүртгэл шинэ, SDP нь алслагдсан тал хүрч чадах хаягийг агуулж байна, пакетууд медиа портуудад хоёр чиглэлд урсаж байна. Эдгээрийн аль нэг нь худал бол асуудал туннельд биш. Бүтэлгүйтсэн замыг засаж, дараа нь өөрчлөлтийг батлахын тулд мөнөөх бичлэгийг дахин ажиллуул. Өмнөх болон дараах бичлэгүүдийг хадгалах нь дараагийн нэг чиглэлийн тайланг бүтэн үдээс хойш биш таван минутын шалгалт болгоно.

Холбоотой нийтлэлүүд