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

ابدأ بما يستطيع العميل الوصول إليه وما لا يستطيع

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

عنوان نفق يستجيب لطلبات ping بينما تنتهي مهلة المواقع العامة هو علامة على مشكلة في التمرير أو الترجمة، وليس على مصافحة معطوبة. لوحة الحالة الخاصة بالعميل لا تستطيع التمييز بين الحالتين، لأنها تعرف فقط أن قناة التحكم قائمة. افحص واجهة النفق على الخادم باستخدام ip -br addr show tun0 وتأكد من أن العنوان المخصص للعميل يقع داخل التجمع الذي أعددته. إذا اختلف التجمع وعنوان العميل، فأصلح ذلك أولًا، لأن كل قاعدة أدناه تُطابق التجمع.

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

اقرأ القاعدة التي تقرر خروج الحزم

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

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

ip -br addr show tun0
ip route get 203.0.113.9
sudo iptables -t nat -S POSTROUTING

على Raspberry Pi كان يستخدم Ethernet سابقًا ويستخدم Wi-Fi الآن، يكون الاسم القديم هو القصة كاملة تقريبًا. سجّل المثبّت أي جهاز كان موجودًا وقت الإعداد، وتُعيد مجموعة القواعد المحفوظة تشغيله في كل إقلاع. قارن الجهاز الناتج من بحث المسار بالجهاز المذكور في القاعدة قبل تغيير أي شيء آخر. إذا تطابقا، فالواجهة ليست مشكلتك وعليك الانتقال إلى العدّادات في القسم الأخير. إذا اختلفا، فالإصلاح تعديل كلمة واحدة في ملف الاستمرارية.

صحّح مجموعة القواعد المحفوظة، وليس القائمة الجارية فقط

تعديل الجدول الحي وحده يبقى حتى إعادة التشغيل التالية، وهي مدة كافية تمامًا لإقناعك بأن المشكلة حُلّت. القواعد التي تعود عند الإقلاع تسكن في ملف تعيد حزمة استمرارية جدار الحماية تحميله. في صور Pi المبنية على Debian يكون ذلك الملف عادةً /etc/iptables/rules.v4.

خُذ نسخة قبل أن تلمسه، ثم استبدل واجهة الخروج في سطر MASQUERADE بالجهاز الذي سجّلته، على سبيل المثال -o wlan0 بدلًا من -o eth0. أبقِ نطاق المصدر كما هو ما لم يتغيّر تجمع العملاء لديك. أعد التحميل وتأكد من أن القاعدة تذكر الآن الجهاز الصحيح:

sudo cp /etc/iptables/rules.v4 /root/rules.v4.bak
sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables -t nat -L POSTROUTING -v -n

من السهل نسيان إعدادين متجاورين. sysctl net.ipv4.ip_forward يجب أن يُبلّغ 1، ويجب ألا يكون الموجّه الأعلى يفلتر عناوين المصدر الخاصة من تلقاء نفسه.

أثبت أن القاعدة تعمل، ثم اعزل ما لا يزال بطيئًا

العدّادات هي الدليل الصادق الوحيد على تطابق قاعدة. شغّل السرد المطوّل، وابدأ تنزيلًا على العميل، ثم شغّله مرة أخرى. يجب أن ترتفع أعمدة الحزم والبايتات بجانب قاعدتك، والقاعدة التي تبقى على صفر لا تزال غير مطابقة. إذا تحركت العدّادات لكن الصفحات ما زالت تفشل، قارن نطاق المصدر بالتجمع الفعلي باستخدام grep -n "^server " /etc/openvpn/server.conf. إذا تحركت وحُمّلت الصفحات لكن معدل النقل ضعيف، فالترجمة انتهت والمشكلة المتبقية في مكان آخر.

قارن نقلين من العميل نفسه، أحدهما إلى مضيف على الشبكة المحلية والآخر عبر النفق إلى المضيف نفسه. البطء في الحالتين يشير إلى وصلة Pi الصاعدة أو وصلة Wi-Fi، لا إلى VPN. البطء عبر النفق فقط يشير إلى MTU وإعادة الإرسال، ويمكنك فحصها باستخدام ip -s link show tun0 قبل تغيير أي إعداد تشفير.

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

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