Lanciate OpenVPN in Docker in 2 seconde

Hola, residenti di Khabrovsk! Avete mai scontru una situazione quandu vulete veramente esse trasportatu praticamente in un'altra cità, paese o cuntinente? Aghju avutu questu bisognu à spessu, cusì l'uppurtunità di avè u mo servitore VPN, chì pò esse lanciatu in ogni locu, in un paru di sicondi, era abbastanza urgente In questu articulu vogliu parlà di u mo prughjettu, chì aghju cuncipitu quandu era cerchendu una suluzione pronta, in questu casu Docker una maghjina chì vi permettenu di stallà rapidamente un servitore OpenVPN, cù un minimu di paràmetri è un livellu di sicurità accettabile.

Lanciate OpenVPN in Docker in 2 seconde

Pristoria

A capacità di eseguisce u serviziu in ogni macchina - sia un servitore fisicu, o un servitore privatu virtuale, o ancu un spaziu di cuntainer in un altru sistema di gestione di container - era critica. U mo sguardu hè cascatu subitu nantu à Docker. Prima, stu serviziu hè guadagnatu pupularità, è dunque più è più fornituri furniscenu suluzioni pronti cù a so pre-installazione; siconda, ci hè un almacenamentu centralizatu di l'imaghjini da induve pudete scaricà è eseguisce u serviziu cù un cumandamentu in u terminal. L'idea chì un tali prughjettu duveria esse digià ghjuntu à mè è aghju cercatu duramente. Ma a maiò parte di i prughjetti ch'e aghju trovu o troppu ingombranti (aviu avutu à creà un cuntinuu per l'almacenamiento di dati permanente è lancià u cuntinuu cù l'applicazione parechje volte cù diversi paràmetri), o senza documentazione sana, o completamente abbandunatu. Ùn truvate nunda accettabile. , Aghju cuminciatu à travaglià nantu à u vostru prughjettu. Ci sò stati notti senza dorme davanti à studià a documentazione, scrive codice è debugging, ma in fine u mo serviziu hà vistu a luce di u ghjornu è hà cuminciatu à sparkle cù tutti i culori di u pannellu LED monocromu di u router. Allora, vi dumandu d'amare è favurizà - Docker-OpenVPN. Aghju ancu ghjuntu cù un logu (sopra, prima di u cut), ma ùn ghjudicà micca strettu, perchè ùn sò micca un designer (più). Quandu aghju implementatu stu prughjettu, aghju priurità a rapidità di implementazione, un minimu di paràmetri è un livellu accettabile di sicurità. Per mezu di prova è errore, aghju trovu l'equilibriu ottimale di questi criterii, in ogni modu, in certi lochi, aghju avutu sacrificà a velocità di implementazione per a sicurità, è per u minimu di paràmetri aghju avutu pagà per a portabilità: in a cunfigurazione attuale, una cuntainer una volta creatu nantu à un servitore ùn pò esse trasferitu è ​​lanciatu in un altru. Per esempiu, tutti i certificati di u cliente è di u servitore sò generati quandu u serviziu principia è questu duverà circa 2 seconde. In ogni casu, a generazione di u schedariu Hellman Defi hà da esse pigliatu in u tempu di creazione: hè creatu durante a custruzzione di l'imaghjini docker è pò durà finu à 10 minuti. Mi piacerebbe veramente riceve un auditu di sicurità di una tale suluzione da a cumunità rispettata.

Lancia

Per inizià u serviziu, avemu bisognu di parechje cose:

  1. Servitore: fisicu o virtuale. Hè teoricamente pussibule di eseguisce in u modu docker-in-docker, ma ùn aghju micca assai pruvatu sta opzione;
  2. In fatti, Docker. Parechji fornituri d'ospiti furniscenu suluzioni pronti cù Docker à bordu;
  3. Indirizzu IP publicu.

Se tutti i dettagli sò in u locu, allora tuttu ciò chì avemu da fà hè di eseguisce u cumandimu seguitu in a cunsola di u vostru servitore:

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

Un lettore attentu puderia avè nutatu chì l'indirizzu IP di u servitore hè determinatu automaticamente utilizendu ipify.org. Se per una certa ragione questu ùn funziona micca, pudete specificà l'indirizzu manualmente.Se tutti i passi precedenti sò stati completati bè, allora duvemu vede qualcosa simili in a cunsola:

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!

Semu vicinu à u scopu: avà avemu bisognu di cupià example.com (in u vostru casu serà l'indirizzu di u vostru servitore) è incollà in a barra di indirizzu di u vostru navigatore. Dopu avè pressu Enter, u schedariu client.ovpn serà telecaricatu, è u servitore http stessu sparirà in l'obliu. Se sta suluzione hè in dubbitu, pudete aduprà u truccu seguente: eseguite u cumandamentu precedente è aghjunghje bandiere zp è password. Avà, se incolla u ligame generatu in una finestra di u navigatore, riceverete un archiviu zip cù una password Una volta avete un schedariu di cunfigurazione di u cliente, pudete aduprà qualsiasi cliente adattatu. Aduprà Tunnelblick per Mac.

Video tutoriale

Stu video tutoriale cuntene struzzioni dettagliate per implementà u serviziu in DigitalOcean.

PS Se trova stu prughjettu utile, per piacè dà una stella nantu à GitHub, fork it è dite à i vostri amichi. I cuntributori è l'auditi di sicurezza sò ancu assai accolti.PPS Se questu articulu finisci nantu à Habr, allora aghju pensatu à scrive u prossimu nantu à cumu aghju lanciatu docker-in-docker è docker-in-docker-in-docker, perchè l'aghju fattu è ciò chì hè surtitu.
EDIT1:

  1. Errori curretti in a publicazione,
  2. Rispondendu à i cumenti, aghju decisu di mette sta informazione quì: a bandiera —privileged hè necessaria per travaglià cù iptables.

EDIT2:

  1. Migliuratu u cumandamentu di lanciamentu di l'imaghjini: avà ùn hà micca bisognu di a bandiera -privileged
  2. Aggiuntu un ligame à a guida video in lingua russa: youtu.be/A8zvrHsT9A0

Source: www.habr.com

Add a comment