نفق WireGuard المنزلي يحتاج إلى مسار عودة من الشبكة المحلية
المصافحة هي الجزء السهل. حدِّد تقسيم العمل بين الموجِّه والبوابة، وأبقِ مصدر الحاسوب المحمول كما هو، وأعطِ الشبكة المحلية مسار عودة.
الوصول إلى المنزل خدمة خاصة واحدة، وليس منفذ إنترنت ثانيًا. ينتهي WireGuard على جهاز Linux خلف الموجِّه، ويحتفظ الموجِّه بمهمته الحالية، ويرسل الحاسوب المحمول بادئة المنزل فقط عبر النفق. أي جهاز يمرِّر وأي جهاز ينهي الاتصال هو القرار الذي تتبعه كل قاعدة لاحقة. أخطئ في هذا التقسيم وستضطر إلى تصحيح NAT لم تكن تنوي إضافته.
حدِّد من يمرِّر ومن ينهي الاتصال
الموجِّه يملك المدخل العام: يستقبل حزمة UDP ويمرِّرها إلى مضيف Linux. ذلك المضيف يملك مستمع WireGuard وقرار التمرير إلى الشبكة المحلية. عمليًا يرسل التعيين UDP 51820 إلى 192.168.50.10، ويبقى منفذ التطبيق نفسه مغلقًا. فصل الأدوار يبقي جدار الحماية قصيرًا.
اكتب خطة العناوين قبل إنشاء الواجهة. الموجِّه 192.168.50.1، والبوابة 192.168.50.10، والخدمة 192.168.50.20، والنفق 10.77.0.0/24 مع البوابة .1 والحاسوب المحمول .2. لا يجوز أن يتداخل نطاق النفق مع شبكة يصل إليها الحاسوب المحمول أصلًا، وإلا أصبحت الوجهات غامضة. يمكن أن يحجب NAT من نوع المشغِّل أو موجِّه أعلى الوصول الوارد، ولا يصلح أي تمرير منفذ محلي ذلك.
بادِل المفاتيح، ثم حدِّد حجم AllowedIPs
أنشئ زوج مفاتيح منفصلًا لكل طرف، ولا تنقل إلا المفاتيح العامة عبر قناة موثَّقة. مدخل النظير في البوابة يسمح بمصدر النفق الخاص بالحاسوب المحمول وحده، لأن شبكة المنزل المحلية تقع خلف البوابة لا خلف الحاسوب المحمول. ووضع الشبكة المحلية في ذلك المدخل يصف طوبولوجيا لم تبنِها.
[Interface]
Address = 10.77.0.2/32
PrivateKey = LAPTOP_PRIVATE_KEY_BASE64
[Peer]
PublicKey = HOME_PUBLIC_KEY_BASE64
Endpoint = home-vpn.example.com:51820
AllowedIPs = 192.168.50.0/24, 10.77.0.1/32AllowedIPs هو بادئة المنزل زائد عنوان النفق الخاص بالبوابة، وليس 0.0.0.0/0 أبدًا، كي يحتفظ التصفح العادي بمساره المحلي. احتفظ بمالك إعداد واحد، ولا تربط الواجهة نفسها بمدير شبكة ثانٍ أبدًا.
مسار العودة هو الجزء الذي يتخطاه الناس
يحتفظ هذا التصميم بمصدر 10.77.0.2 الخاص بالحاسوب المحمول بدلًا من تمويهه كالبوابة، لذا يجب أن تعرف أجهزة المنزل كيف ترد عليه. أضف مسارًا ثابتًا على موجِّه المنزل إلى 10.77.0.0/24 مع 192.168.50.10 كخطوة تالية، واقرأ ما يستنتجه wg-quick من AllowedIPs في مرجعه. بدون ذلك المسار، تتعايش مصافحة مكتملة مع ردود تطبيق لا تصل أبدًا.
إن لم يستطع الموجِّه حمل ذلك المسار، فاختر تصميم عودة موثَّقًا. أما إضافة NAT بهدوء فتُغيّر نموذج المصدر الذي كتبته للتو.
اسمح بخدمة واحدة، لا بالشبكة الفرعية
فعِّل تمرير IPv4 على البوابة وأبقِ ثلاث مهام لجدار الحماية منفصلة: السماح بمستمع WireGuard، وتمرير مصدر الحاسوب المحمول إلى 192.168.50.20 فقط، وإبقاء بقية شبكة المنزل مغلقة أمام ذلك النظير. ادمج القواعد مع مدير جدار الحماية المستخدم بالفعل بدلًا من تفريغه. وجود مسار لكامل بادئة المنزل ليس إذنًا باستخدام كل جهاز بداخلها.
مصادقة التطبيق نفسه وجدار حماية المضيف بوابة منفصلة. سمِّ الخدمة التي تسمح بها القاعدة، ليتمكن المراجع التالي من فحصها مقابل المهمة المقصودة.
اختبر من الخارج، ثم أزِل الجهاز بشكل نظيف
شغِّل الملفات الشخصية عبر مالكها، وأكِّد المصافحة، ثم جرِّب التطبيق المقصود من شبكة خارجية معتمدة وتحقق من الرد. جرِّب خدمة منزلية يجب أن تبقى مرفوضة، لأن القاعدة المتساهلة لا تُرى حتى يستخدمها شيء. في HTTPS استخدم الاسم الموجود في الشهادة ودع التحقق يعمل؛ كتابة العنوان الخام والنقر عبر التحذير لا يثبت شيئًا عن المسار. PersistentKeepalive اختياري: يساعد نظيرًا محصورًا خلف NAT بعد فترة خمول، لكنه ليس مسارًا ناقصًا ولا إصلاحًا للصلاحيات.
يحتاج العنوان العام الديناميكي إلى تحديثات DNS، ويحتاج الحاسوب المحمول إلى إعادة تحليل نقطة نهايته بعد التغيير؛ سجلات DNS الجديدة لا تحرِّك نقطة نهاية مكوَّنة. أزِل الحاسوب المحمول بحذف نظيره من الإعدادات المخزنة والنشطة؛ حذف ملف الحاسوب المحمول وحده لا يلغي تفويض البوابة.