Tere, Habr'ite! Olenud olete kunagi sattunud olukorda, kus on väga soov olnud virtuaalselt teise linna, riiki või isegi teisele kontinendile reisida? Mul on selline vajadus sageli, seega on minu jaoks väga oluline omada VPN-serverit, mida saab sekundite jooksul igal pool üles tõsta. Selles artiklis tahan rääkida oma projektist, mille mõtlesin välja, kui otsisin töötavat lahendust, antud juhul Docker'i pilti, mis võimaldaks kiiresti üles tõsta OpenVPN serverit minimaalse seadistuse ja vastuvõetava turvalisusega.
Eelalugu
Võime teenust igasugustes seadmetes käivitada: olgu need füüsilised serverid, virtuaalsed privaatserverid või isegi konteineriruum teise konteinerihaldussüsteemi sees — see oli kriitilise tähtsusega. Minu pilk suundus kohe Dockerile. Esiteks, see teenus on üha populaarsem ja seega pakuvad järjest rohkem teenusepakkujad eelnevalt installitud lahendusi; teiseks — on tsentraliseeritud piltide hoidla, kust saab alla laadida ja teenuse käivitada ühe käsuga terminalis. Mõte, et selline projekt peaks juba eksisteerima, käis mul peas ja ma otsisin innukalt. Kuid enamik projekte, mida ma leidsin, olid kas liiga mahukad (pidin looma konteineri püsiva andmete salvestamise jaoks ja mitu korda käivitama konteineri rakendusega erinevate parameetritega), või polnud neil korralikku dokumentatsiooni, või olid nad hoopis mahajäetud. Kuna ma ei leidnud midagi vastuvõetavat, alustin oma projekti kallal töötama. Ees ootasid unetuks ööd dokumentatsiooni uurimisel, koodi kirjutamisel ja tõrgete otsimisel, kuid lõpuks nägi minu teenus valguse ning kostis kõikide monokroomsete LED-paneeli värvidega ruuteri peal. Nii et palun tervitada ja toetada — . Olen isegi loonud logo (ülespool, enne katet), aga ärge tõsiselt võtke, sest ma ei ole disainer (veel). Selle projekti elluviimisel seadsin esikohale juurutamise kiiruse, minimaalsete seadistuste ja vastuvõetava turvalisuse taseme. Katsede ja eksimiste kaudu leidsin nende kriteeriumide optimaalset tasakaalu, kuigi kohati tuli ohverdada juurutamise kiirus turvalisuse nimel, ning minimaalsete seadistuste saavutamise nimel tuli maksta portatiivsusega: praeguses konfiguratsioonis ei saa ühes serveris loodud konteinerit teisele üle kanda ja käivitada. Näiteks genereeritakse kõik kliendi- ja serverisertifikaadid teenuse käivitamisel ja see võtab aega umbes 2 sekundit. Siiski tuli Defi-Hellmani faili genereerimine viia välja ehitamise aega: see luuakse dokkeri pildi koostamise ajal ja võib kesta kuni 10 minutit. Ma sooviksin väga saada sarnase lahenduse turvaprotsessi ülevaadet austatud kogukonnalt.
Käivita
Teenuse käivitamiseks on meil vaja mõningaid asju:
- Server: füüsiline või virtuaalne. Teoreetiliselt saab käivitada ka docker-i-dockeris, kuid ma ei ole selle valiku ulatuslikku testimist teinud;
- Tegelikult Docker. Paljud hostinguteenuse pakkujad pakuvad Dockeriga valmis lahendusi;
- Avalik IP-aadress.
Kui kõik andmed on kohal, siis jääb meil ainult käivitada järgmine käsk oma serveri konsoolis:
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/openvpnHoolikas lugeja on võinud märgata, et serveri IP-aadress määratakse automaatselt kasutades ipify.org. Kui see mingil põhjusel ei toimi, saate aadressi käsitsi sisestada. Kui kõik eelnevad sammud on õigesti tehtud, peaksime nägema konsoolis midagi sarnast:
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!Oleme eesmärgile lähedal: nüüd peame kopeerima (teie puhul on see teie serveri aadress) ja sisestage see brauseri aadressiriba. Pärast Enteri vajutamist laaditakse client.ovpn fail alla ja http server kõrvaldatakse. Kui see lahendus tekitab kahtlusi, siis võib kasutada järgmist trikki: käivitada eelmine käsk ja lisada lipud. zp ja parool. Nüüd, kui sisestate genereeritud lingi brauseri aknasse, saate parooliga zip-arhiivi. Kui teil on kliendi konfigureerimisfail, võite kasutada ükskõik millist sobivat klienti. Mina kasutan Tunnelblicki Maci jaoks.
Videoõpetus
See videoõpetus sisaldab põhjalikku juhendit teenuse seadistamiseks DigitalOceanis.

EDIT1:
- Parandasin väljaandes vigu,
- Kommentaaridele vastates otsustasin selle teabe siia välja tuua: lipp —privileged on vajalik iptables'iga töötamiseks.
EDIT2:
- Tõstsin konteineri käivitamise käsku: nüüd ei vaja see lippu —privileged.
- Lisatud link vene keeles video juhendile:
Allikas: habr.com
