Zindua OpenVPN kwenye Docker katika sekunde 2

Halo, wakazi wa Khabrovsk! Je, umewahi kukutana na hali wakati ulitaka kusafirishwa hadi jiji lingine, nchi au bara lingine? Nina hitaji hili mara nyingi, kwa hivyo nafasi ya kuwa na seva yangu ya VPN, ambayo inaweza kuzinduliwa mahali popote, kwa sekunde chache, ilikuwa ya haraka sana. Katika nakala hii nataka kuzungumza juu ya mradi wangu, ambao nilichukua nilipokuwa. kutafuta suluhisho tayari, katika kesi hii Docker picha ambayo itakuruhusu kusanidi haraka seva ya OpenVPN, na kiwango cha chini cha mipangilio na kiwango cha usalama kinachokubalika.

Zindua OpenVPN kwenye Docker katika sekunde 2

kabla ya historia

Uwezo wa kuendesha huduma kwenye mashine yoyote - iwe seva halisi, au seva pepe ya kibinafsi, au hata nafasi ya kontena ndani ya mfumo mwingine wa usimamizi wa kontena - ulikuwa muhimu. Macho yangu mara moja yalimwangukia Docker. Kwanza, huduma hii inapata umaarufu, na kwa hiyo watoa huduma zaidi na zaidi wanatoa ufumbuzi tayari na ufungaji wake wa awali; pili, kuna hifadhi ya kati ya picha kutoka ambapo unaweza kupakua na kuendesha huduma kwa kutumia amri moja kwenye terminal. Wazo kwamba mradi kama huo unapaswa kuwepo tayari ulinijia na nilitafuta sana. Lakini miradi mingi ambayo niliipata ilikuwa ngumu sana (ilibidi utengeneze kontena kwa uhifadhi wa data wa kudumu na kuzindua chombo na programu mara kadhaa na vigezo tofauti), au bila hati nzuri, au kutelekezwa kabisa. , nilianza kazi kwenye mradi wako. Kulikuwa na usiku wa kukosa usingizi kabla ya kusoma uhifadhi, kuandika msimbo na utatuzi, lakini hatimaye huduma yangu iliona mwanga wa mchana na ikaanza kumeta kwa rangi zote za paneli ya LED ya monochrome ya kipanga njia. Kwa hivyo, ninakuuliza upende na upendeleo - Docker-OpenVPN. Hata nilikuja na nembo (hapo juu, kabla ya kukatwa), lakini usiihukumu kwa ukali, kwa sababu mimi si mbunifu (tena) Nilipotekeleza mradi huu, nilitanguliza kasi ya kupeleka, kiwango cha chini cha mipangilio na kiwango kinachokubalika cha usalama. Kupitia majaribio na makosa, nilipata uwiano bora wa vigezo hivi, hata hivyo, katika baadhi ya maeneo ilibidi nitoe kasi ya kupeleka kwa ajili ya usalama, na ilinibidi kulipa kwa ajili ya kubebeka kwa kiwango cha chini cha mipangilio: katika usanidi wa sasa, a. chombo kilichoundwa kwenye seva moja hakiwezi kuhamishwa na kuzinduliwa kwenye seva nyingine. Kwa mfano, vyeti vyote vya mteja na seva huzalishwa wakati huduma inapoanza na hii itachukua kama sekunde 2. Walakini, uundaji wa faili ya Hellman Defi ilibidi uchukuliwe wakati wa ujenzi: huundwa wakati wa ujenzi wa picha ya kizimbani na inaweza kudumu hadi dakika 10. Ningependa sana kupokea ukaguzi wa usalama wa suluhisho kama hilo kutoka kwa jamii inayoheshimika.

Uzindua

Ili kuanza huduma tunahitaji mambo kadhaa:

  1. Seva: kimwili au kipeperushi. Kinadharia inawezekana kukimbia katika hali ya docker-ndani ya docker, lakini sijajaribu sana chaguo hili;
  2. Kweli Docker. Watoa huduma wengi wa mwenyeji hutoa suluhisho zilizotengenezwa tayari na Docker kwenye ubao;
  3. Anwani ya IP ya umma.

Ikiwa maelezo yote yapo, basi tunachopaswa kufanya ni kutekeleza amri ifuatayo kwenye koni ya seva yako:

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

Msomaji makini anaweza kuwa amegundua kuwa anwani ya IP ya seva imedhamiriwa kwa kutumia kiotomatiki ipify.org. Ikiwa kwa sababu fulani hii haifanyi kazi, basi unaweza kutaja anwani kwa mikono. Ikiwa hatua zote za awali zilikamilishwa kwa usahihi, basi tunapaswa kuona kitu sawa katika console:

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!

Tuko karibu na lengo: sasa tunahitaji kunakili example.com (kwa upande wako itakuwa anwani ya seva yako) na ubandike kwenye upau wa anwani wa kivinjari chako. Baada ya kushinikiza Ingiza, faili ya mteja.ovpn itapakuliwa, na seva ya http yenyewe itatoweka bila kusahaulika. Ikiwa suluhisho hili lina shaka, unaweza kutumia hila ifuatayo: kukimbia amri ya awali na kuongeza bendera zp na nenosiri. Sasa, ukibandika kiungo kilichoundwa kwenye dirisha la kivinjari, utapokea kumbukumbu ya zip yenye nenosiri. Pindi tu unapokuwa na faili ya usanidi ya mteja, unaweza kutumia mteja wowote unaofaa. Ninatumia Tunnelblick kwa Mac.

Mafunzo ya video

Mafunzo haya ya video yana maagizo ya kina ya kupeleka huduma kwenye DigitalOcean.

PS Iwapo unaona mradi huu kuwa muhimu, tafadhali upe nyota kwenye GitHub, uma na uwaambie marafiki zako. Wachangiaji na ukaguzi wa usalama pia wanakaribishwa sana.PPS Ikiwa makala hii itaishia kwa Habr, basi ninapanga kuandika ijayo kuhusu jinsi nilivyozindua docker-in-docker na docker-in-docker-in-docker, kwa nini nilifanya hivyo na kile kilichotoka ndani yake.
EDIT1:

  1. Makosa yaliyosahihishwa katika uchapishaji,
  2. Kujibu maoni, niliamua kuweka habari hii hapa: -bendera ya upendeleo inahitajika kufanya kazi na iptables.

EDIT2:

  1. Amri ya uzinduzi wa picha imeboreshwa: sasa haihitaji bendera ya -privileged
  2. Imeongeza kiungo kwa mwongozo wa video wa lugha ya Kirusi: youtube.be/A8zvrHsT9A0

Chanzo: mapenzi.com

Kuongeza maoni