2 секундта Docker жүйесінде OpenVPN іске қосыңыз

Сәлем, Хабаровск қаласының тұрғындары! Сіз шынымен басқа қалаға, елге немесе континентке іс жүзінде тасымалданғыңыз келетін жағдайға тап болдыңыз ба? Менде мұндай қажеттілік жиі туындайды, сондықтан кез келген жерде, бір-екі секунд ішінде іске қосылуға болатын жеке VPN серверіне ие болу мүмкіндігі өте маңызды болды.Бұл мақалада мен өзімнің жас кезімде ойластырған жобам туралы айтқым келеді. дайын шешімді іздейді, бұл жағдайда Docker ең аз параметрлермен және қолайлы қауіпсіздік деңгейімен OpenVPN серверін жылдам орнатуға мүмкіндік беретін кескін.

2 секундта Docker жүйесінде OpenVPN іске қосыңыз

тарихын

Қызметті кез келген құрылғыда іске қосу мүмкіндігі - бұл физикалық сервер немесе виртуалды жеке сервер, тіпті басқа контейнерлерді басқару жүйесінің ішіндегі контейнер кеңістігі - өте маңызды болды. Менің көзқарасым бірден Докерге түсті. Біріншіден, бұл қызмет танымал болуда, сондықтан көбірек провайдерлер оны алдын ала орнату арқылы дайын шешімдерді ұсынады; екіншіден, терминалдағы бір пәрмен арқылы қызметті жүктеп алуға және іске қосуға болатын кескіндердің орталықтандырылған қоймасы бар. Мұндай жоба бұрыннан бар болуы керек деген ой маған келіп, көп іздендім. Бірақ мен тапқан жобалардың көпшілігі не тым ауыр болды (сіз деректерді тұрақты сақтауға арналған контейнер жасап, контейнерді әртүрлі параметрлері бар қолданбамен бірнеше рет іске қосуға тура келді) немесе ақылға қонымды құжатсыз немесе толығымен тасталды. Қолайлы ештеңе таппадым. , Мен сіздің жобаңызбен жұмысты бастадым. Құжаттаманы оқу, код жазу және жөндеу жұмыстарының алдында ұйқысыз түндер болды, бірақ сайып келгенде, менің қызметім күннің жарығын көрді және маршрутизатордың монохромды жарықдиодты панелінің барлық түстерімен жарқырай бастады. Сонымен, мен сізден сүйіспеншілік пен мейірімділік сұраймын - Docker-OpenVPN. Мен тіпті логотип ойлап таптым (жоғарыда, кесуге дейін), бірақ оны қатаң бағаламаңыз, өйткені мен дизайнер емеспін (енді) Мен бұл жобаны жүзеге асырған кезде, мен орналастыру жылдамдығына басымдық бердім, ең аз дегенде параметрлері және қауіпсіздіктің қолайлы деңгейі. Сынақ пен қателік арқылы мен осы критерийлердің оңтайлы теңгерімін таптым, дегенмен кейбір жерлерде қауіпсіздік үшін орналастыру жылдамдығын құрбан етуге тура келді және ең аз параметрлер үшін портативтілік үшін төлеуге тура келді: ағымдағы конфигурацияда, бір серверде жасалған контейнерді басқа серверде тасымалдау және іске қосу мүмкін емес. Мысалы, барлық клиент және сервер сертификаттары қызмет басталған кезде жасалады және бұл шамамен 2 секундты алады. Дегенмен, Hellman Defi файлының генерациясын құрастыру уақытында қабылдау керек болды: ол докер кескінін құрастыру кезінде жасалады және 10 минутқа дейін созылуы мүмкін. Мен құрметті қауымдастықтан осындай шешімнің қауіпсіздік аудитін алғым келеді.

Запуск

Қызметті бастау үшін бізге бірнеше нәрсе қажет:

  1. Сервер: физикалық немесе виртуалды. Теориялық тұрғыдан docker-within-docker режимінде жұмыс істеуге болады, бірақ мен бұл опцияны кеңінен тексерген жоқпын;
  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 және пароль. Енді жасалған сілтемені браузер терезесіне қойсаңыз, сіз құпия сөзбен zip мұрағатын аласыз.Клиент конфигурация файлы болғаннан кейін кез келген қолайлы клиентті пайдалана аласыз. Мен Mac жүйесіне арналған Tunnelblick қолданамын.

Бейне оқу құралы

Бұл бейне оқулық DigitalOcean жүйесінде қызметті қолдану бойынша толық нұсқауларды қамтиды.

PS Егер сіз бұл жобаны пайдалы деп тапсаңыз, оған GitHub-да жұлдызша беріңіз, оны айырыңыз және достарыңызға айтыңыз. Қатысушылар мен қауіпсіздік аудиті де кеңінен құпталады.PPS Егер бұл мақала Habr сайтында аяқталса, мен келесі мақаланы қалай іске қосқаным туралы жазуды жоспарлап отырмын.
EDIT1:

  1. Жарияланымдағы түзетілген қателер,
  2. Түсініктемелерге жауап бере отырып, мен бұл ақпаратты осында қоюды шештім: iptables-пен жұмыс істеу үшін артықшылықты жалау қажет

EDIT2:

  1. Кескінді іске қосу пәрмені жақсартылды: енді ол артықшылықты жалаушаны қажет етпейді
  2. Орыс тіліндегі бейне нұсқаулыққа сілтеме қосылды: youtu.be/A8zvrHsT9A0

Ақпарат көзі: www.habr.com

пікір қалдыру