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

حدّد ما يجب أن يعنيه «مستقر»

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

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

ثبّت مسبارًا واحدًا غير ضار

اختر وجهة يُسمح لك باستعلامها وغير مرتبطة بحساباتك: مضيف وثائق، أو نقطة نهاية حالة داخلية، أو بوابة النفق نفسها. اجعل العملية قابلة للتكرار، مثلًا curl -s -o /dev/null -w "%{http_code} %{time_total}\n" https://example.com/، الذي يطبع سطرًا واحدًا لكل محاولة. أبقِ صيغة الإخراج تلك ثابتة طوال التشغيل. رمز الحالة والمدة اللذان يُجمعان بالطريقة نفسها مرتين هما ما يجعل تشغيلين قابلين للمقارنة.

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

عاين الحقائق الأربع

حالة النظير والمسار والمحلّل وطلب جديد واحد هي الملاحظات الأربع، ولكل منها مصدر رخيص. على WireGuard، يعطي wg show wg0 latest-handshakes طابع وقت النظير ويُظهر ip route get 1.1.1.1 أي واجهة سيستخدمها النواة. على OpenVPN توجد الحالة نفسها في ملف الحالة الذي يكتبه --status /run/openvpn/status 10 أو خلف state على واجهة الإدارة. يبقى عميل Windows في PowerShell مع Get-NetAdapter وكذلك Resolve-DnsName.

كرّرها في طرفية واحدة كي يحمل كل سطر طابع وقت: for i in $(seq 1 20); do date -Is; wg show wg0 latest-handshakes; ip route get 1.1.1.1; sleep 30; done. تغطي تلك الحلقة ثلاثة من حقول السجل الستة؛ نسخة العميل تُدخل مرة واحدة في الأعلى، ويُضاف طابع وقت الحدث عند وقوع الحدث.

المحلّل هو الحقيقة التي يتخطاها الناس، ويخفيها dig +short، لأن تلك الصيغة تطبع الجواب فقط. اطلب الخادم صراحةً بـ dig example.com | grep SERVER:، أو استخدم nslookup example.com حيث لا يكون dig مثبتًا، وهو يطبع عنوان الخادم الذي ذهب إليه الاستعلام. المصافحة القديمة على نفق خامل ليست عطلًا تلقائيًا أيضًا، لأن WireGuard لا يعيد توليد المفاتيح إلا عندما تكون هناك حركة تستحق الحماية.

أحدث الحدث، لا تسريبًا

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

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

أبقِ السجل صغيرًا بما يكفي لإنهائه

ستة حقول لكل عيّنة: الوقت، نسخة العميل، نقطة النهاية، شبكة الوصول، الحدث، النتيجة. استبعد عناوين URL والحمولات والرموز وأي شيء يحمل معرّف جلسة، لأن السجل دليل على النفق ولا شيء آخر. أبقِه بجانب الحلقة كي يعيد الشخص التالي تشغيلها دون أن يسأل عمّا تعنيه الأعمدة.

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

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