کیلسوییچ (Kill Switch)
همهٔ ترافیکی را که از Throne عبور نمیکند مسدود کنید، حتی وقتی هیچ نمایهای در حال اجرا نیست، و اگر کیلسوییچ دسترسی شما را قطع کرد، اتصالتان را برگردانید.
از نسخهٔ 1.4.0، Throne یک کیلسوییچ دارد. تا وقتی کیلسوییچ روشن است، رایانهٔ شما فقط از راه Throne میتواند ترافیک بفرستد: از راه حالت TUN، از راه پورت پروکسی محلی، یا بهصورت اتصالهای خود Throne. هر چیز دیگری مسدود میشود، حتی وقتی هیچ نمایهای در حال اجرا نیست. اگر پروکسی متوقف شود یا اتصال قطع شود، برنامهها نمیتوانند به اتصال معمول شما برگردند.
کیلسوییچ چه میکند
کیلسوییچ تا وقتی Throne اجرا میشود کار میکند، چه نمایهای در حال اجرا باشد چه نباشد:
| وضعیت | چه چیزی عبور میکند |
|---|---|
| یک نمایه در حالت TUN اجرا میشود | همهچیز، چون همهٔ ترافیک از آداپتور TUN عبور میکند. |
| یک نمایه فقط با پروکسی سیستمی اجرا میشود | برنامههایی که از پروکسی استفاده میکنند. برنامههایی که آن را نادیده میگیرند مسدود میشوند. |
| هیچ نمایهای اجرا نمیشود | تقریباً هیچ چیز: فقط شبکهٔ محلی و استثناهایی که در پایین آمدهاند. |
خود Throne تحت تأثیر قرار نمیگیرد: هستهٔ آن همیشه میتواند به سرورهای شما برسد و ترافیکی را که قوانین شما به direct میفرستند بفرستد. برای فهرست کامل، آنچه همیشه مجاز است را ببینید.
کیلسوییچ با خروج از Throne پایان مییابد. وقتی Throne کرش کند هم پایان مییابد؛ پس کرش اتصال شما را قطع نمیکند، اما پس از آن هم از شما محافظت نمیکند. حالت TUN را همراه با کیلسوییچ به کار ببرید: در این صورت تا وقتی نمایهای در حال اجراست، همهٔ برنامهها کار میکنند.
روشن کردن کیلسوییچ
تنظیمات(Settings) ←تنظیمات پایه(Basic Settings) ←امنیت(Security) را باز کنید.- تیک
Kill Switchرا بزنید. - روی
تایید(OK) کلیک کنید.
کیلسوییچ به همان دسترسیهایی نیاز دارد که حالت TUN؛ پیشنیازها را ببینید. در Linux و macOS، روشن کردن آن هستهٔ Throne را دوباره راهاندازی میکند و نمایهٔ در حال اجرا را هم همراه با آن. تا وقتی کیلسوییچ در حال شروع است، Throne برای اجرای نمایه صبر میکند.
برای اینکه بررسی کنید کار میکند:
- گزارشها پیام «[Kill switch] On: only traffic through Throne can leave this device.» (کیلسوییچ روشن است: فقط ترافیکی که از Throne عبور میکند میتواند از این دستگاه خارج شود) را نشان میدهند.
- عنوان پنجره و راهنمای ابزار (tooltip) آیکون سینی سیستم
[Kill switch]را نشان میدهند. - دکمهٔ شروع یک قفل کوچک دارد. راهنمای ابزار آن میگوید کیلسوییچ اکنون چه میکند:
| قفل | راهنمای ابزار | معنا |
|---|---|---|
| خاکستری | «Kill switch: starting…» (کیلسوییچ: در حال شروع…) | کیلسوییچ در حال شروع است. |
| سبز | «Kill switch: on — traffic only flows through Throne's Tun» (کیلسوییچ: روشن؛ ترافیک فقط از Tun برنامهٔ Throne عبور میکند) | یک نمایه در حالت TUN اجرا میشود. |
| کهربایی | «Kill switch: Tun is not running, so most traffic is blocked» (کیلسوییچ: Tun اجرا نمیشود، پس بیشتر ترافیک مسدود است) | هیچ نمایهای اجرا نمیشود، یا حالت TUN خاموش است. |
| قرمز | «Kill switch is not active» (کیلسوییچ فعال نیست) یا «Kill switch is blocking traffic» (کیلسوییچ ترافیک را مسدود میکند) | کیلسوییچ مشکلی دارد؛ وقتی نمیتواند کار کند را ببینید. |
این تنظیم ذخیره میشود. کیلسوییچ هر بار که Throne شروع به کار میکند دوباره شروع میشود.
آنچه همیشه مجاز است
- هستهٔ Throne (
ThroneCore): اتصالها به سرورهای شما، ترافیکی که قوانین شما بهdirectمیفرستند، تستهای URL و پرسوجوهای DNS سرورهای DNS خود Throne. برنامههای نمایههای هستهٔ اضافی (Extra Core) هم مجازند. - آداپتور TUN. هر چیزی که وارد آداپتور TUN برنامهٔ Throne میشود.
- Loopback (
127.0.0.1،::1). برنامهها از این راه به پورت پروکسی محلی میرسند. - شبکهٔ محلی، مگر اینکه
Private Range Bypassدرتنظیمات(Settings) ←تنظیمات vpn(Tun Settings) خاموش باشد. این محدودهها محلی به شمار میآیند:10.0.0.0/8،172.16.0.0/12،192.168.0.0/16،169.254.0.0/16،224.0.0.0/4،255.255.255.255،fc00::/7،fe80::/10وff00::/8. تغییراتی که خودتان در فهرستPrivate Range Bypassمیدهید، این فهرست را تغییر نمیدهند. - موارد پایهای شبکه: DHCP و DHCPv6، کشف همسایه و روتر در IPv6 (neighbor and router discovery) و پیامهای گروه multicast (IGMP و MLD). رایانهٔ شما نشانی شبکهٔ خود را نگه میدارد.
- Throne API. وقتی Throne API روی یک نشانی شبکه گوش میدهد، پاسخهایش به کلاینتها عبور میکنند.
حتی وقتی شبکهٔ محلی مجاز است، پرسوجوهای DNS (پورتهای 53 و 853) برنامههای دیگر به نشانیهای محلی مسدود میشوند. یک سرور DNS در روتر شما آنها را بیرون از تونل ارسال میکرد. در Linux، وقتی /etc/resolv.conf چنین سروری را نام میبرد، Throne هشدار میدهد: «the system DNS server … is on the local network and the kill switch blocks DNS to it» (سرور DNS سیستم … در شبکهٔ محلی است و کیلسوییچ DNS به آن را مسدود میکند). در حالت TUN، از systemd-resolved استفاده کنید که Throne آن را به تونل هدایت میکند، یا از یک سرور DNS بیرون از شبکهٔ محلی خود.
هر چیز دیگری مسدود میشود، برای نمونه:
- درخواستهای خود Throne، مانند بهروزرسانی اشتراکها، بررسی بهروزرسانی و ثبت WARP. این درخواستها فقط در حالت TUN کار میکنند، یا وقتی نمایهای با روشن بودن
تنظیمات(Settings) ←تنظیمات پایه(Basic Settings) ←Miscellaneous→Use proxyیاپروکسی سیستمی(System Proxy) اجرا میشود. - ترافیکی که این رایانه برای دستگاهها، کانتینرها یا ماشینهای مجازی دیگر ارسال میکند (forward)، مگر اینکه از آداپتور TUN عبور کند یا در شبکهٔ محلی بماند.
- ترافیک برنامههای VPN دیگر.
در macOS، اتصالهایی که هنگام شروع کیلسوییچ باز هستند، یک بار قطع میشوند. برنامهها دوباره وصل میشوند.
کیلسوییچ چگونه کار میکند
Throne یک پردازهٔ نگهبان (guard) جداگانه، یعنی ThroneCore --guard، را اجرا میکند. این پردازه قوانین فایروال را اضافه میکند، هر 5 ثانیه بررسی میکند که هنوز وجود دارند، و وقتی Throne آن را متوقف کند، وقتی Throne خارج شود یا وقتی Throne کرش کند، آنها را برمیدارد.
- Linux: یک جدول nftables با نام
throne-guard-…. کرنل وقتی پردازهٔ نگهبان پایان یابد آن را حذف میکند. هستهٔ Throne با گروهش شناخته میشود: هسته به شناسهٔ گروه (group ID) 1950896719 تغییر میکند و برنامههای هستهٔ اضافی هم با همین گروه اجرا میشوند. - macOS: یک anchor در pf با نام
com.apple/000.throne-guard.…. پردازهٔ نگهبان pf را تا وقتی به آن نیاز دارد روشن میکند. هسته با همان شناسهٔ گروهی شناخته میشود که در Linux. اگر پردازهٔ نگهبان بدون برداشتن قوانینش پایان یابد، Throne دفعهٔ بعد که هستهاش شروع میشود آنها را برمیدارد. - Windows: فیلترهای Windows Filtering Platform (WFP) با نام «Throne kill switch». Windows وقتی پردازهٔ نگهبان پایان یابد آنها را حذف میکند.
ThroneCore.exeو برنامههای نمایههای هستهٔ اضافی با مسیرشان شناخته میشوند. وقتی یک نمایهٔ هستهٔ اضافی را اجرا میکنید، Throne ابتدا برنامهٔ آن را به کیلسوییچ اضافه میکند («[Kill switch] Allowing the extra core …»).
اگر برنامهٔ دیگری قوانین را بردارد یا فایروال را خاموش کند، Throne کیلسوییچ را دوباره شروع میکند، حداکثر یک بار در هر 30 ثانیه.
پیشنیازها
| سیستم | کیلسوییچ به چه چیزی نیاز دارد |
|---|---|
| Windows | Throne با دسترسی مدیر (administrator) اجرا شود و سرویس Base Filtering Engine در Windows در حال اجرا باشد. |
| Linux | هسته از راه بیت SUID با root اجرا شود. این همان تنظیمی است که Throne برای حالت TUN انجام میدهد. هستهای که فقط capabilityها (setcap) را دارد کافی نیست. Linux 5.12 یا جدیدتر، با nftables و برچسبهای conntrack (CONFIG_NFT_CT و CONFIG_NF_CONNTRACK_LABELS). |
| macOS | هسته، مانند حالت TUN، از راه بیت SUID با root اجرا شود. /etc/pf.conf باید anchorهای com.apple را بارگذاری کند، همانطور که بهطور پیشفرض این کار را میکند. |
برای اینکه ببینید Throne این دسترسیها را چگونه تنظیم میکند، دسترسیهای حالت TUN را ببینید.
وقتی نمیتواند کار کند
وقتی کیلسوییچ روشن است اما نمیتواند شروع شود، یا از کار میافتد، Throne پیام «Kill switch is not active» (کیلسوییچ فعال نیست) را همراه با دلیل نشان میدهد. عنوان پنجره [Kill switch: not active] را نشان میدهد. دکمهها:
Restart as Administrator(Windows) یاGrant Privileges(Linux و macOS)، وقتی دسترسیها کافی نیست. این دکمهها مانند حالت TUN کار میکنند.Retry، برای مشکلات دیگر.Disable Kill Switch، که این تنظیم را خاموش میکند.
تا وقتی کیلسوییچ روشن است اما فعال نیست، هیچ چیزی مسدود نمیشود و Throne نمایهها را اجرا نمیکند. گزارشها میگویند «[Kill switch] Not starting …: the kill switch is not active.» (… اجرا نمیشود: کیلسوییچ فعال نیست). به این ترتیب هیچوقت در حالی از یک نمایه استفاده نمیکنید که فکر میکنید محافظت میشوید اما نمیشوید. مشکل را برطرف کنید یا کیلسوییچ را خاموش کنید.
دلیل یک کد دارد. این کد در گزارشها («[Kill switch] Not active: …») و بهصورت kill_switch_error در Throne API نمایش داده میشود:
| کد | معنا |
|---|---|
privilege |
دسترسیها کافی نیست: Throne با دسترسی مدیر اجرا نمیشود (Windows)، یا هسته دسترسی root ندارد (Linux، macOS). |
unsupported |
این سیستم نمیتواند کیلسوییچ را اجرا کند: برای نمونه Linux بدون nftables، قدیمیتر از 5.12 یا بدون برچسبهای conntrack، هستهٔ Throne در Linux با capabilityها بهجای root، تنظیم pf بدون anchorهای com.apple، یا سرویس Base Filtering Engine متوقفشده. |
config |
کیلسوییچ تنظیماتش را رد کرد، برای نمونه یک نشانی TUN نامعتبر. |
tampered |
برنامهٔ دیگری قوانین را برداشت یا فایروال را خاموش کرد و شروع دوباره کمکی نکرد. |
crash، timeout، internal |
پردازهٔ نگهبان متوقف شد، یا در 15 ثانیه آماده نشد. Retry اغلب کمک میکند. |
overridden |
فقط Throne بدون رابط گرافیکی: با --no-kill-switch شروع شده است. |
کیلسوییچ ترافیک را مسدود میکند
در Linux، هسته باید به گروه کیلسوییچ تغییر کند. جایی که نمیتواند، برای نمونه در یک کانتینر یا user namespace بدون CAP_SETGID، کیلسوییچ همچنان مسدود میکند، اما Throne از اجرای نمایهها خودداری میکند. عنوان پنجره و راهنمای ابزار آیکون سینی سیستم [Kill switch در حال مسدود کردن ترافیک است] ([Kill switch is blocking traffic]) را نشان میدهند و هشدار فقط Disable Kill Switch را پیشنهاد میدهد. در این صورت رایانهٔ شما تا وقتی کیلسوییچ را خاموش نکنید به اینترنت دسترسی ندارد.
خاموش کردن کیلسوییچ
یکی از این راهها را به کار ببرید:
- تیک
تنظیمات(Settings) ←تنظیمات پایه(Basic Settings) ←امنیت(Security) ←Kill Switchرا بردارید و رویتایید(OK) کلیک کنید. - روی دکمهٔ شروع راستکلیک کنید و
Disable Kill Switchرا انتخاب کنید. Throne میپرسد «Turn off the kill switch? Traffic that does not go through Throne will no longer be blocked.» (کیلسوییچ خاموش شود؟ ترافیکی که از Throne عبور نمیکند دیگر مسدود نخواهد شد). رویDisable Kill Switchکلیک کنید. - در یک هشدار کیلسوییچ روی
Disable Kill Switchکلیک کنید.
گزارشها پیام «[Kill switch] Off.» (کیلسوییچ خاموش شد) را نشان میدهند. برنامههایتان دوباره میتوانند از اتصال معمول شما استفاده کنند.
اگر دسترسی شما را قطع کرد
تنظیمات Throne بدون دسترسی به اینترنت کار میکنند. آنها را باز کنید و کیلسوییچ را همانطور که در بالا آمد خاموش کنید.
اگر Throne پاسخ نمیدهد:
- از Throne خارج شوید، یا آن را در مدیر وظایف (task manager) سیستم ببندید. پردازهٔ نگهبان متوجه این میشود و در چند ثانیه قوانینش را برمیدارد.
- اگر ترافیک همچنان مسدود است، پردازهٔ نگهبان را خودتان ببندید:
- Windows: در Task Manager →
Details، همهٔThroneCore.exeها را ببندید. Windows فیلترها را همراه با پردازه برمیدارد. راهاندازی دوبارهٔ Windows هم آنها را برمیدارد. - Linux: فرمان
sudo pkill -f 'ThroneCore --guard'را اجرا کنید. کرنل جدول را همراه با پردازه برمیدارد. - macOS: فرمان
sudo pkill -f 'ThroneCore --guard'را اجرا کنید. اگر قوانین باقی ماندند، Throne را دوباره اجرا کنید: هستهٔ آن قوانین را برمیدارد. یا anchorها را باsudo pfctl -a com.apple -s Anchorsفهرست کنید و anchorی را که با000.throne-guard.شروع میشود باsudo pfctl -a 'com.apple/000.throne-guard.…' -F allپاک کنید. راهاندازی دوبارهٔ macOS هم آنها را برمیدارد.
- Windows: در Task Manager →
- Throne را اجرا کنید و پیش از هر کار دیگری کیلسوییچ را خاموش کنید. تا وقتی آن را خاموش نکنید، همراه با Throne دوباره شروع میشود.
در Android
Throne برای Android کیلسوییچ ندارد. Android کیلسوییچ خودش را دارد: Throne را بهعنوان Always-on VPN تنظیم کنید و «Block connections without VPN» (مسدود کردن اتصالهای بدون VPN) را روشن کنید. Always-on VPN را ببینید.
Throne بدون رابط گرافیکی
Throne بدون رابط گرافیکی همین کیلسوییچ را دارد. آن را با thronectl settings set kill_switch=true روشن کنید. تفاوتها:
- دسترسیها به نحوهٔ نصب بستگی دارند. در Linux، کیلسوییچ به یونیتی نیاز دارد که با root اجرا شود، یا به هستهای با بیت SUID؛ capabilityها بهتنهایی به
unsupportedمیانجامند. دسترسیها در Linux را ببینید. - وقتی کیلسوییچ نمیتواند کار کند، Throne بدون رابط گرافیکی دلیل را در گزارش مینویسد، نمایهها را رد میکند (
kill_switch_inactive) وkill_switch_failedرا گزارش میدهد. - اگر کیلسوییچ دسترسی شما به رایانه را قطع کرد، Throne را یک بار با
--no-kill-switchشروع کنید. بازیابی دسترسی را ببینید.