تونل تقسیمشده: چرا یک پیوند بیرون از VPNی که تنظیم کردهاید باز میشود
مسیریابی از فرآیندی پیروی میکند که سوکت را باز میکند، نه برنامهای که پیوند را به شما نشان داد. پیش از گستردن استثناها ثابت کنید کدام برنامه متصل میشود.
عبور دادن یک برنامه از تونل، مسیریابی آن را به هر چیزی که آن برنامه اجرا میکند منتقل نمیکند، هرچند رابط کاربری خلافش را القا کند. یک پیوند درخواست را به برنامه دیگری میسپارد، آن برنامه سوکت خودش را باز میکند و سکو قواعد را بر فرآیند تازه اعمال میکند، نه بر فرآیندی که متن را نمایش داد. همان فرآیند دوم است که سیاست تونل واقعاً میبیند و آن همان نیست که شما تنظیم کردهاید.
بنابراین برنامهای که در تونل گنجانده شده میتواند مرورگری بیرون از تونل باز کند. مرورگر مستثنا هم میتواند کار را به برنامهای برگرداند که درون آن جای دارد. هر دو جهت این غافلگیری رفتار عادی است.
بخشی از گردش کار که هیچکس تنظیمش نکرد
سیاست هر برنامه در برابر هویت یک فایل اجرایی یا بسته نوشته میشود و هر اتصال در همان لحظهای که ساخته میشود ارزیابی میشود. مرورگر، نمایشگر سند، پخشکننده رسانه و برگه اشتراکگذاری سیستم هر یک هویت خود را دارند و هر یک حکم خود را میگیرند. پیوند عمیق داده حمل میکند، نه سیاست.
به همین دلیل مشاهده خودسرانه به نظر میرسد: همان کلیک بسته به اینکه کدام گرداننده پاسخ دهد به دو راه مسیریابی میشود. کارخواه نامهای که در تونل است پیوند را در مرورگری باز میکند که بیرون از تونل زندگی میکند و صفحه از نشانی خانه شما بار میشود. مرورگری بیرون از تونل سندی را در نمایشگری باز میکند که درون آن زندگی میکند و پرونده از خروجی میرسد. هیچیک از دو نتیجه نقص کارخواه نیست.
گردانندهای که از پیش در حال اجراست وضع را بدتر میکند. اگر مرورگر از قبل باز باشد، پیوند به پیامی برای فرآیند موجود تبدیل میشود و آن فرآیند همان مسیریابی را نگه میدارد که هنگام آغاز داشت. بستن و باز کردن دوباره گرداننده نتیجه را عوض میکند و به همین دلیل مشکل هرگز بهدرخواست تکرار نمیشود.
| Platform | Policy object | What it is evaluated against |
|---|---|---|
| Android | Per-app VPN allowlist | Package name of the process opening the socket |
| Windows | Application traffic filters | Application path in the filter rule |
| Linux | UID or cgroup routing rules | Owner of the socket, which can be a different program |
کدام فرآیند واقعاً اتصال را ساخت
بهجای استدلال درباره طرف گیرنده، آن را اندازه بگیرید. تونل را برپا نگه دارید، روی پیوندی بیخطر کلیک کنید و سوکتهایی را که برنامه تازه در دست دارد ببینید.
ss -tnp state established '( dport = :443 )' Get-NetTCPConnection -State Established | Select-Object RemoteAddress,OwningProcess
فرمان نخست فرآیند پشت هر سوکت برقرار در لینوکس را نام میبرد و دومی همان کار را در ویندوز با حل شناسه فرآیند مالک انجام میدهد. نام فرآیند را با نامهای سیاست خود مقایسه کنید. اگر نام مرورگر است و مرورگر مستثنا شده، کلیک از روی طراحی از تونل بیرون رفته نه بهخاطر نقص. تطبیق یک قاعده سیاست با سوکت زنده تمام روش است.
بررسی را یک بار با گرداننده در حال اجرا و بار دیگر با آن بسته تکرار کنید. دو نتیجه میتوانند متفاوت باشند و همین تفاوت بیشتر گزارشهای گاهبهگاه درباره پیوندهایی را توضیح میدهد که از تونل میگریزند.
پوشش ویژگی گردش کار است
اگر وظیفهای باید از آغاز تا پایان درون تونل بماند، هر مؤلفهای که میتواند به آن برسد باید درون سیاست باشد: راهانداز، گرداننده، نمایشگر و هر واسطهای که سکو میان آنها میگذارد. پوشش گستردهتر بیشتر وقتها پاسخ صادقانه است و از بازرسی هر هدف اشتراک ارزانتر درمیآید.
مستثنا کردن واسطه سیستم برای درست کردن یک برنامه اشتباه رایجی است. واسطهها مشترکاند، پس استثنا به دنبال هر برنامه دیگری میرود که همان مسیر را به کار میبرد، معمولاً بیآنکه کسی تا رسیدن گزارشی هفتهها بعد متوجه شود. پیش از مستثنا کردن مؤلفه بخوانید چه چیز دیگری به آن وابسته است.
هویت را نیز از مسیریابی جدا نگه دارید. پیوند میتواند نشانه نشست یا شناسه حساب را حمل کند، بیتوجه به اینکه کدام خروجی درخواست را میگیرد. کلیکی که درست مسیریابی شده باز هم میتواند دقیقاً به مقصد بگوید چه کسی آن را دنبال کرد.
گردش کار را مستند کنید، نه نخستین کادر انتخاب را. وقتی وظیفهای چهار برنامه را در بر میگیرد، نموداری که چهار برنامه روی آن است همان است که پیشبینی میکند ترافیک کجا میرود و تنظیم تکبرنامهای تنها یک سطر از آن است.