2 soniyada Docker-da OpenVPN-ni ishga tushiring

Salom, Xabrovsk aholisi! Siz haqiqatan ham boshqa shaharga, mamlakatga yoki qit'aga olib ketishni xohlagan vaziyatga duch kelganmisiz? Menga bunday ehtiyoj tez-tez uchrab turadi, shuning uchun bir necha soniya ichida istalgan joyda ishga tushirilishi mumkin bo'lgan o'z VPN serverimga ega bo'lish imkoniyati juda muhim edi.Ushbu maqolada men o'zimning loyiham haqida gapirmoqchiman, u yoshligimda o'ylab topdim. tayyor yechimni qidirsangiz, bu holda Docker sizga minimal sozlamalar va qabul qilinadigan xavfsizlik darajasi bilan OpenVPN serverini tezda o'rnatishga imkon beradigan tasvirdir.

2 soniyada Docker-da OpenVPN-ni ishga tushiring

Sana oldin

Xizmatni istalgan mashinada ishga tushirish qobiliyati - xoh u jismoniy server, xoh virtual shaxsiy server, xoh boshqa konteyner boshqaruv tizimi ichidagi konteyner maydoni - juda muhim edi. Mening nigohim darhol Dokerga tushdi. Birinchidan, ushbu xizmat mashhurlik kasb etmoqda va shuning uchun tobora ko'proq provayderlar uni oldindan o'rnatish bilan tayyor echimlarni taklif qilmoqdalar; ikkinchidan, terminalda bitta buyruq yordamida xizmatni yuklab olishingiz va ishga tushirishingiz mumkin bo'lgan tasvirlarni markazlashtirilgan saqlash mavjud. Bunday loyiha allaqachon mavjud bo'lishi kerak degan fikr xayolimga keldi va men qattiq izladim. Lekin men topgan loyihalarning aksariyati yo juda og'ir edi (doimiy ma'lumotlarni saqlash uchun konteyner yaratishingiz va konteynerni turli parametrlarga ega bo'lgan ilova bilan bir necha marta ishga tushirishingiz kerak edi) yoki aqli raso hujjatlarsiz yoki butunlay tashlab qo'yilgan. Qabul qilinadigan hech narsa topilmadi. , loyihangiz ustida ish boshladim. Hujjatlarni o'rganish, kod yozish va disk raskadrovka qilishdan oldin uyqusiz tunlar bor edi, lekin oxir-oqibat mening xizmatim kun yorug'ligini ko'rdi va yo'riqnoma monoxrom LED panelining barcha ranglari bilan porlay boshladi. Shunday qilib, men sizni sevishingizni va iltifot qilishingizni so'rayman - Docker-OpenVPN. Men hatto logotip (yuqorida, kesishdan oldin) o'ylab topdim, lekin uni qat'iy baholamang, chunki men dizayner emasman (endi) Men ushbu loyihani amalga oshirganimda, men joylashtirish tezligini birinchi o'ringa qo'ydim, minimal sozlamalar va qabul qilinadigan xavfsizlik darajasi. Sinov va xato orqali men ushbu mezonlarning optimal muvozanatini topdim, ammo ba'zi joylarda xavfsizlik uchun tarqatish tezligini qurbon qilishim kerak edi va minimal sozlamalar uchun portativlik uchun to'lashim kerak edi: joriy konfiguratsiyada Bir serverda yaratilgan konteynerni boshqa serverga oβ€˜tkazib, ishga tushirib boβ€˜lmaydi. Masalan, barcha mijoz va server sertifikatlari xizmat ishga tushganda yaratiladi va bu taxminan 2 soniya davom etadi. Biroq, Hellman Defi faylining generatsiyasi qurilish vaqtiga to'g'ri keldi: u docker tasvirini yaratish paytida yaratiladi va 10 daqiqagacha davom etishi mumkin. Men hurmatli hamjamiyatdan bunday yechimning xavfsizlik auditini olishni juda xohlayman.

Ishga tushish

Xizmatni boshlash uchun bizga bir nechta narsa kerak:

  1. Server: jismoniy yoki virtual. Docker-within-docker rejimida ishlash nazariy jihatdan mumkin, lekin men bu variantni keng ko'lamda sinab ko'rmadim;
  2. Aslida Docker. Ko'pgina hosting provayderlari bortida Docker bilan tayyor echimlarni taqdim etadi;
  3. Umumiy IP manzili.

Agar barcha tafsilotlar joyida bo'lsa, serveringiz konsolida quyidagi buyruqni bajarishimiz kerak:

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

Ehtiyotkor o'quvchi server IP-manzilini avtomatik ravishda aniqlashni payqagan bo'lishi mumkin ipify.org. Agar biron sababga ko'ra bu ishlamasa, manzilni qo'lda ko'rsatishingiz mumkin.Agar oldingi barcha qadamlar to'g'ri bajarilgan bo'lsa, konsolda shunga o'xshash narsani ko'rishimiz kerak:

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!

Maqsadga yaqinmiz: endi nusxa olishimiz kerak example.com (sizning holingizda bu sizning serveringiz manzili bo'ladi) va uni brauzeringizning manzil satriga joylashtiring. Enter tugmasini bosganingizdan so'ng, client.ovpn fayli yuklab olinadi va http serverining o'zi unutilib ketadi. Agar ushbu yechim shubhali bo'lsa, siz quyidagi hiyladan foydalanishingiz mumkin: oldingi buyruqni ishga tushiring va bayroqlarni qo'shing zp va parol. Endi, yaratilgan havolani brauzer oynasiga joylashtirsangiz, parol bilan zip arxivini olasiz.Mijoz konfiguratsiya fayliga ega bo'lgach, istalgan mos mijozdan foydalanishingiz mumkin. Men Mac uchun Tunnelblick-dan foydalanaman.

Video darslik

Ushbu video darslikda DigitalOcean-da xizmatni o'rnatish bo'yicha batafsil ko'rsatmalar mavjud.

PS Agar siz ushbu loyihani foydali deb bilsangiz, iltimos, unga GitHub-da yulduzcha bering, uni bog'lang va do'stlaringizga ayting. Ishtirokchilar va xavfsizlik tekshiruvlari ham keng ma'qullanadi.PPS Agar ushbu maqola Habrda tugasa, men docker-in-docker va docker-in-docker-in-dockerni qanday ishga tushirganim, nima uchun buni qilganim va undan nima chiqqanligim haqida keyingi maqolani yozishni rejalashtirmoqdaman.
EDIT1:

  1. Nashrda tuzatilgan xatolar,
  2. Izohlarga javob berib, men ushbu ma'lumotni bu erga qo'yishga qaror qildim: iptables bilan ishlash uchun -imtiyozli bayroq kerak

EDIT2:

  1. Tasvirni ishga tushirish buyrug'i yaxshilandi: endi u - imtiyozli bayroqni talab qilmaydi
  2. Rus tilidagi video qo'llanmaga havola qo'shildi: youtu.be/A8zvrHsT9A0

Manba: www.habr.com

a Izoh qo'shish