مسیر blackhole در برابر کلید قطع VPN: هر یک چه میکند
مسیر blackhole ترافیک منطبق را دور میریزد و مسیری بسته در هنگام خطا تحمیل میکند. دامنه و نقاط کور آن را با کلید قطعی مبتنی بر فیلتر بسته مقایسه کنید.
یک بسته لپتاپ را ترک میکند، هرگز به دروازه VPN نمیرسد و هیچ شمارندهای در دیوار آتش تکان نمیخورد. جدول مسیر پیشاپیش سرنوشت بسته را تعیین کرده است: یک ورودی blackhole با آن منطبق شد و هسته آن را پیش از آنکه هیچ واسطی ببیند دور انداخت. این رفتار وقتی مفید است که مقصدی باید بسته شکست بخورد، اما اقدامی مسیریابی با دامنهای باریک است. برخورد با آن بهعنوان یک کلید قطع کامل همان جایی است که طراحیها اشتباه میشوند.
اقدام دورریز واقعاً چه چیزی را منطبق میکند
جستجوی مسیر یک جدول انتخاب میکند، سپس طولانیترین پیشوند منطبق را در آن. مسیر blackhole یک ورودی عادی است که اقدامش دورریز است، پس فقط بر بستههایی اثر میگذارد که پس از تمام تصمیم آن ورودی را انتخاب میکردند. جدول را با یک قاعده سیاست تغییر دهید یا پیشوند مشخصتری اضافه کنید و دورریز دیگر اعمال نمیشود.
به همین دلیل دامنه blackhole دقیق و آسان برای بیان است: پیشوند را، در جدول، برای آن خانواده نشانی پوشش میدهد. مقصدی را که جدول دیگری میبرد پوشش نمیدهد و IPv6 را فقط به این دلیل که پیشوند IPv4 دور ریخته میشود پوشش نمیدهد.
ip route get تصمیم را پیش از استقرار هر چیزی نشان میدهد، از جمله جدول و نوع مسیر. خواندن آن خروجی سریعتر از استنتاج از یک درخواست ناموفق است که کدام قاعده یا پیشوند عمل کرده است.
blackhole با unreachable یا prohibit یکسان نیست
لینوکس سه نوع مسیر شبیه دورریز ارائه میدهد و آنها در آنچه فرستنده میبیند تفاوت دارند. blackhole بسته را بدون پاسخ میاندازد، پس کارخواه مهلت زمانی میبیند. مسیر unreachable پیام ICMP unreachable برمیگرداند، پس اتصال بهسرعت با خطای میزبان یا شبکه شکست میخورد. مسیر prohibit خطای ممنوعیت اداری برمیگرداند که به رد عمدی سیاست نزدیکتر است.
رفتاری را انتخاب کنید که میخواهید برنامه ببیند. دورریز خاموش وقتی مناسب است که نمیخواهید سیاست را آشکار کنید و خطای فوری وقتی بهتر است که کاربران باید بفهمند چرا مقصدی در دسترس نیست. آمیختن انواع در یک شبکه بلیتهای پشتیبانی میسازد که یک سیاست را سه خرابی متفاوت توصیف میکنند.
هنگام عیبیابی یک اتصال فرض نکنید هر ورودی دورریز جایگزینپذیر است. متن خطا، زمانبندی و ضبط بسته متفاوتاند و نوع مسیر در جدول میگوید به کدام نگاه میکنید. راهنمای ip-route انواع و رفتار خطای آنها را فهرست میکند.
چگونه با کلید قطع مقایسه میشود
کلید قطع فیلتر بسته است: قاعدهای در دیوار آتش که ترافیک خروجی را که بیرون تونل میرفت دور میریزد. مسیر blackhole تصمیمی برای ارسال است که زودتر در پشته گرفته میشود. هر دو میتوانند ترافیک را متوقف کنند، اما چیزهای متفاوتی میبینند و موارد متفاوتی را از دست میدهند.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
پوشش همان جایی است که مقایسه اهمیت دارد. دیوار آتش میتواند مالک، درگاه یا واسط را منطبق کند و برنامهای را مسدود کند در حالی که نقطه پایانی در دسترس میماند؛ مسیر نمیتواند. برعکس، مسیر میتواند یک پیشوند کامل را بدون بارگذاری هیچ فیلتر بستهای به دورریز بفرستد، که در سامانهای کمینه مفید است.
AllowedIPs در WireGuard مسیریابی با کلید رمزنگاری است، نه دیوار آتش. تعیین میکند کدام پیشوندهای مقصد در واسط پذیرفته میشوند و پروفایلی که فقط زیرشبکه تونل را فهرست میکند مقصدهای دیگر را به مسیر پیشفرض عادی واگذار میکند. به همین دلیل پروفایلهای تونل کامل از 0.0.0.0/0 استفاده میکنند و به همین دلیل wg-quick هم وقتی بتواند قواعد دیوار آتش نصب میکند.
نقطه پایانی تونل را بیرون از دورریز نگه دارید
نشانی بیرونی نقطه پایانی باید از طریق واسط فیزیکی در دسترس بماند. دورریزی که آن نشانی را هم میگیرد مانع خروج دستدادن میشود و تونل هرگز بالا نمیآید، که بیشتر شبیه خرابی VPN است تا سیاست مسیریابی. مسیر نقطه پایانی را پیش و پس از تغییر بررسی کنید.
دسترسی مدیریتی هم به همان بازبینی تعلق دارد. اگر تنها راه به مسیریاب یا کارخواه تونل باشد، دورریز بیش از حد گسترده میتواند شما را از ماشینی بیرون بیندازد که حذف آن را ممکن میکرد. یک مسیر خارج از باند مستند، یک کنسول یا یک بازگردانی زماندار نگه دارید.
IPv6 به ورودی و بازبینی خودش نیاز دارد. طراحیای که IPv4 را به blackhole میفرستد و IPv6 را روی مسیر پیشفرض میگذارد دقیقاً همان ترافیکی را نشت میدهد که سیاست میخواست متوقف کند و خطا در آزمون فقط IPv4 نامرئی است.
آن را با یک زمانسنج و بازگردانی مرحلهبهمرحله اجرا کنید
مسیر را با حذف خودکار کوتاه اعمال کنید تا خطا از یک راهاندازی مجدد جان سالم به در نبرد. دستورهای زیر از یک محدوده مستندسازی استفاده میکنند؛ آن را با پیشوندی جایگزین کنید که طراحی شما واقعاً دور میریزد:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8دستور دوم باید مسیر blackhole و جدولی که از آن آمده را گزارش کند. دستور سوم حذف را یک دقیقه بعد زمانبندی میکند که برای تأیید سیاست زمان کافی است و برای بازیابی از خطا روی میزبان راه دور بهاندازه کافی کوتاه. پس از تأیید رفتار، ورودی را از طریق همان مدیریت پیکربندی که مالک دیگر مسیرهاست پایدار کنید.
تغییر را با ثبت پیشوند، جدول، خانواده نشانی و روش بازگردانی ببندید. دورریز استثنایی عمدی در طراحی مسیریابی است و مهندس بعدی باید بداند چه ترافیکی را قرار بود متوقف کند پیش از آنکه تصمیم بگیرد آیا هنوز به آنجا تعلق دارد.