راهاندازی نخست: ثبتنام برای ناوگانی از دستگاههای WireGuard
یک ایمیج، یک کلید برای هر برد، و مرحلهای از مجوزدهی که به ادعای خود دستگاه اعتماد نمیکند. چهار مرحله از راهاندازی تا یک peer تأییدشده.
برد از ایمیج مشترک راهاندازی میشود، یک اجاره DHCP میگیرد، و اسکریپت آمادهسازی پیش از آنکه کسی به دستگاه دست بزند اجرا میشود. جایی در آن اسکریپت باید هویتی WireGuard به دست آورد که از آنِ همین برد است و هیچ برد دیگری، آن هویت را مجوزدار کند، و پروفایلی بنویسد که دروازه آن را بپذیرد. ایمیج میتواند نرمافزار کلاینت، یک قالب بازبینیشده و کلید عمومی دروازه را همراه داشته باشد. آنچه هرگز نباید همراه داشته باشد یک کلید خصوصی مشترک برای کل ناوگان است، چون این کار یک برد دزدیدهشده را به حادثهای در سطح ناوگان تبدیل میکند. ترتیب زیر هویت را محلی و مجوزدهی را صریح نگه میدارد.
ایمیج چه چیزی همراه دارد و چه چیزی نه
بسته، قالب با جاینگهدارها، کلید عمومی دروازه و کلاینت ثبتنام را ارسال کنید. قالب یک شکل است، نه یک راز: باید برای کاربر آمادهسازی خوانا باشد و هیچ ماده کلیدی در آن نباشد.
کلید خصوصی هنگام نخستین راهاندازی روی دستگاه تولید میشود و هرگز آن را ترک نمیکند. فقط نیمه عمومی سفر میکند، درون درخواست ثبتنامی که چیزی جز ادعای خود دستگاه درباره این که کیست آن را مجوز نمیدهد. همین تمایز است که مانع میشود یک برد دزدیدهشده به مشکلی برای کل ناوگان تبدیل شود. و همین بخشی است که بیشتر اسکریپتهای نخستین راهاندازی آن را اشتباه انجام میدهند.
مرحله 1: تولید کلید بهصورت محلی
تولید را در دایرکتوری محافظتشده و پس از آنکه اتصال شبکه زیربنایی تأیید شد و کار کرد اجرا کنید. زیرپوسته تغییر umask را محلی همین عملیات نگه میدارد، و set -C از بازنویسی فایل موجود خودداری میکند:
(
umask 077
set -C
wg genkey > /etc/wireguard/device.key &&
wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)
شروع سریع WireGuard رابطه تولید کلید را که این دو فرمان بر آن تکیه دارند مستند میکند. اگر تولید قطع شود، دستگاه را ثبتنشده رها کنید و بگذارید جریان کار فایلها را هماهنگ کند. هویتی موجود را فقط برای اینکه اسکریپت از ابتدا تمیز اجرا شود حذف نکنید.
کلید در انتظار را در میان تلاشهای مجدد نگه دارید. تولید دوباره هویت پس از هر خطای موقت شبکه همان چیزی است که ناوگان را با peerهای یتیمی رها میکند که هیچکس نمیتواند آنها را به دستگاهی نسبت دهد.
مرحله 2: مجوزدادن به یک رکورد دستگاه
فرض کنید انبار این برد را device-042 مینامد و به آن 10.90.0.42/32 اختصاص میدهد. سرویس ثبتنام باید بررسی کند که این درخواستدهنده به آن رکورد حق دارد. شماره سریالی که در فرم تایپ میشود دلیل نیست، چون شمارههای سریال روی بیرون جعبه چاپ میشوند.
یک اعتبارنامه بوتاسترپ برای هر دستگاه، تأیید یک اپراتور، یا گواهی پشتیبانیشده با سختافزار میتواند آن ادعا را ثابت کند. یکپارچگی درخواست و اصالت پاسخ را محافظت کنید، و یک راز مشترک VPN را با یک اعتبارنامه کارخانهای مشترک جایگزین نکنید.
رکورد ثبتشده دستگاه، کلید عمومیاش، نشانی اختصاصییافته و نقش مدیریتی مجازش را به هم میبندد. خود WireGuard هیچ API ثبتنامی تعریف نمیکند، پس آن سرویس چیزی است که آگاهانه میسازید و اداره میکنید.
مرحله 3: نوشتن دو پیکربندی هماهنگ
دستگاه به پروفایلی نیاز دارد که پیشوندهای مدیریت را به تونل مسیردهی کند، و دروازه به یک ورودی peer نیاز دارد که تنها نشانی مبدأ خود همین دستگاه را مجاز بداند. با دروازهای روی 10.90.0.1 و شبکه مدیریت 10.60.0.0/16، سمت دستگاه چنین است:
[Interface]
PrivateKey = <device-042 private key>
Address = 10.90.0.42/32
[Peer]
PublicKey = <trusted gateway public key>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.90.0.1/32, 10.60.0.0/16
PersistentKeepalive = 25
مقدارهای داخل کروشه جاینگهدار هستند، نه کلید. keepalive وقتی مهم است که برد پشت NAT باشد و باید قابلدسترس بماند؛ همهجا لازم نیست، و افزودن آن از روی عادت رادیو را بیدلیل بیدار نگه میدارد.
روی دروازه، ورودی peer بهعمد باریک است:
[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
فهرست مقصدهای دستگاه را روی peer دروازه کپی نکنید. روی دستگاه آن فهرست میگوید چه چیزی به تونل مسیردهی شود؛ روی دروازه میگوید این peer میتواند از کدام نشانیهای مبدأ استفاده کند، و اینها دو گزاره متفاوت هستند.
ارسال، قواعد دیوار آتش و مسیر بازگشت به شبکه مدیریت هنوز باید دسترسی تأییدشده را مجاز کنند. یک peer ثبتشده مجوزی برای هر برنامهای پشت آن نیست.
مرحله 4: تثبیت ثبتنام بهعنوان یک وضعیت چرخه عمر
رکورد دروازه و پروفایل دستگاه را از طریق کسی که مالک هر پیکربندی است اعمال کنید، سپس ثبتنام را فقط وقتی کامل علامت بزنید که هویت و نشانی موردنظر پذیرفته شوند. تلاشهای مجدد باید همان رکورد را هماهنگ کنند نه اینکه peer دومی یا نشانی دومی تخصیص دهند.
برای آمادهسازی قطعشده یک مسیر بازیابی نگه دارید، از جمله حالتی که دروازه کلید را پذیرفته و دستگاه هرگز پروفایل خود را ننوشته است.
وقتی بردی جایگزین یا بازنشسته میشود، کلید عمومی و مجوز آن را با هم بردارید. کلید جدید یک رویداد بازثبتنامی آگاهانه است، نه اثر جانبی دوبارهنویسی ایمیج. ترتیب کار: تولید محلی، مجوزدهی در برابر انبار، نوشتن هر دو سمت، تثبیت وضعیت، و سپس آزمودن یک درخواست مدیریت از تونل.