مرحبا يا هابروفسك المواطنين! هل واجهت يومًا موقفًا تريد فيه السفر فعليًا إلى مدينة أو دولة أخرى أو إلى قارة أخرى؟ أحتاج إلى مثل هذه الحاجة في كثير من الأحيان ، لذا كان احتمال وجود خادم VPN خاص بي يمكن تشغيله في أي مكان في بضع ثوان حاد للغاية. في هذه المقالة أريد أن أتحدث عن مشروعي ، الذي خططت له عندما كنت أبحث عن حل جاهز ، في هذه الحالة ، عامل ميناء صورة تتيح لك رفع خادم OpenVPN بسرعة ، مع الحد الأدنى من الإعدادات ومستوى مقبول من الأمان.
قبل التاريخ
كانت القدرة على تشغيل الخدمة على أي جهاز: سواء كان خادمًا فعليًا أو خادمًا خاصًا افتراضيًا ، أو بشكل عام ، مساحة الحاوية داخل نظام إدارة حاوية آخر - أمرًا بالغ الأهمية. سقطت نظري على الفور على عامل الميناء. أولاً ، تكتسب هذه الخدمة شعبية ، وبالتالي ، يوفر المزيد والمزيد من موفري الحلول الجاهزة مع التثبيت المسبق ؛ ثانياً - يوجد مستودع مركزي للصور ، يمكنك من خلاله تنزيل وبدء الخدمة باستخدام أمر واحد في الجهاز. زارتني فكرة وجود مثل هذا المشروع بالفعل ، وقمت بالبحث باستمرار. لكن معظم المشاريع التي وجدتها كانت إما مرهقة للغاية (كان من الضروري إنشاء حاوية للتخزين الدائم للبيانات وتشغيل الحاوية عدة مرات باستخدام تطبيق ذي معلمات مختلفة) ، إما بدون وثائق عقلانية أو مهجورة تمامًا. اعمل على مشروعك قبل ذلك ، كانت الليالي بلا نوم من دراسة الوثائق وكتابة التعليمات البرمجية وتصحيح الأخطاء ، ولكن في النهاية ، رأيت خدمتي الضوء وتشغيلها بجميع ألوان لوحة LED أحادية اللون لجهاز التوجيه. لذا ، يرجى الحب
والفضل -
Docker-OpenVPN . حتى أنني توصلت إلى شعار (أعلاه ، أمام القطع) ، لكن لا أحكم عليه بصرامة ، لأنني لست مصممًا (بالفعل) ، فعندما قمت بتنفيذ هذا المشروع ، ركزت على سرعة النشر والحد الأدنى من الإعدادات ومستوى الأمان المقبول. بالتجربة والخطأ ، وجدت التوازن الأمثل لهذه المعايير ، ومع ذلك ، كان علي في بعض الأماكن التضحية بسرعة النشر من أجل الأمان ، واضطررت إلى دفع قابلية نقل الحد الأدنى من الإعدادات: في التكوين الحالي ، لا يمكن نقل الحاوية بمجرد إنشائها على خادم واحد وتشغيلها على خادم آخر. على سبيل المثال ، يتم إنشاء جميع شهادات العميل والخادم عند بدء تشغيل الخدمة ويستغرق ذلك حوالي ثانيتين. ومع ذلك ، كان لابد من إخراج ملف Defi Hellman في وقت البناء: تم إنشاؤه أثناء إنشاء صورة عامل الميناء ويمكن أن يستمر حتى 10 دقائق. أود الحصول على مراجعة أمنية لمثل هذا الحل من مجتمع محترم.
إطلاق
لبدء الخدمة ، نحتاج إلى بعض الأشياء:
- الخادم: المادية أو الافتراضية. من الناحية النظرية ، يمكنك تشغيل وضع الإرساء ، ولكن لم أقم بإجراء اختبار مكثف لهذا الخيار ؛
- في الواقع عامل ميناء. يوفر العديد من مزودي الاستضافة حلولًا جاهزة مع Docker "على متن الطائرة" ؛
- عنوان 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:- الأخطاء التي تم تصحيحها في المنشور ،
- استجابة للتعليقات ، قررت أن أضع هذه المعلومات هنا: - العلم المطلوب ضروري للعمل مع iptables
EDIT2:- أمر تشغيل صورة محسّن: الآن لا يتطلب الأمر العلم المميز
- تمت إضافة رابط إلى دليل الفيديو باللغة الروسية: youtu.be/A8zvrHsT9A0