Begin OpenVPN in Docker binne 2 sekondes

Hallo, Khabrovites! Het jy al ooit in 'n situasie te staan ​​gekom waar jy regtig graag virtueel na 'n ander stad, land of kontinent vervoer wil word? Ek het gereeld so 'n behoefte, so die vermoë om my eie VPN-bediener te hê wat enige plek binne 'n paar sekondes geloods kan word, was nogal akuut. In hierdie artikel wil ek praat oor my projek, wat ek bedink het toe ek was op soek na 'n klaargemaakte oplossing, in hierdie geval 'n beeld wat jou sal toelaat om vinnig 'n OpenVPN-bediener te verhoog, met 'n minimum instellings en 'n aanvaarbare vlak van sekuriteit.

Begin OpenVPN in Docker binne 2 sekondes

voorgeskiedenis

Die vermoë om 'n diens op enige masjien te laat loop - hetsy 'n fisiese bediener, of 'n virtuele privaat bediener, of selfs houerspasie binne 'n ander houerbestuurstelsel - was van kritieke belang. My oë het dadelik op Docker geval. Eerstens word hierdie diens gewild, en daarom bied al hoe meer verskaffers klaargemaakte oplossings met die voorafinstallasie daarvan; tweedens is daar 'n gesentraliseerde bewaarplek van beelde vanwaar u die diens met 'n enkele opdrag in die terminaal kan aflaai en laat loop. Die gedagte dat so 'n projek reeds moet bestaan, het my besoek en ek het hard gesoek. Maar die meeste van die projekte wat ek gevind het, was óf te omslagtig (dit was nodig om 'n houer vir aanhoudende databerging te skep en die houer verskeie kere met die toepassing met verskillende parameters uit te voer), óf sonder sinvolle dokumentasie, óf heeltemal laat vaar. niks aanvaarbaar nie, ek het aan jou projek begin werk. Daar het slapelose nagte van dokumentasie bestudeer, kode skryf en ontfouting voorgelê, maar op die ou end het my diens die lig gesien en met al die kleure van die router se monochrome LED-paneel gespeel. So, ek vra jou om lief te hê en te begunstig - docker-openvpn. Ek het selfs met 'n logo vorendag gekom (bo, voor die snit), maar moenie dit streng beoordeel nie, want ek is nie 'n ontwerper (reeds nie). Toe ek hierdie projek geïmplementeer het, het ek ontplooiingspoed, 'n minimum instellings en 'n aanvaarbare vlak van sekuriteit op die voorgrond. Deur probeer en fout het ek die optimale balans van hierdie kriteria gevind, maar op sommige plekke moes ek ontplooiingspoed ter wille van sekuriteit opoffer, en oordraagbaarheid moes betaal word vir 'n minimum van instellings: in die huidige konfigurasie, sodra dit geskep is 'n houer op een bediener kan nie oorgedra word en op 'n ander loop nie. Byvoorbeeld, alle kliënt- en bedienersertifikate word gegenereer wanneer die diens begin word en dit neem ongeveer 2 sekondes. Die generasie van die Defi Hellman-lêer moes egter geskuif word om tyd te bou: dit word tydens die bou van die docker-beeld geskep en kan tot 10 minute neem. Ek sal baie graag 'n sekuriteitsoudit van so 'n oplossing van 'n hoogs gerespekteerde gemeenskap wil ontvang.

bekendstelling

Om die diens te begin, het ons 'n paar dinge nodig:

  1. Bediener: fisies of virtueel. Dit is teoreties moontlik om in docker-in-doker-modus te hardloop, maar ek het hierdie opsie nie breedvoerig getoets nie;
  2. Eintlik Docker. Baie gasheerverskaffers bied sleuteloplossings met Docker "aan boord";
  3. Openbare IP-adres.

As al die besonderhede in plek is, hoef ons net die volgende opdrag in die konsole van u bediener uit te voer:

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

'n Oplettende leser het dalk opgemerk dat die IP-adres van die bediener outomaties bepaal word deur ipify.org. As dit om een ​​of ander rede nie werk nie, dan kan jy die adres met die hand spesifiseer. As al die vorige stappe korrek uitgevoer is, sal ons iets soortgelyks in die konsole sien:

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!

Ons is naby die doelwit: nou moet ons kopieer example.com (in jou geval sal dit die adres van jou bediener wees) en plak dit in die adresbalk van die blaaier. Nadat jy Enter gedruk het, sal die client.ovpn-lêer afgelaai word, en die http-bediener self sal in die vergetelheid gaan. As hierdie besluit twyfelagtig is, kan u die volgende truuk gebruik: voer die vorige opdrag uit en voeg vlae by zp en wagwoord. Nou, as jy die gegenereerde skakel in 'n blaaiervenster plak, sal jy 'n zip-argief met 'n wagwoord ontvang.Wanneer jy 'n lêer met 'n kliëntkonfigurasie het, kan jy enige geskikte kliënt gebruik. Ek gebruik Tunnelblick vir Mac.

Video-tutoriaal

Hierdie video-tutoriaal bevat gedetailleerde instruksies vir die implementering van die diens op DigitalOcean.

PS As jy hierdie projek nuttig vind, gee dit asseblief 'n ster op GitHub, vurk dit en vertel jou vriende. Bydraers en sekuriteitsoudits word ook wyd verwelkom.PPS As hierdie artikel op Habr beland, dan beplan ek om die volgende een te skryf oor hoe ek dok-in-doker en docker-in-doker-in-doker gehardloop het, hoekom ek dit gedoen het en wat daarvan gekom het.
EDIT1:

  1. Posfoute reggestel
  2. In reaksie op opmerkings het ek besluit om hierdie inligting hier te plaas: die --bevoorregte vlag is nodig om met iptables te werk

EDIT2:

  1. Verbeter die beeld bekendstelling opdrag: nou vereis dit nie die --bevoorregte vlag
  2. Het 'n skakel bygevoeg na die Russiestalige videogids: youtube.be/A8zvrHsT9A0

Bron: will.com

Voeg 'n opmerking