قم بتشغيل OpenVPN في Docker في ثانيتين

مرحبا خابروفيتس! هل سبق لك أن واجهت موقفًا ترغب حقًا في أن يتم نقلك فيه تقريبًا إلى مدينة أو بلد أو قارة أخرى؟ لدي مثل هذه الحاجة في كثير من الأحيان ، لذا فإن القدرة على امتلاك خادم VPN خاص بي يمكن إطلاقه في أي مكان ، في غضون بضع ثوانٍ ، كانت حادة للغاية. في هذه المقالة ، أريد التحدث عن مشروعي ، الذي تصورته عندما كنت تبحث عن حل جاهز ، في هذه الحالة اربط صورة تسمح لك برفع خادم OpenVPN بسرعة ، مع حد أدنى من الإعدادات ومستوى مقبول من الأمان.

قم بتشغيل OpenVPN في Docker في ثانيتين

قبل التاريخ

كانت القدرة على تشغيل خدمة على أي جهاز - سواء كان خادمًا فعليًا ، أو خادمًا خاصًا افتراضيًا ، أو حتى مساحة حاوية داخل نظام إدارة حاوية آخر - أمرًا بالغ الأهمية. سقطت عيني على الفور على Docker. أولاً ، تكتسب هذه الخدمة شعبية ، وبالتالي يزداد عدد مقدمي الخدمة الذين يقدمون حلولاً جاهزة مع التثبيت المسبق ؛ ثانيًا ، يوجد مستودع مركزي للصور يمكنك من خلاله تنزيل الخدمة وتشغيلها باستخدام أمر واحد في الجهاز. زارتني فكرة أن مثل هذا المشروع يجب أن يكون موجودًا بالفعل وبحثت بجدية. ولكن ، كانت معظم المشاريع التي وجدتها إما مرهقة للغاية (كان من الضروري إنشاء حاوية لتخزين البيانات بشكل دائم وتشغيل الحاوية مع التطبيق عدة مرات باستخدام معلمات مختلفة) ، أو بدون وثائق عقلانية ، أو تم التخلي عنها تمامًا. بعد العثور على لا شيء مقبول ، لقد بدأت العمل في مشروعك. كانت هناك ليال بلا نوم من دراسة التوثيق وكتابة الكود وتصحيح الأخطاء ، ولكن في النهاية ، رأت خدمتي ضوء النهار ولعبت بجميع ألوان لوحة LED أحادية اللون الخاصة بالموجه. لذا ، أطلب منك أن تحب وتفضل - عامل ميناء-openvpn. لقد توصلت حتى إلى شعار (أعلاه ، قبل القص) ، لكن لا تحكم عليه بدقة ، لأنني لست مصممًا (بالفعل). عندما قمت بتنفيذ هذا المشروع ، وضعت سرعة النشر ، والحد الأدنى من الإعدادات و مستوى مقبول من الأمان في الصدارة. من خلال التجربة والخطأ ، وجدت التوازن الأمثل لهذه المعايير ، ومع ذلك ، في بعض الأماكن ، كان علي التضحية بسرعة النشر من أجل الأمان ، وكان لابد من الدفع مقابل الحد الأدنى من الإعدادات: في التكوين الحالي ، بمجرد إنشائه لا يمكن نقل حاوية على خادم وتشغيله على خادم آخر. على سبيل المثال ، يتم إنشاء جميع شهادات العميل والخادم عند بدء الخدمة وتستغرق حوالي ثانيتين. ومع ذلك ، يجب نقل إنشاء ملف Defi Hellman لبناء الوقت: يتم إنشاؤه أثناء إنشاء صورة عامل الإرساء ويمكن أن يستغرق ما يصل إلى 2 دقائق. أود حقًا تلقي تدقيق أمني لمثل هذا الحل من مجتمع يحظى باحترام كبير.

إطلاق

لبدء الخدمة ، نحتاج إلى بعض الأشياء:

  1. الخادم: فعلي أو افتراضي. من الممكن نظريًا التشغيل في وضع عامل الإرساء ، لكنني لم أختبر هذا الخيار على نطاق واسع ؛
  2. في الواقع عامل ميناء. يوفر العديد من مزودي الاستضافة حلولاً جاهزة مع Docker "على متن الطائرة" ؛
  3. عنوان IP العام.

إذا كانت جميع التفاصيل في مكانها الصحيح ، فكل ما يتعين علينا القيام به هو تشغيل الأمر التالي في وحدة التحكم في الخادم الخاص بك:

docker run --cap-add=NET_ADMIN 
-it -p 1194:1194/udp -p 80:8080/tcp 
-e HOST_ADDR=$(curl -s https://api.ipify.org) 
alekslitvinenk/openvpn

ربما لاحظ القارئ اليقظ أن عنوان IP للخادم يتم تحديده تلقائيًا باستخدام ipify.org. إذا لم ينجح هذا لسبب ما ، فيمكنك تحديد العنوان يدويًا.إذا تم تنفيذ جميع الخطوات السابقة بشكل صحيح ، فيجب أن نرى شيئًا مشابهًا في وحدة التحكم:

Sun Jun  9 08:56:11 2019 Initialization Sequence Completed
Sun Jun  9 08:56:12 2019 Client.ovpn file has been generated
Sun Jun  9 08:56:12 2019 Config server started, download your client.ovpn config at http://example.com/
Sun Jun  9 08:56:12 2019 NOTE: After you download you client config, http server will be shut down!

نحن قريبون من الهدف: الآن نحن بحاجة إلى النسخ example.com (في حالتك سيكون عنوان الخادم الخاص بك) والصقه في شريط عنوان المتصفح. بعد الضغط على Enter ، سيتم تنزيل ملف client.ovpn وسيصبح خادم http نفسه في طي النسيان. إذا كان هذا القرار موضع شك ، فيمكنك استخدام الحيلة التالية: قم بتشغيل الأمر السابق وإضافة العلامات zp وكلمة المرور. الآن ، إذا قمت بلصق الرابط الذي تم إنشاؤه في نافذة المتصفح ، فستتلقى أرشيفًا مضغوطًا بكلمة مرور.عندما يكون لديك ملف به تكوين عميل ، يمكنك استخدام أي عميل مناسب. أنا استخدم Tunnelblick لنظام التشغيل Mac.

فيديو تعليمي

يحتوي هذا الفيديو التعليمي على إرشادات مفصلة لنشر الخدمة على DigitalOcean.

PS إذا وجدت هذا المشروع مفيدًا ، فالرجاء إعطائه نجمة على GitHub ، وتقسيمه وإخبار أصدقائك. كما يتم الترحيب بالمساهمين وعمليات التدقيق الأمني ​​على نطاق واسع.ذكر المكتب الصحفى إذا انتهى المطاف بهذه المقالة في Habr ، فأنا أخطط لكتابة المقالة التالية حول كيفية إدارة عامل الإرساء وعمال الإرساء في عامل الإرساء ، ولماذا فعلت ذلك وماذا أتى منه.
EDIT1:

  1. إصلاح أخطاء النشر
  2. ردًا على التعليقات ، قررت أن أضع هذه المعلومات هنا: العلامة --privileged مطلوبة للعمل مع iptables

EDIT2:

  1. تحسين أمر تشغيل الصورة: الآن لا يتطلب علامة --privileged
  2. تمت إضافة رابط إلى دليل الفيديو باللغة الروسية: youtube.be/A8zvrHsT9A0

المصدر: www.habr.com

إضافة تعليق