Zaženite OpenVPN v Dockerju v 2 sekundah

Pozdravljeni, prebivalci Khabrovsk! Ste že kdaj naleteli na situacijo, ko ste si resnično želeli virtualno prepeljati v drugo mesto, državo ali celino? To potrebo imam precej pogosto, zato je bila priložnost, da imam svoj strežnik VPN, ki ga lahko zaženem kjer koli, v nekaj sekundah, kar nujna.V tem članku želim govoriti o svojem projektu, ki sem si ga zamislil, ko sem bil iščete že pripravljeno rešitev, v tem primeru Docker sliko, ki bi vam omogočila hitro postavitev strežnika OpenVPN, z minimalnimi nastavitvami in sprejemljivo stopnjo varnosti.

Zaženite OpenVPN v Dockerju v 2 sekundah

prazgodovina

Zmožnost zagona storitve na katerem koli stroju - naj bo to fizični strežnik, navidezni zasebni strežnik ali celo vsebniški prostor znotraj drugega sistema za upravljanje vsebnikov - je bila kritična. Moj pogled je takoj padel na Dockerja. Prvič, ta storitev postaja vse bolj priljubljena, zato vse več ponudnikov ponuja že pripravljene rešitve z njeno prednamestitvijo; drugič, obstaja centralizirano shranjevanje slik, od koder lahko prenesete in zaženete storitev z enim ukazom v terminalu. Porodila se mi je ideja, da bi tak projekt že obstajal, in sem trdo iskal. Toda večina projektov, ki sem jih našel, je bilo preveč okornih (moral si ustvariti vsebnik za trajno shranjevanje podatkov in vsebnik z aplikacijo večkrat zagnati z različnimi parametri) ali brez zdrave dokumentacije ali popolnoma opuščenih. , začel sem delati na vašem projektu. Bile so neprespane noči pred preučevanjem dokumentacije, pisanjem kode in odpravljanjem napak, toda končno je moja storitev ugledala luč sveta in se začela iskriti z vsemi barvami enobarvne LED plošče usmerjevalnika. Torej, prosim vas za ljubezen in naklonjenost - Docker-OpenVPN. Izmislil sem si celo logotip (zgoraj, pred rezom), vendar ga ne obsojajte strogo, ker nisem (več) oblikovalec. Ko sem izvajal ta projekt, sem dal prednost hitrosti postavitve, minimalno nastavitve in sprejemljivo raven varnosti. S poskusi in napakami sem našel optimalno ravnovesje teh meril, vendar sem moral ponekod zaradi varnosti žrtvovati hitrost uvajanja in za minimalne nastavitve, ki sem jih moral plačati za prenosljivost: v trenutni konfiguraciji je vsebnika, ki je enkrat ustvarjen na enem strežniku, ni mogoče prenesti in zagnati na drugem. Na primer, vsa potrdila odjemalca in strežnika se ustvarijo, ko se storitev zažene, kar bo trajalo približno 2 sekundi. Vendar je bilo treba ustvarjanje datoteke Hellman Defi upoštevati v času gradnje: ustvarjena je med gradnjo slike priklopne postaje in lahko traja do 10 minut. Res bi rad prejel varnostno revizijo takšne rešitve od spoštovane skupnosti.

Izstrelite

Za zagon storitve potrebujemo več stvari:

  1. Strežnik: fizični ali virtualni. Teoretično je mogoče zagnati v načinu docker-in-docker, vendar te možnosti nisem obsežno preizkusil;
  2. Pravzaprav Docker. Številni ponudniki gostovanja ponujajo že pripravljene rešitve z vgrajenim Dockerjem;
  3. Javni naslov IP.

Če so vse podrobnosti na mestu, potem moramo samo zagnati naslednji ukaz v konzoli vašega strežnika:

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

Pozoren bralec je morda opazil, da se naslov IP strežnika samodejno določi z uporabo ipify.org. Če iz nekega razloga to ne deluje, lahko naslov določite ročno.Če so bili vsi prejšnji koraki izvedeni pravilno, bi morali videti nekaj podobnega v konzoli:

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!

Blizu smo cilja: zdaj moramo kopirati example.com (v vašem primeru bo to naslov vašega strežnika) in ga prilepite v naslovno vrstico brskalnika. Ko pritisnete Enter, se bo datoteka client.ovpn prenesla, sam http strežnik pa bo izginil v pozabo. Če ste v tej rešitvi dvomljivi, lahko uporabite naslednji trik: zaženite prejšnji ukaz in dodajte zastavice zp in geslo. Zdaj, če prilepite generirano povezavo v okno brskalnika, boste prejeli zip arhiv z geslom.Ko imate konfiguracijsko datoteko odjemalca, lahko uporabite katerega koli ustreznega odjemalca. Uporabljam Tunnelblick za Mac.

Video vadnica

Ta video vadnica vsebuje podrobna navodila za uvajanje storitve na DigitalOcean.

PS Če se vam zdi ta projekt koristen, ga označite z zvezdico na GitHubu, ga razdelite in povejte svojim prijateljem. Sodelujoči in varnostne revizije so prav tako zelo dobrodošli.PPS Če se ta članek znajde na Habru, potem nameravam napisati naslednjega o tem, kako sem zagnal docker-in-docker in docker-in-docker-in-docker, zakaj sem to naredil in kaj se je iz tega izcimilo.
UREDI1:

  1. Popravljene napake v objavi,
  2. Kot odgovor na pripombe sem se odločil, da to informacijo postavim sem: zastavica —privileged je potrebna za delo z iptables

UREDI2:

  1. Izboljšan ukaz za zagon slike: zdaj ne zahteva zastavice –privileged
  2. Dodana povezava do video vodnika v ruskem jeziku: youtu.be/A8zvrHsT9A0

Vir: www.habr.com

Dodaj komentar