قرينان في WireGuard يتشاركان نطاقًا: أيّهما يستقبل الحزمة
تُحلّ النطاقات المتداخلة بأكثر البادئات تحديدًا، لا بالترتيب. افحص المسار أولًا، ثم قائمة الأقران، قبل أن توسّع أي شيء.
يُدرج قرينان نطاقين متلامسين، فتصل الحركة إلى القرين الخطأ. لا شيء تالف: يختار WireGuard القرين بمطابقة الوجهة مع النطاقات المهيّأة، والأكثر تحديدًا يفوز. قبل أن توسّع أي شيء، حدّد أي قرين يفترض أن يملك أي بادئة.
أطول بادئة تفوز داخل WireGuard
يحمل كل إدخال قرين مجموعة من بادئات الوجهة. وعندما تُوجَّه حزمة إلى الواجهة، يبحث التنفيذ عن الإدخال ذي البادئة المطابقة الأكثر تحديدًا، وهي القاعدة نفسها التي يطبّقها جدول التوجيه. لذلك تتغلب /24 على /16 تحتويها، ويستقبل القرين الأضيق الحركة.
تستخدم إعدادات road-warrior هذا عمدًا. يملك قرين واحد نطاقًا واسعًا لموقع، وتُقتطع المضيفات الفردية بإدخالات /32 تنتمي إلى أقران آخرين. ينجح النمط لأن الاقتطاعات أكثر تحديدًا، لا بسبب الترتيب.
دوّن الملكية في جدول من البادئة والقرين. إذا وصف إدخالان البادئة نفسها، فلم يعد الإعداد يعبّر عن نية، بل يعبّر عن سباق.
نظام التشغيل يختار الواجهة أولًا
لا يختار WireGuard إلا بين الأقران على واجهة واحدة. أي واجهة تستقبل الحزمة يُحدَّد في وقت سابق، بجدول التوجيه في المضيف، وقد يوجّه مسار افتراضي ثانٍ أو مسار قديم الحركة إلى مكان لا تراه قائمة الأقران قط. لهذا يمكن أن يكون تشخيص على مستوى القرين صحيحًا ومع ذلك لا يفسّر العطل. افحص المسار إلى الوجهة قبل قراءة إعداد القرين، لأن مسارًا يشير إلى الواجهة الفيزيائية يتجاوز السؤال كله.
عادةً ما تثبّت الأداة تلك المسارات من نطاقات الأقران، ما يعني أن تغيير قائمة قرين واحد قد يعيد توجيه حركة كانت تخص قرينًا آخر بصمت. تعديل القرين إذن تغيير في التوجيه متنكّر. راجع الاثنين معًا، وإلا ستصلح أحدهما وتكسر الآخر.
تُفحص الحزم الواردة حسب المصدر
قائمة النطاقات تؤدي وظيفتين. فبالنسبة إلى الحركة الصادرة تختار قرينًا حسب الوجهة، وبالنسبة إلى الحركة الواردة تصرّح بعنوان مصدر. والحزمة القادمة من عنوان خارج نطاقات ذلك القرين تُسقط قبل أن يراها أي جدار حماية.
هذا التفاوت يسهل إغفاله حين تقرأ جانبًا واحدًا من الإعداد. القرين القادر على الوصول إلى شبكة فرعية لا يُسمح له بذلك بالإرسال من تلك الشبكة الفرعية، والاتجاهان يُفرضان بفحصين مختلفين.
ملكية المصدر الضيقة تحوّل ذلك إلى ميزة. أعطِ كل قرين /32 لعنوانه، فيجد جدار الحماية في المصبّ مصدرًا موثوقًا للمطابقة، بدلًا من نطاق جماعي يمكن لأي عضو أن يدّعيه.
النطاقات المكرّرة ليست تجاوزًا للفشل
إسناد البادئة نفسها إلى قرينين لا ينشئ موازن أحمال ولا مسارًا احتياطيًا. لا يوجد فحص صحة ولا ارتباط جلسة: الإدخال الفائز يحدّده الترتيب الداخلي للتنفيذ، وهو ليس عقدًا ينبغي التصميم عليه. إن احتجت مخارج بديلة، عبّر عنها حيث يُعرَّف الاختيار. سياسة توجيه أو مقياس أو زوج بادئات منفصلة لكل منها مالك موثّق تنتج سلوكًا يمكنك توقّعه واختباره.
توسيع نطاق لإصلاح عطل غير ذي صلة هو الخطأ الشائع الآخر. إنه ينقل الحركة بعيدًا عن القرين الذي كان يعمل، ويصل العرض الجديد قبل أن يُفهم القديم.
تحقّق من الاختيار قبل التعديل
ثلاثة أوامر تجيب عن الأسئلة الثلاثة بالترتيب. الأول يسرد النطاقات التي يدّعيها كل قرين. الثاني يبيّن أي واجهة سيستخدمها المضيف لوجهة ما. الثالث يبيّن حالة القرين الحيّة بعد تدفق الحركة.
wg show wg0 allowed-ips ip route get 10.66.8.20 wg show wg0 ip rule show
شغّلها قبل التغيير وبعده وقارن. إن تغيّر خرج المسار لكن الحركة ما زالت تصل إلى القرين الخطأ، فقوائم البادئات متداخلة بطريقة لم تدوّنها بعد. وإن لم يتغيّر خرج المسار، فإعداد القرين لم يكن هو الشيء المستشار أصلًا.
سجّل الوجهة والواجهة المختارة والقرين المختار في التذكرة. هذا الثلاثي هو ما يجعل التداخل قابلًا للمراجعة لاحقًا، وهو أنفع بكثير من لقطة شاشة للإعداد.