Nisni OpenVPN në Docker në 2 sekonda

Përshëndetje, banorë të Khabrovsk! A keni hasur ndonjëherë në një situatë kur keni dashur vërtet të transportoheshit në një qytet, vend apo kontinent tjetër? Unë e kam këtë nevojë mjaft shpesh, kështu që mundësia për të pasur serverin tim VPN, i cili mund të lançohet kudo, në disa sekonda, ishte mjaft urgjente. Në këtë artikull dua të flas për projektin tim, të cilin e konceptova kur isha duke kërkuar një zgjidhje të gatshme, në këtë rast Docker një imazh që do t'ju lejojë të konfiguroni shpejt një server OpenVPN, me një minimum cilësimesh dhe një nivel të pranueshëm sigurie.

Nisni OpenVPN në Docker në 2 sekonda

parahistorinë

Aftësia për të ekzekutuar shërbimin në çdo makinë - qoftë ai një server fizik, ose një server privat virtual, apo edhe një hapësirë ​​kontejneri brenda një sistemi tjetër të menaxhimit të kontejnerëve - ishte kritike. Vështrimi im ra menjëherë mbi Docker. Së pari, ky shërbim po fiton popullaritet, dhe për këtë arsye gjithnjë e më shumë ofrues po ofrojnë zgjidhje të gatshme me instalimin e tij paraprak; së dyti, ekziston një ruajtje e centralizuar e imazheve nga ku mund të shkarkoni dhe ekzekutoni shërbimin duke përdorur një komandë në terminal. Ideja që një projekt i tillë duhet të ekzistonte tashmë më lindi dhe kërkova shumë. Por shumica e projekteve që gjeta ishin ose shumë të rënda (duhej të krijonit një kontejner për ruajtjen e përhershme të të dhënave dhe të nisni kontejnerin me aplikacionin disa herë me parametra të ndryshëm), ose pa dokumentacion të arsyeshëm, ose të braktisura plotësisht. Duke mos gjetur asgjë të pranueshme , fillova punën për projektin tuaj. Kishte netë pa gjumë përpara studimit të dokumentacionit, shkrimit të kodit dhe korrigjimit, por në fund shërbimi im pa dritën e ditës dhe filloi të shkëlqejë me të gjitha ngjyrat e panelit LED monokrom të ruterit. Pra, unë ju kërkoj të doni dhe favorizoni - Docker-OpenVPN. Madje kam ardhur me një logo (sipër, para prerjes), por mos e gjykoni rreptësisht, sepse nuk jam më projektues (më).Kur zbatova këtë projekt, i dhashë përparësi shpejtësisë së vendosjes, minimumi cilësimet dhe një nivel të pranueshëm sigurie. Përmes provës dhe gabimit, gjeta ekuilibrin optimal të këtyre kritereve, megjithatë, në disa vende më duhej të sakrifikoja shpejtësinë e vendosjes për hir të sigurisë dhe më duhej të paguaja për transportueshmëri për një minimum cilësimesh: në konfigurimin aktual, një kontejneri i krijuar një herë në një server nuk mund të transferohet dhe lëshohet në një tjetër. Për shembull, të gjitha certifikatat e klientit dhe serverit krijohen kur shërbimi fillon dhe kjo do të zgjasë rreth 2 sekonda. Sidoqoftë, gjenerimi i skedarit Hellman Defi duhej të merrej në kohën e ndërtimit: ai krijohet gjatë ndërtimit të imazhit të dokerit dhe mund të zgjasë deri në 10 minuta. Unë me të vërtetë do të doja të merrja një auditim sigurie të një zgjidhjeje të tillë nga komuniteti i respektuar.

lëshim

Për të filluar shërbimin na duhen disa gjëra:

  1. Serveri: fizik ose virtual. Teorikisht është e mundur të ekzekutohet në modalitetin docker-in-docker, por unë nuk e kam testuar gjerësisht këtë opsion;
  2. Në fakt Docker. Shumë ofrues të pritjes ofrojnë zgjidhje të gatshme me Docker në bord;
  3. Adresa IP publike.

Nëse të gjitha detajet janë në vend, atëherë gjithçka që duhet të bëjmë është të ekzekutojmë komandën e mëposhtme në tastierën e serverit tuaj:

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

Një lexues i vëmendshëm mund të ketë vënë re se adresa IP e serverit përcaktohet automatikisht duke përdorur ipify.org. Nëse për ndonjë arsye kjo nuk funksionon, atëherë mund të specifikoni adresën me dorë. Nëse të gjithë hapat e mëparshëm janë kryer si duhet, atëherë duhet të shohim diçka të ngjashme në tastierë:

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!

Jemi afër qëllimit: tani duhet të kopjojmë example.com (në rastin tuaj do të jetë adresa e serverit tuaj) dhe ngjisni atë në shiritin e adresave të shfletuesit tuaj. Pasi të shtypni Enter, skedari client.ovpn do të shkarkohet dhe vetë serveri http do të zhduket në harresë. Nëse kjo zgjidhje është në dyshim, mund të përdorni trukun e mëposhtëm: ekzekutoni komandën e mëparshme dhe shtoni flamuj zp dhe fjalëkalimin. Tani, nëse ngjisni lidhjen e krijuar në një dritare të shfletuesit, do të merrni një arkiv zip me një fjalëkalim. Pasi të keni një skedar konfigurimi të klientit, mund të përdorni çdo klient të përshtatshëm. Unë përdor Tunnelblick për Mac.

Video tutorial

Ky video tutorial përmban udhëzime të hollësishme për vendosjen e shërbimit në DigitalOcean.

PS Nëse ju duket i dobishëm ky projekt, ju lutemi jepni një yll në GitHub, ndani atë dhe tregojuni miqve tuaj. Kontribuesit dhe auditimet e sigurisë janë gjithashtu të mirëpritur gjerësisht.PPS Nëse ky artikull përfundon në Habr, atëherë planifikoj të shkruaj artikullin tjetër se si lançova docker-in-docker dhe docker-in-docker-in-docker, pse e bëra atë dhe çfarë doli prej tij.
EDIT1:

  1. Gabimet e korrigjuara në publikim,
  2. Duke iu përgjigjur komenteve, vendosa të vendos këtë informacion këtu: —flamuri i privilegjuar është i nevojshëm për të punuar me iptables

EDIT2:

  1. Përmirësoi komandën e nisjes së imazhit: tani nuk kërkon flamurin e privilegjuar
  2. U shtua një lidhje në udhëzuesin e videos në gjuhën ruse: youtu.be/A8zvrHsT9A0

Burimi: www.habr.com

Shto një koment