تفکیک تونل شمولمحور یا استثنامحور: کدام پیشفرض؟
پیشفرض را پیش از ساختن فهرست انتخاب کنید: فقط آنچه نام میبرید تونل شود، یا همهچیز تونل شود و استثناها بیرون کشیده شوند. سپس برنامهای را آزمایش کنید که هیچکس فهرست نکرده است.
بخش مسیریابی کلاینت VPN خود را باز کنید و دو کنترل با شکلهای متفاوت میبینید که اغلب برچسب یکسانی دارند. یکی از شما میخواهد مقصدهایی را فهرست کنید که باید داخل تونل باشند و بقیه از شبکه محلی استفاده میکنند. دیگری فرض میکند همهچیز داخل تونل است و میپرسد چه چیزی باید بیرون کشیده شود. هر دو در نخستین آزمایش یک تونل کارآمد به شما میدهند و هر دو با افزودن سطر به یک فهرست نگهداری میشوند، و همین است که تفاوت را تا زمانی که کسی چیز تازهای نصب نکند نامرئی نگه میدارد.
این انتخاب یک پیشفرض است، نه یک ویژگی. آن را پیش از آنکه فهرست به بیست ورودی برسد روشن کنید.
پیشفرض را از کلاینت بخوانید، نه از بروشور
WireGuard این تصمیم را بهشکلی غیرمعمول آشکار میکند، چون AllowedIPs یک فهرست شمول است و بس. همتایی با 0.0.0.0/0, ::/0 همهچیز را تونل میکند؛ همتایی با 10.20.0.0/16 تنها همان را تونل میکند. نحو استثنا وجود ندارد، پس اگر میخواهید یک زیرشبکه بیرون بماند، یا هر پیشوند دیگر را میشمارید یا مسیریابی سیاستی بیرون از رابط اضافه میکنید.
OpenVPN از جهت مخالف به همین نقطه میرسد، با redirect-gateway def1 که تونل کامل نصب میکند و دستورهای صریح route که پیشوندهای مشخص را اضافه یا بازنویسی میکنند. کلاینتهای تجاری معمولاً هر دو را پشت یک جعبهامتیاز و یک جدول مقصد پنهان میکنند، پس پیش از اعتماد به برچسب بخوانید جدول در واقع کدامیک را ویرایش میکند.
پرسشی که باید بپرسید این نیست که جعبهامتیاز چه نام دارد. پرسش این است که بستهای که مقصدش در هیچیک از دو فهرست نیست چه سرنوشتی دارد. این را مکتوب پاسخ دهید و باقی پیکربندی از آن پیروی میکند. اگر از پرسش بگذرید، نخستین شکست بیتوضیح را کسی تصمیم میگیرد که آن روز به کلاینت نزدیکتر است.
برنامهای را دنبال کنید که هیچکس فهرست نکرده است
در طراحی شمولمحور، آن برنامه مستقیم و روی شبکه محلی و با DNS محلی میرود. در طراحی استثنامحور از تونل میرود، مشروط به آنچه سرور اجازه میدهد، و این همان تفاوتی است که اغلب میان کارکرد یک ابزار SaaS تازه از روز نخست و تیکتی که میگوید VPN آن را خراب کرد وجود دارد.
هیچیک از این دو پیشفرض بهخودیخود امنتر نیست. شمولمحور دامنه آنچه تونل حمل میکند را تنگ میکند و شبکه محلی را مسیر کماستقامت میسازد؛ استثنامحور تونل را مسیر عادی میداند و استثناها را استثنا میشمارد، که به آنچه بیشتر سیاستهای شرکتی واقعاً در نظر دارند نزدیکتر است.
| Question | Include-only | Exclude-only |
|---|---|---|
| Unlisted new app | goes direct | goes through the tunnel |
| A site that breaks over the VPN | add it to the list | carve it out |
| Internal names still resolve | only if routed and served | usually, until split DNS says otherwise |
| Upkeep | one entry per internal service | one entry per misbehaving public service |
توجه کنید پلتفرم چه نوع شیئی را فهرست میکند
VpnService.Builder در اندروید یک فهرست برنامههای مجاز و یک فهرست برنامههای غیرمجاز را بهعنوان دو مدل جدا ارائه میکند، و قواعد هر برنامه بر پایه بسته تصمیم میگیرند نه مقصد. مرورگری که در چنین فهرستی قرار میگیرد هر مقصدی را که باز میکند با خود میبرد، که دانهبندی متفاوتی از جدول مسیر است و نمیتواند یک سایت خراب را در دل برنامهای سالم درست کند.
کلاینتهای رومیزی معمولاً هر دو نوع را در یک رابط میآمیزند، پس بررسی کنید سطری که اضافه میکنید بسته است، نام میزبان یا پیشوند. اینها به شکلهای متفاوت شکست میخورند و در جاهای متفاوت حل میشوند. سطر نام میزبان معمولاً به یک مسیر بههمراه یک نام تبدیل میشود، در حالی که سطر بسته به تصمیمی سیاستی درون کلاینت تبدیل میشود. بنویسید کدامیک را اضافه کردهاید، چون کسی که بعداً اشکالزدایی میکند فرض را روی دیگری میگذارد.
حالت شکست را آزمایش کنید، نه فقط مسیر سالم را
برنامهای که از تونل مستثنا شده بهطور خودکار دسترسی مستقیم پاک ندارد. اگر کلاینت قاعده مسدودسازی بدون VPN را هم اعمال کند، ترافیک مستثنا ممکن است کاملاً دور ریخته شود، که شبیه برنامهای خراب است نه تصمیمی مسیریابی. آن حالت را عامدانه آزمایش کنید، نه اینکه از گزارش کاربر کشفش کنید.
سپس DNS و IPv6 را بهعنوان دو مورد جدا بررسی کنید. تونلی که تنها IPv4 را حمل میکند برای برنامهای با پشتیبانی v6 راهی دور آن باقی میگذارد، و DNS تفکیکشده تعیین میکند که آیا نامهای داخلی برای ترافیکی که اصلاً تونل نشده حل میشوند. یک برنامه فهرستشده، یک برنامه فهرستنشده، یک جستوجوی نام و یک اتصال دوباره اجرا کنید و نتایج را همراه پیکربندی نگه دارید.
پیشفرض را جایی بنویسید که نفر بعدی پیدایش کند
پیشفرض انتخابشده، استثناها و صاحب آنها را همانجا ثبت کنید که پروفایل کلاینت است، چون مدیر بعدی بدون خواندن این استدلال یک ورودی اضافه میکند. تاریخ و دلیل هر استثنا را یادداشت کنید تا استثنای کهنهای برای سایتی که از آن پس درست شده با اطمینان حذف شود. فهرستی که دلیل ندارد تا ابد رشد میکند.
وقتی کسی یک مقصد خراب را گزارش میکند، استثنا را تغییر دهید نه خط پایه را. برگرداندن پیشفرض برای درست کردن یک سایت، بیصدا هر برنامه فهرستنشده را به آن سوی تونل میبرد.