چگونه به یک LAN آزمایشی خروجی WireGuard اختصاصی بدهیم
یک LAN را با جدول مسیریابی اختصاصی و نگهبان غیرقابلدسترس به خروجی WireGuard محدود کنید، در حالی که دروازه مسیر پیشفرض عادی WAN خود را نگه میدارد.
سه طرح همان مسئله آزمایشگاهی را حل میکنند: یک LAN کوچک باید از طریق همتای WireGuard خارج شود، در حالی که خود دروازه اتصال بالادست معمولش را نگه میدارد. میانبر وسوسهانگیز آن است که مسیر پیشفرض روتر را به داخل تونل منتقل کنیم، اما این کار مسیر مدیریتی خود جعبه و هر چیز دیگری را که به جلو میفرستد میشکند. گزینه جالب مسیریابی بر پایه سیاست است که به یک واسط و یک پیشوند محدود میشود. با پاسخ دادن به سه پرسش درباره ماشینی که واقعاً دارید، میان آنها انتخاب کنید.
تصمیم بگیرید خروجی کجا زندگی میکند
پرسش نخست: آیا این میزبان برای چیز دیگری هم فرستادن به جلو انجام میدهد؟ یک دروازه آزمایشگاهی اختصاصی میتواند با سیاستی که بهطور پیشفرض همه چیز را دور میریزد زندگی کند. روتری با وظایف تولیدی نمیتواند، و گذاشتن یک مجموعه قاعده رقیب روی یک دیوار آتش مدیریتشده همان روشی است که قطعیها برنامهریزی میشوند. دوم: آیا میتوانید دو شیء سیاست و ترتیبشان را در طول راهاندازیهای مجدد در اختیار داشته باشید؟ سوم: آیا همتایی که دارید نشانی مبدأ تونل شما را مجاز میکند و خروج به اینترنت میدهد؟ همتایی که تنها یک شبکه خصوصی را آشکار میکند محصول دیگری است و هیچ تغییر مسیریابی محلی آن را درست نمیکند. اگر هر پاسخی نه بود، خروجی را بهجای آن در یک فضای نام یا در یک ماشین مجازی یکبارمصرف بگذارید.
فضای نام یا ماشین مجازی حافظه میخرد و شعاع انفجار تمیزی به شما میدهد. مسیریابی بر پایه سیاست دو قاعده میخرد و یک جعبه برای اشکالزدایی برایتان میگذارد.
خروجیای را انتخاب کنید که مبدأ شما را مجاز میکند
بیشتر شکستها در این آزمایشگاه پیش از آن رخ میدهند که حتی یک قاعده دیوار آتش وجود داشته باشد. گرداننده خروجی باید نشانی مبدئی را بپذیرد که بستههای شما پس از ترجمه حمل میکنند، و در این طرح آن نشانی تونل است نه پیشوند LAN. از همین رو پوشاندن از آغاز بخشی از طرح است، نه افزودهای دیرهنگام.
سه چیز را با گرداننده تأیید کنید: همتا نشانی تونل شما را مجاز میکند، IPv4 را به جلو میفرستد بهجای آنکه روی خودش پایان یابد، و NAT خروجی را اعمال میکند. بدون نخستین مورد، بستههای شما میرسند و محو میشوند. بدون سومین مورد، با مبدأ خصوصی خارج میشوند و در گام بعدی میمیرند. سپس بررسی کنید که wg-quick مسیر پیشفرض خودش را نصب نمیکند، چیزی که Table = off مانع آن میشود؛ آن تنظیم ایجاد مسیر را سرکوب میکند، نه بررسیهای AllowedIPs همتا یا مدیریت DNS آن را.
دو شیء سیاست هدایت را انجام میدهند
هدایت به یک جدول و یک قاعده نیاز دارد. جدول دو مسیر را نگه میدارد: پیشوند LAN از واسط LAN به بیرون و یک مسیر پیشفرض از تونل به بیرون. قاعده ترافیکی را که روی واسط LAN میرسد و آن پیشوند را حمل میکند به جدول میفرستد. از انتخابگر iif در کنار تطبیق مبدأ استفاده کنید، زیرا بستههای WireGuard خود دروازه بهصورت محلی تولید میشوند و هرگز با یک واسط ورودی تطبیق نمییابند.
نگهبان پیش از جستجو میآید، نه پس از آن. همین ترتیب تمام ویژگی ایمنی طرح است.
نگهبان قاعده دوم روی همان انتخابگر است که حکمش unreachable است. به آن اولویت عددی بالاتری بدهید تا جستجو تا زمانی که تونل برپاست همچنان برنده شود. وقتی مسیر تونل ناپدید میشود، جستجو چیزی برنمیگرداند و نگهبان جستجو را متوقف میکند بهجای آنکه بگذارد به مسیر پیشفرض WAN در جدول اصلی بیفتد.
ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0
شکاف عقبنشینی را پیش از باز کردن ببندید
نخست نگهبان را نصب کنید و سپس جستجو را. انجام دادن برعکس، پنجرهای چندثانیهای باقی میگذارد که در آن ترافیک یک کارخواه آزمایشی میتواند به اتصال بالادست برسد.
صافی تصویر را کامل میکند. در قلاب forward جهت LAN به تونل را برای پیشوند آزمایشی و جهت بازگشت برقرارشده بپذیرید، سپس هر چیز دیگر را دور بریزید؛ NAT آن پیشوند روی واسط تونل در postrouting قرار میگیرد. باقی گذاشتن policy drop روی زنجیره فرستادن به جلو همان چیزی است که مسیر غایب را به سکوت بدل میکند نه به نشت. صافی مسیر معکوس در واسط تونل به حالت سهل نیاز دارد، زیرا مبدأ عمومی که پس از بازگشایی کپسول میرسد بهترین مسیر معکوسش را در سمت WAN دارد. لینوکس بالاتر از دو مقدار all و هر واسط را برمیدارد، پس تنظیم واسط تونل همان سست کردن اعتبارسنجی در همهجا نیست.
با حالت شکست اثباتش کنید
پرسشی دقیق از هسته بپرسید و نشانی مبدأ کارخواه و واسطی که بر آن میرسد را نام ببرید. جستجو بدون هر دو، پرسش دیگری را پاسخ میدهد و در هر دو حالت درست به نظر میرسد. سپس به شمارندههای دیوار آتش، وضعیت انتقال همتا و سرویس خود کارخواه نگاه کنید.
برداشتن را درست بیازمایید. تونل را متوقف کنید و قاعده و صافی را سر جایشان بگذارید: کارخواه باید بایستد و ترافیک خود دروازه باید به کار ادامه دهد. سپس همتا را بدون دست زدن به واسط محلی متوقف کنید، و این همان حالتی است که طرحهای متکی تنها به وجود مسیر را میگیرد. در پایان دوباره راهاندازی کنید و ترتیب قاعدهها را بازبینی کنید، زیرا قلاب برچیدنی که نگهبان را برمیدارد تمام طرح را به جدول اصلی بازمیگرداند. شماره جدول، اولویتها و نام واسطها را روی برگه تغییر ثبت کنید، زیرا نفر بعدی که قاعدهای اضافه میکند همان کسی است که این را میشکند.