ولې یو SIP زنګ له VPN له لارې ثبتېږي خو غږ نه لیږي
ثبت او غږ بېل مسیرونه اخلي. یو زنګ د تونل له لارې تعقیب کړئ ترڅو وګورئ PBX کوم پته کارولی شي او RTP واقعاً چېرته ودروي.
بریالی ثبت د غږ په اړه نږدې هیڅ نه وایي۔ یو سافټفون کولی شي ساعتونه د دفتر 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 شاته شته پتې ته ولیږي۔
| 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 |
غږ څوک وړي دا د تنظیماتو انتخاب دی
سیګنال او رسنۍ جلا رولونه دي۔ پروکسي کولی شي ټول زنګ د سیګنال په مسیر کې پاتې شي او یو هم 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 د نښلولو کرښه لکه څنګه چې لیږل شوې وه ښیي۔
د هغې نښلولو کرښې پته د هغې پتې سره پرتله کړئ چې لرې لوری واقعاً ورته مسیر کولی شي۔ همدا یوه پرتله ډېری یو لوري غږ راپورونه له هر تنظیماتي بیاکتنې څخه ګړندي حل کوي۔
کوډ کول د تونل په څنډه ودرېږي
SIP د TLS له لارې هغه سیګنال ټوپ خوندي کوي چې د هغه لپاره تنظیم شوی، SRTP رسنۍ خوندي کوي کله چې دواړه پایونه پرې موافق شي، او تونل د خپلو پای ټکو ترمنځ ترافیک خوندي کوي۔ له دې هیڅ یو بل ته نه ورکوي۔ د تونل دننه کوډ شوی زنګ کولی شي ګېټوې پریږدي او PBX ته په روښانه متن کې ولاړ شي، او دا د ډیزاین پریکړه ده نه نیمګړتیا۔
د ټیکټ د بندولو دمخه درې شیان په ترتیب سره تایید کړئ: ثبت تازه دی، SDP داسې پته لري چې لرې لوری ورته رسېدلی شي، او پیکټونه د رسنیو پورټونو کې دواړه لوري ته بهېږي۔ که له دې یو هم غلط وي، ستونزه په تونل کې نه ده۔ هغه مسیر سم کړئ چې ناکام شو، بیا د بدلون د تایید لپاره همغه کپچر بیا وچلوئ۔ د مخکې او وروسته کپچرونو ساتل بل یو لوري راپور د یوې بشپړې ماسپښین پرځای پنځه دقیقې کتنه جوړوي۔