بیشتر مردم AllowedIPs را فهرستی از مجوزها می‌خوانند، مجموعه نشانی‌هایی که می‌توانند به یک همتا متصل شوند، تقریباً مانند قاعدهٔ دیوار آتش که برای یک تونل نوشته شده است. این‌طور نیست. این فیلد یک جدول مسیریابی است که در هر دو جهت کار می‌کند: همتایی برای بستهٔ خروجی انتخاب می‌کند و منبع بستهٔ ورودی را اعتبارسنجی می‌کند. خواندن آن به‌عنوان فهرست دسترسی پیکربندی‌هایی می‌سازد که ترافیکی را مسیریابی می‌کنند که هیچ‌کس نخواسته است.

یک فیلد، دو خواننده: انتخاب خروجی و بررسی منبع

در کلاینت، پیشوندها تعیین می‌کنند کدام مقصدها به آن همتا می‌روند و کدام در شبکهٔ معمولی می‌مانند. بنابراین یک ورودی برای 0.0.0.0/0 همهٔ مقصدهای IPv4 را می‌گیرد، و به همین دلیل وارد کردن پروفایل تونل کامل مرور معمولی را از دستگاه دور می‌فرستد. ورودی‌های باریک برعکس عمل می‌کنند: فقط شبکه‌هایی را که فهرست کرده‌اید مسیریابی می‌کنند و بقیه را همان‌جا که بود رها می‌کنند. بخش مسیریابی کلید رمزنگاری در مستندات WireGuard هر دو کار را در یک جا بیان می‌کند: انتخاب همتای خروجی و اعتبارسنجی منبع ورودی.

در سرور، همان فیلد توضیح می‌دهد هر همتا می‌تواند از کدام نشانی‌های منبع استفاده کند. این یک بررسی رمزنگاری است نه فیلتر بسته: بسته‌ای که منبع داخلی‌اش با فهرست همتا مطابقت ندارد، پیش از آنکه هر دیوار آتشی روی میزبان آن را ببیند، داخل WireGuard حذف می‌شود. هر دو کار یک فهرست را به اشتراک می‌گذارند، و دقیقاً به همین دلیل فهرستی که از جای دیگری کپی شده در جایی که به آن فکر نکرده‌اید بدرفتاری می‌کند.

بلوک کلاینت جایی است که بیشتر این سردرگمی آغاز می‌شود. تونل منقسم شبکه‌های دور را نام می‌برد، و تونل کامل همان فیلد با یک پیشوند پیش‌فرض است:

[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24

[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0

هر دو شکل به‌تنهایی کامل‌اند و جایگزین یکدیگرند، نه مراحل. اولی فقط آن دو شبکه را از تونل می‌فرستد؛ دومی همهٔ مقصدها را می‌فرستد، و ورودی ::/0 نشانی IPv6 را به پیش‌فرض IPv4 می‌افزاید. هرکدام را انتخاب کنید، این پیشوندها کل تصمیم مسیریابی برای آن همتاست، وقتی wg-quick نصب مسیرها را آغاز کند.

مرکز به فهرست دیگری نیاز دارد

یک مرکز نشانی تونل هر کلاینت را به‌عنوان پیشوند میزبان فهرست می‌کند، به‌همراه هر شبکه‌ای که واقعاً پشت آن کلاینت است. کپی کردن فهرست گستردهٔ یک کلاینت روی هر همتای مرکز به مرکز می‌گوید که بسیاری از همتاها می‌توانند از نشانی‌های یکسان به‌عنوان منبع استفاده کنند، و این یک طرح نشانی نیست. فیلد Endpoint به لایه‌ای کاملاً دیگر تعلق دارد: نشانی بیرونی و درگاه همتا را نام می‌برد، هرگز یک مقصد داخل تونل را.

[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24

پیشوند میزبان نشانی تونل را حمل می‌کند و پیشوند شبکه آنچه پشت کلاینت است را، و هر دو لازم‌اند. بدون پیشوند میزبان مرکز نمی‌تواند ترافیک خود کلاینت را برگرداند، و بدون پیشوند شبکه LAN پشت آن دسترسی‌ناپذیر می‌ماند؛ همتایی که چیزی پشتش نیست فقط پیشوند میزبان را می‌گیرد.

رد کردن نصب مسیرها شکافی بر جای می‌گذارد

wg-quick، کمکی که یک رابط را از فایل پیکربندی بالا می‌آورد، نشانی‌های رابط و مسیرها را به‌عنوان بخشی از آن کار نصب می‌کند. تنظیم Table = off به کمک‌کننده می‌گوید کار مسیرها را رد کند، که نه جایگزینی نصب می‌کند و نه شبکهٔ خصوصی را دسترسی‌پذیر می‌سازد. وقتی مسیرهای خودکار از قبل کار را انجام می‌دهند، نام بردن پیشوندهای موردنیاز پیکربندی روشن‌تری است. خاموش کردن مدیریت مسیر و نانوشته گذاشتن جایگزین یک طراحی نیست، یک ازقلم‌افتادگی است.

ابزار پایهٔ wg رفتار متفاوتی دارد: رابط را پیکربندی می‌کند و هرگز به مسیرها دست نمی‌زند، پس تنظیمی که مستقیماً روی آن ساخته شود به فرمان‌های مسیر خودش نیاز دارد. دستورالعمل‌هایی که برای یک ابزار نوشته شده‌اند ممکن است وقتی با ابزار دیگر اجرا شوند نادرست به نظر برسند. یک ping موفق هم شاهد ضعیفی است، چون یک مسیر را می‌آزماید نه هر مسیر برنامه‌ای را که لازم دارید.

DNS و IPv6 جداگانه تصمیم‌گیری می‌شوند

نشانی سرور DNS را که تونل اعلام می‌کند بررسی کنید و تأیید کنید که از طریق پیشوندهای انتخابی‌تان مسیری به آن نشانی وجود دارد. تنظیم حل‌کننده حل‌کننده را دسترسی‌پذیر نمی‌کند، و باریک کردن تونل می‌تواند مسیری را که پیش‌تر به آن می‌رسید بی‌صدا حذف کند. IPv6 را هم جداگانه بررسی کنید، چون تقسیم درست IPv4 چیزی دربارهٔ یک مسیر پیش‌فرض IPv6 که هنوز به پیوند فیزیکی اشاره می‌کند نمی‌گوید. سه تصمیم جداگانه می‌توانند هم‌زمان تغییر کنند وقتی یک بلوک همتا را ویرایش می‌کنید.

سپس از یک پیکربندی شروع شناخته‌شده یک منبع خصوصی و یک وب‌سایت معمولی باز کنید. اگر منبع پاسخ می‌دهد و مرور همچنان از اتصال محلی خارج می‌شود، تقسیم همان کاری را می‌کند که خواسته‌اید. اگر مرور در همان لحظه خراب شود، تونل مسیر پیش‌فرض را گرفته و فهرست پیشوندها جایی است که باید نگاه کنید.

مقالات مرتبط