نفق TCP حديث وبسيط في الصدأ يعرض المنافذ المحلية لخادم بعيد ، متجاوزًا جدران الحماية القياسية NAT. هذا كل ما يفعله: لا أكثر ، وليس أقل.
# التثبيت (يتطلب الصدأ ، راجع بدائل أدناه) تثبيت البضائع Bore-Cli# على MachineBore المحلي المحلي 8000-إلى bore.pub
سيعرض ذلك منفذك المحلي في localhost:8000
إلى الإنترنت العام على bore.pub:<PORT>
، حيث يتم تعيين رقم المنفذ بشكل عشوائي.
على غرار LocalTunnel و NGROK ، باستثناء bore
، يهدف إلى أن تكون أداة عالية الكفاءة غير مصممة لإعادة توجيه حركة مرور TCP والتي من السهل تثبيتها وسهلة الاستضافة ، مع عدم وجود رتوغل.
( bore
إجماليات حوالي 400 سطر من رمز الصدأ الآمن ، وهو تافهة لإعداد - فقط قم بتشغيل ثنائي واحد للعميل والخادم.)
إذا كنت على MacOS ، يتم تعبئة bore
كصيغة أساسية في البيرة.
مشروب تثبيت Bore-Cli
خلاف ذلك ، أسهل طريقة لتثبيت التجويف هي من ثنائيات مسبقة. هذه متوفرة على صفحة الإصدارات لـ MacOS و Windows و Linux. ما عليك سوى فك ضغط الملف المناسب لمنصتك ونقل bore
القابل للتنفيذ إلى مجلد على طريقك.
يمكنك أيضًا بناء bore
من المصدر باستخدام Cargo ، مدير حزمة الصدأ. يقوم هذا الأمر بتثبيت bore
الثنائي في مسار يمكن الوصول إليه من قبل المستخدم.
شحن تثبيت Bore-Cli
نقوم أيضًا بنشر صور Docker Expered لكل إصدار. تم تصميم الصورة للهندسة المعمارية AMD 64 بت. يتم وضع علامة عليها مع الإصدار المحدد وتسمح لك بتشغيل ثنائي bore
المرتبط بشكل ثابت من حاوية "خدش" الحد الأدنى.
Docker Run -it -init -RM -Network Host Ekzhang/Bore <Drics>
يصف هذا القسم الاستخدام التفصيلي لأمر bore
CLI.
يمكنك إعادة توجيه منفذ على جهازك المحلي باستخدام الأمر bore local
. يأخذ هذا وسيطة موضعية ، والمنفذ المحلي للمضي قدمًا ، بالإضافة إلى خيار --to
، والذي يحدد عنوان الخادم البعيد.
Bore Local 5000 -to bore.pub
يمكنك المرور اختياريًا في خيار --port
لاختيار منفذ معين على جهاز التحكم عن بُعد لفضحه ، على الرغم من فشل الأمر إذا لم يكن هذا المنفذ متاحًا. أيضًا ، يتيح لك النجاح --local-host
كشف مضيف مختلف على شبكة المنطقة المحلية إلى جانب عنوان الاسترجاع localhost
.
يتم عرض الخيارات الكاملة أدناه.
يبدأ وكيل محلي إلى الخادم البعيد الاستخدام: Bore Local [Options] -to <to> <local_port> الوسيطات: <local_port> المنفذ المحلي لفضحه خيارات: -L ،-المضيف-المضيف <المضيف> المضيف المحلي لفضح [الافتراضي: LocalHost] -T ، -إلى <إلى> عنوان الخادم البعيد لفضح المنافذ المحلية لـ [ENV: BORE_SERVER =] -P ، -port <port> منفذ اختياري على الخادم البعيد لتحديد [افتراضي: 0] -S ، -Secret <Secret> سر اختياري للمصادقة [Env: Bore_secret] -H ، -معلومات مساعدة الطباعة
كما هو مذكور في تعليمات بدء التشغيل ، هناك مثيل عام لخادم bore
الذي يعمل على bore.pub
. ومع ذلك ، إذا كنت ترغب في استضافة bore
على شبكتك الخاصة ، فيمكنك القيام بذلك مع الأمر التالي:
خادم التجويف
هذا كل ما يتطلبه الأمر! بعد بدء تشغيل الخادم على عنوان معين ، يمكنك بعد ذلك تحديث الأمر bore local
مع الخيار --to <ADDRESS>
لإعادة توجيه منفذ محلي إلى هذا الخادم البعيد.
يتم عرض الخيارات الكاملة لأمر bore server
أدناه.
يقوم بتشغيل خادم الوكيل البعيد الاستخدام: خادم التجويف [خيارات] خيارات: -min-port <min_port> رقم منفذ TCP مقبول [افتراضي: 1024 ، ENV: Bore_Min_Port] -Max-Port <Max_port> رقم منفذ TCP مقبول الحد الأقصى [الافتراضي: 65535 ، ENV: Bore_MAX_PORT] -S ، -Secret <Secret> سر اختياري للمصادقة [Env: Bore_secret] -H ، -معلومات مساعدة الطباعة
يوجد منفذ تحكم ضمني في 7835
، يستخدم لإنشاء اتصالات جديدة عند الطلب. عند التهيئة ، يرسل العميل رسالة "Hello" إلى الخادم على منفذ التحكم في TCP ، يطلب أن يتم وكيل المنفذ البعيد المحدد. يستجيب الخادم بعد ذلك بإقرار ويبدأ في الاستماع إلى اتصالات TCP الخارجية.
عندما يحصل الخادم على اتصال على المنفذ البعيد ، فإنه ينشئ UUID آمنًا لهذا الاتصال ويعيده إلى العميل. ثم يفتح العميل دفق TCP منفصل إلى الخادم ويرسل رسالة "قبول" تحتوي على UUID في هذا الدفق. ثم الخادم الوكلاء التوصيلين بين بعضهما البعض.
لأسباب صحيحة وتجنب تسرب الذاكرة ، يتم تخزين الاتصالات الواردة فقط بواسطة الخادم لمدة تصل إلى 10 ثوان قبل التخلص منها إذا لم يقبلها العميل.
عند النشر المخصص bore server
، يمكنك أن تتطلب اختياريًا سرًا لمنع استخدام الخادم من قبل الآخرين. يتطلب البروتوكول من العملاء التحقق من حيازة السر في كل اتصال TCP من خلال الرد على التحديات العشوائية في شكل رموز HMAC. (يتم استخدام هذا السر فقط للمصافحة الأولية ، ولا يتم تشفير أي حركة مرور أخرى افتراضيًا.)
# على خادم Serverbore -SECRET MY_SECRET_STRING# على ClientBore LOCAL <CONDY_PORT> -إلى <TO> -SECRET MY_SECRET_STRING
إذا لم يكن السر موجودًا في الحجج ، فسوف يحاول bore
أيضًا القراءة من متغير بيئة BORE_SECRET
.
أنشأه إريك تشانغ (@ekzhang1). مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
يود المؤلف أن يشكر المساهمين ومحاربي مشروع Tokio لجعله من الممكن كتابة خدمات الشبكة المريحة والفعالة في Rust.