المفتاح الخاص هنا، والمفتاح العام هناك: مفاتيح WireGuard
يبقى مفتاحك الخاص على جهازك، بينما يحمل إدخال النظير المفتاح العام للطرف الآخر. لا تشارك سوى النصف العام، وامنح كل جهاز هويته الخاصة.
معظم إخفاقات WireGuard التي تُبنى يدويًا تعود إلى موضع كل مفتاح. يحمل قسم الواجهة المفتاح الخاص بالجهاز الذي تُعدّه، بينما يحمل قسم النظير المفتاح العام للجهاز الموجود في الطرف الآخر. وإن تبديل هذين النصفين، أو لصق النصف الخطأ، ينتج مصافحة لا تكتمل أبدًا وسجلًا لا يذكر أي مفتاح. اتبع الفحوص الأربعة أدناه بالترتيب قبل المساس بـ AllowedIPs أو DNS.
مفتاحان، واتجاهان
المفتاح الخاص ينتمي إلى جهاز واحد فقط ويبقى في قسم الواجهة لذلك الجهاز. ونصفه العام هو ما يحتاجه كل نظير آخر للتعرف على الجهاز، والأدوات تستخرجه بدلًا من اختراعه. على الخادم يظهر المفتاح العام لجهازك كإدخال نظير، وعلى جهازك يؤدي المفتاح العام للخادم هذا الدور. وقراءة الإعداد بصوت عالٍ بهذه الصيغة تكشف معظم الالتباسات قبل أن تصل إلى المصافحة.
الأمر wg يطبع ما تستخدمه الواجهة المحلية فعليًا، بما في ذلك المفتاحان العامان. وهذا يجعله أسرع طريقة للتمييز بين خطأ في الإعداد وخطأ في الاتصال:
wg show
wg show interfaces
يُدرج الناتج الأول كل نظير مع مفتاحه العام، ونقطة النهاية التي استخدمها آخر مرة، وعمر مصافحته الأخيرة. وعمر مصافحة «أبدًا» عند طرف مقابل عمر حديث عند الطرف الآخر يشير إلى مفتاح لم يقبله سوى طرف واحد. ويسمي الأمر الثاني الواجهات التي يمكنك فحصها لاحقًا.
ما يُشارَك وما لا يُشارَك أبدًا
المفتاح العام مقصود ليُسلَّم، لكنه يظل يحدد علاقة جهاز، ولهذا يختلف إرساله إلى المسؤول الذي طلبه عن نشره. أما المفتاح الخاص فلا يغادر الجهاز الذي أنشأه أبدًا. والملف الشخصي المُصدَّر أو رمز QR يحمل الإعداد كاملًا بما فيه ذلك المفتاح الخاص، لذا لا يُؤمَن تمرير أي منهما، وإخفاء النص داخل صورة لا يغير شيئًا. والمفاتيح المشتركة مسبقًا اختيارية وسرية بالقدر نفسه، ويجب أن يحمل الطرفان القيمة نفسها وإلا توقفت المصافحة عند تلك المرحلة.
ثمة تمييز آخر يجدر قوله صراحة: نقطة النهاية عنوان ومنفذ، وليست مفتاحًا أبدًا. ولصق مفتاح عام في حقل نقطة النهاية، أو عنوان في حقل مفتاح، ينتج ملفًا يُحلَّل ثم لا يفعل شيئًا. ولن تكتشف الأدوات ذلك، لأن الحقلين مجرد سلاسل نصية. وتُظهر البداية السريعة لـ WireGuard خط إنتاج التوليد والاستخراج في سطر واحد.
جهاز واحد، وإدخال نظير واحد
حيث تسمح الخدمة بذلك، ينبغي أن يحمل كل جهاز هويته كنظير. ولصق الملف الشخصي الكامل لحاسوب محمول على هاتف يطمس أي جهاز يحمل تلك الهوية على الخادم، وهو ما يجعل إلغاء جهاز مفقود واحد أصعب. وإذا تسرب مفتاح خاص، فأزل تفويض النظير القديم على الخادم وجهّز بديلًا. وحذف الملف المحلي لا يزيل إدخال الخادم، ومفتاح عميل جديد لا ينفع أحدًا حتى يعرف الخادم نصفه العام.
احتفظ بخريطة الجهاز إلى المفتاح العام بجوار قائمة العناوين. فتلك القائمة هي ما يحوّل الإلغاء إلى مهمة من دقيقتين بدلًا من بعد ظهر كامل.
ما يظل يفشل بعد المصافحة
أزواج المفاتيح تعرّف النظائر؛ ولا تقرر سلوك الشبكة. ويربط AllowedIPs نطاقات العناوين بنظير، ويدير العميل أو أداة الإعداد المسارات حول ذلك. والعَرَض عادةً يقول أي طبقة تُفتح بعد ذلك:
| What you see | Which key problem it usually means | Where to look first |
|---|---|---|
| Handshake age stays at never on both ends | Peer public key missing, or an endpoint pointing at nothing | wg show, then the endpoint value |
| Handshake completes on one side only | The two ends hold different public keys for each other | wg show on both hosts |
| Handshake works, then no traffic | AllowedIPs or routes rather than keys | wg show and the route table |
| Worked until a key was regenerated | The peer entry still holds the old public key | Compare both public keys, then update the peer |
قد يفشل DNS بعد أن يصادق الطرفان بشكل صحيح، وقد يفشل تطبيق بينما النفق نفسه سليم، لذا فالمصافحة الناجحة ليست نهاية التشخيص. كما أن المفاتيح لا تقول شيئًا عن ممارسة المشغّل في التسجيل ولا عمّا إذا كان موقع ما يتعرف على حسابك، وتلك الأسئلة تنتمي إلى مكان آخر. انتقل إلى طبقات الشبكة متى نجحت الفحوص الأربعة، لأن المفتاح المفقود ليس مشكلة توجيه متنكرة.