اذا كنت تريد الوصول لخادمك المنزلي خارج الشبكة المنزلية دون عمل Port-forwarding, هناك عدة طرق.
بإمكانك استخدام Cloudflared, مجاني, وسهل التثبيت بالإضافة انك تحصل على حماية من الWAF الخاص بهم. لكن Cloudflare بالنهاية هو Reverse proxy, سيقوم بفك تشفير الاتصالات ثم اعادة تشفيرها لخادمك المنزلي. وأيضا هناك حدود على استخداماته بناءا على شروط الاستخدام الخاصة بهم.
لكن هناك حل, Rathole برمجية صغيرة مكتوبة بلغة Rust, نفق لاتصالات TCP, دون فك تشفير اي شيء. فقط تقوم بإعادة توجيه الاتصالات على منفذ معين على خادم الى خادمك المنزلي دون الحاجه لكشف خادمك مباشرة الى الإنترنت.
سوف استخدمه لعمل نفق لخادم Caddy, الذي استخدمه كreverse proxy في خادمي المنزلي.
تثبيت Rathole
Rathole هو عباره عن حزمة صغيرة, نزل الحزمة المناسبة لمنصتك من GitHub. بإمكانك أيضا تشغيلها داخل حاوية.
سوف نثبته على الخادم العام أولا, ثم على الخادم المنزلي.
docker-compose.yml على الخادم العام
|
|
Rathole Config على الخادم العام
|
|
docker-compose.yml للخادم المنزلي
|
|
Rathole Config للخادم المنزلي
|
|
فقط شغلهم الاثنين واذا تم اعداد كل شيء بشكل صحيح, سيتصلون ببعض وسيصبح بامكانك الوصول الى خادمك المنزلي عبر الخادم العام.
عنوان IP المتصل
لكن هناك مشكلة, برمجية Rathole لن تظهر عنوان IP المتصل للتطبيق على الخادم المنزلي. هذه سيسبب مشاكل اذا كنت تنوي حماية خادمك من محاولات تسجيل الدخول العشوائية او هجمات dos.
لكن لحسن الحظ هناك حل, بروتوكول PROXY.
توصيل عنوان IP المتصل عبر بروتوكول Proxy مع Rathole
بروتوكول PROXY هو بروتوكول حديث نسبيا, يسمح للبرمجيات بعمل PROXY لاتصالات TCP مع إرسال عنوان المتصل الاصلي, دون الحاجة لمعالجه كثيره تبطئ سرعة الاتصال.
برمجية بروكسي / نفق TCP والبرمجية المستلمة يجب ان يدعموا البروتوكول حتى تتمكن من الحصول على عنوان المتصل الاصلي.
خادم ويب Caddy يدعم PROXY protocol كمستلم و كبروكسي (مرسل).
هناك طلب دمج ل rathole ليضيف دعم PROXY protocol.
بامكانك استخدام صورة دوكر الخاصة بي لإستخدام النسخه التي تدعم PROXY protocol او بناء الحُزْمَة محليا بنفسك.
استخدم نفس الاعدادات السابقة مع اضافة enable_proxy_protocol = true
اسفل قسم [server.services.home-proxy]
.
تأكد ان التطبيق المستلم يدعم بروتوكول PROXY وانه يستخدم الإعدادات المطلوبة لتفعيله, والآن من المفروض يظهر لك عنوان المتصل حتى بعد استخدام النفق او البروكسي.