شغّل OpenVPN في Docker خلال ثانيتين

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


قبل التاريخ

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

إطلاق

لبدء الخدمة ، نحتاج إلى بعض الأشياء:
  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. ملاحظة: إذا وجدت هذا المشروع مفيدًا ، فيرجى إعطائه علامة نجمية على GitHub وشوكة وإخبار أصدقائك. المساهمون ومراجعات الأمن هي أيضا موضع ترحيب على نطاق واسع. إذا كان هذا المقال على Habr ، فأنا أخطط لكتابة ما يلي حول كيفية إطلاق docker-in-doer و docker-do-do-doer-do-doer ، لما فعلته وماذا جاء منه.
EDIT1:
  1. الأخطاء التي تم تصحيحها في المنشور ،
  2. استجابة للتعليقات ، قررت أن أضع هذه المعلومات هنا: - العلم المطلوب ضروري للعمل مع iptables

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

Source: https://habr.com/ru/post/ar458606/


All Articles