النفق قائم، والمصافحة تحدث كل دقيقتين، وعنوان واحد بالضبط في الطرف الآخر يستجيب. تعمل اختبارات ping إلى عنوان النفق الخاص بالنظير؛ ولا يعمل أي شيء خلفه. يقرأ أحدهم إعدادات الواجهة، ويرى بادئة مضيف، ويستنتج أن القناع خاطئ. توسيعها إلى /24 يصلح الـ ping لبعض الوقت ثم يكسر شيئًا آخر. لم تكن البادئة هي السبب يومًا، والمسار المفقود ليس هو المسار الذي يتحكم فيه القناع.

ما الذي تنشئه بادئة الواجهة فعليًا

في Linux، يؤدي إسناد عنوان إلى واجهة إلى إنشاء مسار متصل لتلك البادئة. إذا أسندت بادئة مضيف، فإن المسار المتصل يغطي عنوانًا واحدًا. وإذا أسندت /24، فإنه يغطي 256 عنوانًا، ويُعتبر كل منها الآن قابلًا للوصول عبر ذلك الرابط.

ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1

بادئة المضيف خيار طبيعي تمامًا لنفق من نقطة إلى نقطة، لأن هناك نظيرًا واحدًا بالضبط في الطرف الآخر. الأمر الثالث هو الذي يجيب عن سؤال المستخدم: يخبرك بأي واجهة سيستخدمها النواة لذلك الهدف، ولن يعرض شيئًا مفيدًا إذا لم يطابق أي مسار.

هذا هو التفسير الكامل للعَرَض. عنوان واحد يستجيب لأن هناك مسارًا متصلًا له، أو لأن القائمة المسموح بها للنظير تتضمنه بالمصادفة. كل ما عدا ذلك ليس له مسار ويُسقط قبل أن يكون WireGuard طرفًا في الأمر أصلًا. النفق سليم طوال الوقت، ولهذا يظل عدّاد المصافحة يبدو مطمئنًا.

AllowedIPs قاعدتان تحت اسم واحد

القائمة المسموح بها لكل نظير في WireGuard تؤدي وظيفتين في وقت واحد، وصياغة الإعداد تجعلهما تبدوان وظيفة واحدة. عند الدخول، تسمح بأي عناوين مصدر يجوز للنظير تقديمها. وعند الخروج، تختار النظير الذي يُرسل إليه الحزمة، بإيجاد أدق تطابق.

لا واحدة من الوظيفتين هي التوجيه. ما زالت النواة بحاجة إلى أن تقرر أن الحزمة تنتمي إلى واجهة النفق قبل أن ينظر إليها WireGuard، وهذا القرار يأتي من جدول التوجيه. مدخل نظير بقائمة مسموح بها واسعة لا يثبّت مسارًا من تلقاء نفسه.

لهذا قد يبدو الإعداد كاملًا ويسلك سلوكًا غير متماثل. يرسل العميل إلى الطرف الآخر لأن مسارًا موجود، ولا تصل الردود أبدًا لأن القائمة المسموح بها للطرف الآخر لا تسمح بمصدر العميل، أو لأن الطرف الآخر ليس لديه مسار عودة. الاتجاهان قراران منفصلان بأنماط فشل منفصلة. تدوين أيّهما تختبر هو نصف التشخيص.

من أين يأتي المسار

إذا كنت تستخدم wg-quick، تُنشأ المسارات لك من القائمة المسموح بها لكل نظير، إلا إذا وضعت Table = off وتوليت التحكم بنفسك. هذا هو السلوك الموثق للأداة، وهو سبب عمل إعداد بلا توجيهات مسار صريحة رغم ذلك.

sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0

قارن القائمة المسموح بها بالمسارات الموجودة فعليًا. نظير يسمح بشبكة فرعية كاملة لكنه أنتج مسار مضيف واحدًا فقط يعني أن المساعد لم يُشغّل أبدًا، أو أنك تدير الواجهة مباشرة باستخدام wg و ip، وفي هذه الحالة لا شيء ينشئ مسارات لك.

عندما تديرها يدويًا، يكون المسار سطرًا واحدًا وشكله صريحًا: الوجهة عبر الواجهة، بلا بوابة لأن الرابط من نقطة إلى نقطة. إضافته ليست حيلة تجاوز لبادئة سيئة؛ إنه النصف المفقود من تصميم اختار أن يتولى التوجيه بنفسه.

البادئة الأوسع لا تضيف مدخل النظير

الإصلاح المغري هو تغيير العنوان إلى /24 لتغطي الوصلة المتصلة شبكة الخادم المحلية. يبدو أنه يعمل، وسبب ظهوره كذلك هو أن المسار المتصل يطابق الآن، لا أن WireGuard تعلّم شيئًا جديدًا.

ما فعلته أيضًا هو المطالبة بالنطاق كله كونه متاحًا مباشرة عبر ذلك الرابط، بما في ذلك عناوين تخص نظائر أخرى أو شبكة محلية تقع فعليًا خلف الخادم. تدخل حركة المرور إلى تلك العناوين النفق الآن، ويعتمد خروجها من الجهة الأخرى على توجيه الخادم نفسه وقوائمه المسموح بها.

الجانب التشفيري غير متأثر في أي حال. ما زال WireGuard يحتاج إلى مدخل في القائمة المسموح بها يغطي الوجهة لاختيار نظير، وما زال الطرف الآخر يحتاج إلى مدخل يغطي مصدرك لقبوله. ولا يمكن لبادئة واجهة أوسع توفير أي منهما.

أكّد الاتجاهين قبل تغيير أي شيء

تعامل مع الطرفين كلٌّ على حدة واكتب ما يقوله كل منهما. على العميل المسار ومدخل النظير؛ وعلى الخادم الصورة المعكوسة إضافة إلى مسار عودته:

ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10

الالتقاط هو ما يحسم الخلافات حول الاتجاه. إذا ظهرت الحزم الصادرة على واجهة النفق ولم يسجّل الخادم شيئًا، فإن الطرف البعيد يرفضها، عادة لأن مصدرك خارج قائمته المسموح بها. وإذا لم يظهر شيء على الإطلاق، فالمسار مفقود أو يشير إلى مكان آخر.

ثم أصلح الطرف الأضيق. مدخل في القائمة المسموح بها على جهة الخادم لعنوان عميلك، ومدخل على جهة العميل للشبكة الفرعية للوجهة هو الشكل المعتاد، وهو يترك بادئة الواجهة كما هي. لا توسّع البادئة إلا إذا كان مخطط العناوين يريد فعلًا شبكة فرعية مشتركة على ذلك الرابط، وافعل ذلك كتغيير مخطط لا كخطوة تنقيح.

مقالات ذات صلة