اشکال‌زدایی بی‌سیم را فعال کردید، یک لپ‌تاپ متصل کردید و نشست در حالی که VPN روشن بود به کار ادامه داد. به نظر می‌رسد چیزی از کنار تونل رد شده است. تقریباً قطعاً این‌طور نیست. نشست اشکال‌زدایی و درخواست یک برنامه به یک وب‌سایت دو رابطه شبکه‌ای متفاوت‌اند و فقط یکی از آن‌ها باید از تونل عبور کند.

این بدخوانی را دو بار دیده‌ام: یک بار وقتی تلفن و لپ‌تاپ روی یک Wi-Fi بودند و یک بار پس از راه‌اندازی مجدد که جفت‌سازی دوام آورد. در هر دو مورد VPN دقیقاً همان کاری را می‌کرد که برایش پیکربندی شده بود.

پیش از نام‌گذاری باگ، مشاهده را نام‌گذاری کنید

سه رویداد می‌توانند پیش از ادعای نشت رخ دهند و جایگزین یکدیگر نیستند. یک ابزار می‌تواند سرویسی را کشف کند، دستگاه می‌تواند یک ایستگاه کاری را تأیید کند، یا یک نشست مجاز واقعاً فرمان‌ها و بایت‌ها را حمل کند. بنویسید کدام را دیدید، زیرا هر کدام کمتر از آنچه مردم فرض می‌کنند اثبات می‌کند.

کشف معمولاً mDNS یا اسکن پورت است. جفت‌سازی یک تصمیم ثبت‌نام است که روی تلفن گرفته می‌شود و با کدی که کاربر تایپ می‌کند تأیید می‌شود. نشست فعال یعنی ترافیک بین دو نقطه پایانی جفت‌شده جابه‌جا شده است. هیچ‌کدام از این‌ها توصیف نمی‌کند که درخواست HTTPS یک برنامه کجا می‌رود.

مقصد، رابط، خانواده آدرس، برچسب زمان و نمایه کاربر را به رویداد پیوست کنید. بدون این جزئیات، مشاهده را نمی‌توان با سیاست موردنظر شبکه محلی یا با نسخه VPN که آن زمان اجرا می‌شد مقایسه کرد.

چرا دو مسیر هرگز به هم نمی‌رسند

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

ترافیک اینترنت یک برنامه از طریق رابط تونلی که VpnService نصب می‌کند خارج می‌شود و بر اساس UID و قواعد مسیریابی تطبیق می‌یابد. adbd یک دیمن سیستمی است که به‌عنوان کاربر shell اجرا می‌شود، نه برنامه‌ای درون آن مجموعه مسیریابی. حتی وقتی هر برنامه به تونل سنجاق شده، روی پیوند زیرین Wi-Fi می‌ماند.

حالت قفل تونل را برای برنامه‌های پوشش‌داده‌شده اعمال می‌کند. سوکت گوش‌دهنده را به مسیر خروج تبدیل نمی‌کند.

به همین دلیل یک نشست ADB عامل و یک کلید قطع عامل بدون تناقض همزیستی دارند. برای اثبات نشت، باید جهتی را که باید مسدود شود مشاهده کنید.

یک آزمون خروج واقعاً چه شکلی است

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

  1. تأیید کنید VPN تنها مسیر است: VPN همیشه روشن را با مسدودسازی اتصال‌های بدون VPN روشن کنید.
  2. VPN را به روش پشتیبانی‌شده متوقف کنید و تأیید کنید برنامه نبود اتصال را گزارش می‌کند.
  3. یک درخواست بی‌ضرر از آن برنامه بفرستید و توجه کنید که شکست می‌خورد یا موفق می‌شود.
  4. با اشکال‌زدایی بی‌سیم روشن و سپس خاموش تکرار کنید تا متغیر جدا شود.

یک درخواست مسدود در آن شرایط شاهد است. یک نشست ADB موفق نیست، و یک ping از یک برنامه ترمینال هم نیست.

اگر درخواست در حالی که قفل روشن است موفق شد، UID برنامه و مجوز VPN آن، شبکه فعال و نسخه کلاینت را ثبت کنید. این ترکیب یک یافته واقعی است.

جفت‌سازی از نشست بیشتر می‌ماند

جفت‌سازی یک وضعیت پایدار است، نه دست‌دادنی که پس از آزمایش کابل فراموشش کنید. مستندات اشکال‌زدایی Android جریان کار بی‌سیم را توصیف می‌کند و یادآور می‌شود که رابطه تا زمانی که صریحاً فراموش شود یا مجوزها لغو شوند باقی می‌ماند.

پیش از سرزنش تونل بررسی کنید چه چیزی هنوز مجاز است. اشکال‌زدایی بی‌سیم را باز کنید، به دستگاه‌های جفت‌شده نگاه کنید و هر چیزی را که دیگر نمی‌شناسید فراموش کنید. adb devices را از ایستگاه کاری اجرا کنید تا ببینید کدام ورودی‌ها هنوز پاسخ می‌دهند، و adb disconnect برای حذف یک ورودی کهنه. خاموش کردن اشکال‌زدایی بی‌سیم پورت گوش‌دهنده را کاملاً می‌بندد.

در یک شبکه مشترک یا غیرقابل‌اعتماد، آن را خاموش بگذارید. یک مجوز پایدار روی شبکه‌ای که کنترلش نمی‌کنید مشکلی بزرگ‌تر از یک دورزدن فرضی TUN است.

پیش از ثبت آن باگ

یک گزارش سودمند مرز دقیقی را که شکست خورده نام می‌برد. مدل دستگاه و نسخه Android، کلاینت VPN و نسخه، اینکه حالت قفل روشن بوده یا نه، بسته برنامه و UID، و شبکه‌ای که تلفن روی آن بود را ذکر کنید. فرمان یا درخواستی که مشاهده را تولید کرد و زمان وقوع آن را هم اضافه کنید. بدون این‌ها هیچ‌کس نمی‌تواند مرزی را که می‌گویید شکسته است بازتولید کند.

برای اینکه آزمایش نمایشی‌تر شود، اجرای اجباری را غیرفعال نکنید و اشکال‌زدایی را روی شبکه غیرقابل‌اعتماد افشا نکنید. این کار سیستمی را که اندازه می‌گیرید تغییر می‌دهد و شواهدی برجای می‌گذارد که هیچ‌کس نمی‌تواند تکرار کند.

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

مقالات مرتبط