قاعده فایروال اندروید وقتی VPN روشن است کجا باید زندگی کند
فقط یک VpnService میتواند فعال باشد، پس برنامه فایروال و برنامه VPN روی هم سوار نمیشوند. یک درخواست کاری را دنبال کنید و هر قاعده را جایی بگذارید که ترافیکش واقعاً میگذرد.
شما یک جمله سیاست دارید: این برنامه میتواند به سرویس کاری برسد و به هیچ چیز دیگری نه. پرسش بعدی شبیه انتخاب محصول است، اما پرسش مکان است، چون هر نقطه اجرای ممکن بخش متفاوتی از ترافیک گوشی را میبیند. دروازه فقط آنچه را وارد تونل میشود میبیند. فیلتر سمت گوشی فقط آنچه را اجازه دارد مشاهده کند میبیند. عبور یک درخواست از هر دو، پاسخ را روشن میکند.
از جمله شروع کنید، نه از محصول
پیش از انتخاب هر چیزی، نیاز را باز کنید. یعنی بسته و نمایهای که در آن اجرا میشود، چون برنامه در نمایه کاری کاربری متفاوت از همان برنامه در نمایه شخصی است. یعنی مقصد: میزبان، درگاه و پروتکل، نه نام سرویس. یعنی مسیر DNS که آن نام را resolve میکند، و یعنی اینکه وقتی تونل در دسترس نیست چه باید بشود.
در نوشتار، سیاست این مثال چهار خط است: برنامه کاری میتواند به سرویس کاری برسد؛ نمیتواند به هیچ جای دیگری برسد؛ برنامههای دیگر بیتغییر میمانند؛ بدون تونل، برنامه کاری رد میشود نه اینکه به مسیر مستقیم بیفتد. هر خط یک مالک دارد و همه یک مالک نیستند.
گام 1: گوشی خودش چه چیزی را میتواند اجرا کند
فایروال اندروید بدون root یک VpnService است که ترافیک را بهصورت محلی میگیرد، حتی وقتی هیچ تونل دوری پشت آن نیست. اندروید به هر نمایه کاربر یک سرویس VPN فعال اجازه میدهد، پس برنامه فایروال دوم پشت اولی زنجیر نمیشود. جای آن را میگیرد و رابطی که برنامه اول فیلتر میکرد از میان میرود.
به همین دلیل نصب فایروال در کنار کلاینت VPN بهندرت ترکیبی را میسازد که مردم انتظار دارند. اگر فایروال شروع شود و VPN قطع شود، چیزی ترکیب نشده است؛ آن دو جای هم را عوض کردهاند. جایگزینی رابط همکاری نیست، و نشانه آن تونلی است که هر بار برنامه دیگر باز میشود پیاپی میافتد.
ترتیبهای پشتیبانیشده وجود دارند: فیلتر کردن تعبیهشده در کلاینت VPN که همین حالا اجرا میکنید، کنترلهای مدیریتشده پلتفرم از طریق کنترلکننده سیاست دستگاه یا نمایه کاری، یا معماریای که سازنده مستند کرده است. هر چیز دیگری آزمایشی است که باید پس از هر بهروزرسانی برنامه دوباره بررسی شود.
گام 2: دروازه چه چیزی را میتواند اجرا کند
وقتی ترافیک در انتهای دور رمزگشایی شد، دروازه میتواند بستههای ارسالی را به نشانیها، سرویسها یا هویتهای احرازشده VPN تأییدشده محدود کند. این اجرای واقعی برای هر چیزی است که از آن بیرون میرود، و جای درست برای محدود کردن دسترسی به زیرشبکههای خصوصی است.
چیزی که دریافت نمیکند هویت برنامه گوشی است که به هر بسته معمولی IP چسبیده. چند برنامه که یک نشانی تونل را شریکاند برای دروازه یک سوژهاند، مگر اینکه طراحی به آنها نشانیهای جدا یا هویتهای احرازشده جدا بدهد. پس قاعده بهازای کاربر در دروازه، قاعده بهازای برنامه در گوشی نیست، هر چه کنسول مدیریت آن را بنامد.
گام 3: آنچه هرگز نمیرسد را فهرست کنید
برنامهای که از VPN کنار گذاشته شده و با دستگاهی نزدیک تماس میگیرد هرگز به دروازه نمیرسد، پس فایروال خروج نمیتواند بستهای را رد کند که هرگز دریافت نمیکند. همین برای مسیر مستقیم ناخواسته در هنگام قطعی و برای در معرض قرار گرفتن ورودی در شبکه دسترسی محلی صادق است. اینها به تعریف مرزهای محلیاند.
عکس آن هم درست است: قاعده محلی که اتصال را مجاز میکند، دسترسی از طریق ACL شبکه خصوصی دروازه نمیدهد. یک درخواست میتواند تابع هر دو مرز باشد و برآوردن یکی چیزی درباره دیگری نمیگوید.
گام 4: هر قاعده را به یک مسیر نسبت دهید
پیش از پیکربندی هر چیزی، تصمیم را در جدول بگذارید، چون خانههای خالی جایی است که طراحیها شکست میخورند.
| مسیر | چه کسی میتواند آن را اجرا کند | نقطه کور |
|---|---|---|
| برنامه کاری به سرویس کاری، تونل برپا | ACL دروازه بر پایه نشانی و سرویس، بههمراه مسدودسازی محلی مسیرهای دیگر | دروازه نمیبیند کدام برنامه بسته را فرستاده |
| برنامه کاری به مقصدهای دیگر، تونل برپا | فیلتر محلی آگاه به برنامهها، یا دروازه اگر آن مقصدها همانجا نشانی دارند | فیلتر محلی باید همان VpnService فعال باشد |
| برنامه کاری بدون تونل | رد محلی، تا برنامه نتواند مسیر مستقیم بگیرد | نیازمند آن است که فیلتر نبود تونل را تحمل کند |
| دستگاه LAN نزدیک | فقط سیاست محلی | دروازه هرگز آن را نمیبیند |
شکل کارآمد دو مرز با دو وظیفه است. مرز محلی آگاه به برنامهها رفتار گوشی را میگرداند، از جمله افتادن مستقیم، و مرز دروازه منابع دور را میگرداند. سمت دروازه میتواند سرویس کاری را مجاز کند و هر زیرشبکه خصوصی دیگر را رد کند، در حالی که سیاست سمت گوشی خودش درباره مسیر مستقیمی که برنامه میتوانست بگیرد تصمیم میگیرد.
گام 5: انتقال را زنده نگه دارید، سپس بررسی کنید
هر سیاست محلی که انتخاب کنید باید انتقالی را مجاز کند که VPN را برپا و نگه میدارد. مسدود کردن آن انتقال، گوشی را بیتونل و بیسیاست میگذارد، که هیچ چیز را منسجم اجرا نمیکند و تشخیص آن سخت است، چون برنامه بهسادگی شبکه ندارد.
سپس هر خط از جمله اصلی را بررسی کنید نه برداشت کلی را: برنامه کاری به سرویس کاری میرسد، همان برنامه در مقصد دیگری رد میشود، برنامهای که کاری نیست مانند پیش رفتار میکند، و با توقف تونل برنامه کاری به اتصال مستقیم نمیافتد. مسیر DNS را جدا بررسی کنید، چون DNS خصوصی یا resolver رمزنگاریشده میتواند از فیلتری بگذرد که فقط نشانیها را بررسی میکند.
اگر یکی از این گامها در گوشی برآورده نشود، نیاز یک پرسش معماری است نه یک تنظیم فایروال. تقسیم سیاست میان دستگاهی که در اختیار دارید و دروازهای که در اختیار دارید معمولاً پاسخ صادقانه است، و مستندات اتصال VPN اندروید جایی است که تأیید میکنید پلتفرم به یک سرویس چه چیزی را اجازه میدهد و چه چیزی را نه.