وقتی یک صفحه آزمون WebRTC نشانی 172.20.4.15 را چاپ می‌کند، فهمیده است که در آن شبکه یک رابط محلی وجود دارد. این یک افشای واقعی است و همان یافتهٔ «رسانه از خروجی VPN خارج شد» نیست. کشف کاندید و مسیریابی بسته دو سازوکار جداگانه‌اند و بیشتر گزارش‌های نشت آنها را در یک حکم یکی می‌کنند. اینکه کدام‌یک را می‌بینید، راه‌حل را تعیین می‌کند.

گردآوری پیش از فرستادن هر چیزی انجام می‌شود

مرورگر رابط‌های محلی را برمی‌شمرد، درخواست اتصال به یک سرور STUN می‌فرستد و از یک سرور TURN تخصیص می‌خواهد، سپس نتایج را به‌صورت خطوط کاندید در توصیف نشست می‌نویسد. همهٔ این مراحل بدون تماس، بدون رسانه و بدون طرف مقابل کامل می‌شود. پس فهرست کاندیدها سندی از کشف است، نه از انتقال.

مرورگرهای مدرن ممکن است نشانی تحت‌اللفظی کاندید میزبان را با نام mDNS .local جایگزین کنند تا صفحه نتواند IP خصوصی را بخواند. شبکهٔ محلی همچنان پرس‌وجوهای چندپخشی را که آن نام را حل می‌کنند می‌بیند، یعنی نشانی از برنامه پنهان می‌شود نه اینکه از بستر شبکه حذف شود.

ترتیب هم مهم است: بارگذاری تازهٔ صفحه مجموعهٔ جدیدی گرد می‌آورد، با تخصیص TURN متفاوت و شاید نگاشت بازتابی متفاوت. دو اجرای ناهمسان لزوماً دو پیکربندی متفاوت نیستند.

سه نوع کاندید، سه گونه شاهد

هر خط از مشاهدهٔ متفاوتی می‌آید. هر نوع به پرسشی متفاوت پاسخ می‌دهد و جدول آنها را بر پایهٔ آنچه می‌توانند و نمی‌توانند اثبات کنند جدا می‌کند.

CandidateDerived fromWhat it establishesWhat it cannot establish
HostAn interface on the deviceA local address exists in that networkThat the peer can reach it
Server-reflexiveA STUN binding responseHow a NAT mapped this sourceWhich exit the media will use
Peer-reflexiveA connectivity check that arrivedAn address seen by the far sideThat it was ever advertised
RelayA TURN allocationThe relay server accepted the sessionThat the relay carries the call

کاندید رله به‌طور معمول با نشانی اینترنت کاربر اشتباه گرفته می‌شود. آن به سرور TURN تعلق دارد و حضورش نشان می‌دهد رله‌ای در دسترس بوده، نه اینکه مرورگر آن را برگزیده است. همین اشتباه در مورد کاندیدهای میزبان برعکس عمل می‌کند: نام mDNS نشانی را از صفحه پنهان می‌کند در حالی که شبکه همچنان پرس‌وجوها را حمل می‌کند. پیش از خواندن مقدار، نوع را بخوانید.

جفت انتخاب‌شده به پرسش مسیریابی پاسخ می‌دهد

ICE هر کاندید محلی را با هر کاندید دوردست جفت می‌کند، روی هر جفت بررسی اتصال انجام می‌دهد و برنده‌ای را نامزد می‌کند. همان جفت نامزدشده که در عیب‌یابی خود مرورگر دیده می‌شود، رسانه را حمل می‌کند. هر چیز دیگری در فهرست احتمالی است که شکست خورده است.

برنده شکل مسیر را به شما می‌گوید. رله به رله از سرور TURN می‌گذرد، جفت میزبان در شبکهٔ محلی می‌ماند و جفت بازتابی از سرور مستقیم از NAT می‌گذرد. این همان واقعیتی است که بررسی VPN به آن نیاز دارد و با فهرست نشانی‌ها واقعیتی متفاوت است. دو تماس با فهرست‌های کاندید یکسان می‌توانند جفت‌های متفاوت بگیرند.

کاندیدهای انتخاب‌نشده هم گردآوری شدند و گردآوری ترافیک شبکه‌ای است که دستگاه را ترک می‌کند. تماسی که در نهایت از رله استفاده کرد به این معنا نیست که هنگام ساخت فهرست چیزی افشا نشد.

کنترل‌ها با هدف‌ها هم‌خوان‌اند، نه با امتیاز نشت

مشخصات WebRTC برای مدیریت IP چندین سیاست را توصیف می‌کند: استفاده تنها از رابطی که مسیر پیش‌فرض را حمل می‌کند، استفاده از همهٔ رابط‌ها، و غیرفعال‌کردن UDP بدون پروکسی تا ترافیک ناچار از رله یا پروکسی بگذرد. هر یک اتصال و تأخیر را با گونهٔ متفاوتی از قرار گرفتن در معرض معاوضه می‌کند. اینکه مرورگر کدام را و با چه نامی پیاده‌سازی می‌کند به سکو و نسخه بستگی دارد.

سیاست را بر پایهٔ هدف برگزینید. پنهان‌کردن نشانی‌های محلی از صفحه یک هدف است؛ جلوگیری از ترافیک مستقیم همتا به همتا هدفی دیگر؛ نگه‌داشتن هر بسته درون تونل هدف سوم. اولی بیشتر دربارهٔ چیزی است که برنامه می‌آموزد، دومی دربارهٔ اینکه کدام مسیر مجاز است، و سومی باید در مرز سکو یا VPN هم اعمال شود.

هر کنترلی که برمی‌گزینید، هر دو نیمه را بررسی کنید: آزمون گردآوری را اجرا کنید و نوع کاندیدها را ثبت کنید، سپس جفت انتخاب‌شده را در یک نشست واقعی بررسی کنید. فهرست نشانی پاک با مسیر رسانهٔ مستقیم هنوز مسیری است که قصد آن را نداشتید.

مقالات مرتبط