التسجيل عند أول إقلاع لأسطول من أجهزة WireGuard
صورة واحدة، ومفتاح واحد لكل لوحة، وخطوة تفويض لا تثق بادعاء الجهاز عن نفسه. أربع مراحل من الإقلاع إلى نظير مثبَّت.
تُقلع اللوحة من الصورة المشتركة، وتحصل على تأجير 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 توثّق علاقة توليد المفاتيح التي يعتمد عليها هذان الأمران. وإذا انقطع التوليد، فاترك الجهاز غير مسجَّل ودع سير العمل يوفّق بين الملفات. لا تحذف هوية موجودة لمجرد أن يعمل النص بسلاسة من البداية.
احتفظ بالمفتاح المعلّق عبر المحاولات. إن إعادة توليد هوية بعد كل عطل شبكي مؤقت هي الطريق الذي ينتهي به الأسطول إلى نظائر يتيمة لا يستطيع أحد ربطها بجهاز.
الخطوة 2: التصريح بسجل الجهاز
افترض أن الجرد يسمي هذه اللوحة device-042 ويخصص لها 10.90.0.42/32. وعلى خدمة التسجيل أن تتحقق من أن مقدم الطلب هذا يحق له ذلك السجل. فالرقم التسلسلي المكتوب في نموذج ليس دليلًا، لأن الأرقام التسلسلية مطبوعة على خارج الصندوق.
يمكن لبيان اعتماد أوّلي خاص بكل جهاز، أو موافقة مشغّل، أو إثبات مدعوم بالعتاد أن يثبت الادعاء. احمِ سلامة الطلب وصحة الاستجابة، ولا تستبدل سرّ VPN مشتركًا واحدًا ببيان اعتماد مصنعي مشترك واحد.
يربط السجل المسجَّل الجهاز ومفتاحه العام وعنوانه المخصص ودوره الإداري المسموح. وWireGuard نفسه لا يعرّف أي واجهة برمجة للتسجيل، لذا فإن تلك الخدمة شيء تبنيه وتشغّله عن قصد.
الخطوة 3: كتابة إعدادين متطابقين
يحتاج الجهاز إلى ملف شخصي يوجّه بادئات الإدارة إلى النفق، وتحتاج البوابة إلى قيد نظير لا يسمح إلا بعنوان المصدر الخاص بهذا الجهاز. وبوابة على 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]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
لا تنسخ قائمة وجهات الجهاز إلى نظير البوابة. ففي الجهاز تقول تلك القائمة ما يجب توجيهه إلى النفق؛ وفي البوابة تقول أي عناوين مصدر يجوز لهذا النظير استخدامها، وهذان قولان مختلفان.
ما زال على التمرير وقواعد جدار الحماية ومسار العودة إلى شبكة الإدارة أن تسمح بالوصول المعتمد. فالنظير المسجَّل ليس إذنًا لكل تطبيق خلفه.
الخطوة 4: تثبيت التسجيل كحالة دورة حياة
طبّق سجل البوابة وملف الجهاز عبر من يملك كل إعداد، ثم علّم التسجيل مكتملًا فقط عندما تُقبل الهوية والعنوان المقصودان. وينبغي أن توفّق إعادات المحاولة ذلك السجل نفسه بدل تخصيص نظير ثانٍ أو عنوان ثانٍ.
احتفظ بمسار استرداد للتجهيز المنقطع، بما في ذلك الحالة التي قبلت فيها البوابة المفتاح ولم يكتب الجهاز ملفه الشخصي قط.
عند استبدال لوحة أو إخراجها من الخدمة، أزل مفتاحها العام وتصريحها معًا. فالمفتاح الجديد حدثُ إعادة تسجيل متعمَّد، لا أثرًا جانبيًا لإعادة تصوير. وترتيب العمل: التوليد محليًا، والتصريح مقابل الجرد، وكتابة الجانبين، وتثبيت الحالة، ثم اختبار طلب إدارة واحد عبر النفق.