گروههای همتا در هاب WireGuard: مالکیت مبدأ بههمراه سیاست
گروههای همتا را با نشانیهای مبدأ باریک برای هر همتا و یک سیاست ارسال، بدون رابط تونل جداگانه برای هر گروه، از هم جدا نگه دارید.
هابی که WireGuard را اجرا میکند میتواند گروههای همتا را بدون رابط یا جدول مسیریابی جداگانه برای هر گروه از هم جدا نگه دارد. دو سازوکار این کار را انجام میدهند و اشتباه گرفتن آنها دلیل معمول آن است که یک سیاست درست به نظر میرسد و کاری نمیکند. یک لایه تعیین میکند چه کسی میتواند نشانی مبدأ را ادعا کند. لایه دیگر تعیین میکند این بسته اجازه دارد به کجا برود.
دو کار، جدا نگه داشتهشده
لایه تونل به پرسشی باریک پاسخ میدهد: آیا کلید این همتا این نشانی مبدأ داخلی را مجاز کرده است. لایه ارسال به پرسشی گستردهتر پاسخ میدهد: آیا این بسته میتواند به سوی آن مقصد خارج شود. هیچکدام به پرسش دیگری پاسخ نمیدهد و هیچکدام بهتنهایی یک سیاست دسترسی کامل نیست.
همین تفکیک دلیل آن است که یک همتا میتواند احراز هویت شده و درست نشانی گرفته باشد و در همان حال نتواند به میزبانی برسد که نباید به آن برسد. همچنین عکس آن را توضیح میدهد: قاعده فایروالی که همه چیز را مجاز میکند هیچ چیزی درباره اینکه چه کسی میتواند کدام نشانی را ادعا کند ثابت نمیکند.
دو لایه را با هم طراحی کنید و سپس هر دو را بیازمایید. پیکربندیای که در یک لایه درست و در لایه دیگر آزمودهنشده باشد، بسته به مقدار پیشفرض باز یا بسته شکست میخورد.
به هر همتا تنها نشانی خودش را بدهید
همتاهای چندمیزبانه شما را وسوسه میکنند که در سمت سرور کل محدوده گروه را بدهید. این اجازه یک ادعای نشانی مبدأ است، پس یک کارخواه بهخطرافتاده یا بدپیکربندیشده میتواند هر نشانی در محدوده را ارائه کند و تونل آن را میپذیرد. برای هر همتا یک /32 برای نشانی داخلی خودش اختصاص دهید. محدودههای گروه را فقط روی کارخواهها تعیین کنید، جایی که توصیف میکنند کارخواه به کدام مقصدها میتواند برسد و نه از کدام مبدأها میتواند استفاده کند.
آنگاه فایروال با مبدأیی که میتواند به آن اعتماد کند تطبیق میدهد. قاعدهای که برای محدوده گروه نوشته شده یک گروهبندی سودمند باقی میماند و تنها زمانی معنادار میشود که هیچ همتای منفردی نتواند نشانی متعلق به عضو دیگر را ادعا کند.
سیاست ارسالی را بنویسید که گروهها را جدا میکند
ترافیک مهم اینجا از همان رابط تونل وارد و خارج میشود، پس مسیر ارسال را میپیماید نه مسیر ورودی میزبان. قواعد به زنجیره ارسال موجود هر مدیر فایروالی که میزبان را در اختیار دارد تعلق دارند و آنها قطعهاند نه مجموعه قواعد کامل.
iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept iifname "wg0" oifname "wg0" drop
دو قاعده نخست ترافیک درون هر گروه را مجاز میکنند. قاعده آخر هر چیز دیگری را که از آن رابط میگذرد مسدود میکند و همین است که جداسازی میان گروهها را پدید میآورد. اگر لازم دارید قواعد صریح برای خانواده نشانی دیگر بیفزایید، زیرا یک drop نوشتهشده برای IPv4 رفتار IPv6 را نه مجاز میکند و نه توصیف.
ترتیب تعیین میکند که سیاست اعمال شود یا نه
ترتیب قواعد از خود قطعه مهمتر است. قاعدهای عمومی که اتصالهای برقرارشده را میپذیرد و پیش از این ورودیها گذاشته شده باشد، میگذارد یک جریان قدیمی میانگروهی ادامه یابد، پس جداسازی فقط بر اتصالهای جدید اعمال میشود. پیش از بازبارگذاری تصمیم بگیرید کدام یک از این دو پیامد را میخواهید.
حکم پذیرش هم در میان زنجیرهها در همان قلاب همیشه نهایی نیست. اگر زنجیره پایه دیگری بعدتر اجرا شود، سیاست مؤثر ترکیب است، پس شمارندهها را بررسی کنید نه پروندهای را که ویرایش کردید. شمارندهها ارزانترین شاهد در دسترساند. قاعدهای که شمار بسته ندارد تطبیق نمییابد و قاعدهای که تطبیق مییابد در حالی که زنجیره بعدی میپذیرد به شما میگوید که drop در جای نادرست است.
ماتریس را بیازمایید، نه شمار فایلها را
یک ماتریس کوچک از نتایج مورد انتظار بسازید و هر خانه را بررسی کنید. از گروه A به گروه A باید کار کند، از گروه B به گروه B باید کار کند و از A به B نباید، در هر دو جهت و برای هر دو خانواده نشانی اگر آنها را پشتیبانی میکنید.
nft list ruleset wg show wg0 allowed-ips ping -c 2 10.66.10.5 conntrack -L -s 10.66.20.7 2>/dev/null | head
دو مورد نخست نشان میدهند چه چیزی پیکربندی شده است. ping از عضوی از گروه نادرست نشان میدهد در واقع چه رخ میدهد. فهرست conntrack نشان میدهد آیا یک جریان قدیمیتر هنوز پذیرفته میشود و اینگونه است که یک تغییر جداسازی بیصدا از اجرا بازمیماند.
سرویسهای میزبان روی هاب و دسترسی به یک LAN در پشت آن مسیرهای جداگانه با سیاست جداگانهاند. ثبت کنید ماتریس کدامیک را پوشش میدهد، زیرا آزمونی که تنها ترافیک همتا-به-همتا را بررسی میکند درباره هیچکدام چیزی نمیگوید.