Indítsa el az OpenVPN-t a Dockerben 2 másodpercen belül

Sziasztok Habrovszk lakosai! Találkoztál már olyan helyzettel, amikor valóban azt akartad volna, hogy egy másik városba, országba vagy kontinensre vigyenek át? Elég gyakran van erre igényem, ezért nagyon sürgős volt a lehetőség, hogy saját VPN szerverem legyen, ami bárhol, pár másodperc alatt elindítható.. Ebben a cikkben az én projektemről szeretnék beszélni, amely még akkor fogant meg kész megoldást keresünk, jelen esetben Docker-képet, amely lehetővé tenné az OpenVPN szerver gyors beállítását, minimális beállításokkal és elfogadható biztonsági szinttel.

Indítsa el az OpenVPN-t a Dockerben 2 másodpercen belül

őstörténet

Kritikus volt, hogy a szolgáltatást bármilyen gépen lehessen futtatni – legyen az fizikai szerver, virtuális magánkiszolgáló, vagy akár egy másik konténerkezelő rendszeren belüli konténerterület. Tekintetem azonnal Dockerre esett. Egyrészt ez a szolgáltatás egyre népszerűbb, ezért egyre több szolgáltató kínál kész megoldást előtelepítésével; másodszor, van egy központi tárhely a képeknek, ahonnan a terminál egyetlen parancsával letöltheti és futtathatja a szolgáltatást. Felmerült bennem az ötlet, hogy egy ilyen projektnek már léteznie kell, és alaposan utánanéztem. De a legtöbb projekt, amit találtam, vagy túl nehézkes (konténert kellett készíteni az állandó adattároláshoz és többször is elindítani a konténert az alkalmazással különböző paraméterekkel), vagy épszerű dokumentáció nélkül, vagy teljesen félbehagyták. Nem találtak semmi elfogadhatót. , Elkezdtem dolgozni a projekteden. Álmatlan éjszakák következtek a dokumentáció tanulmányozása, a kódírás és a hibakeresés előtt, de végül a szolgáltatásom napvilágot látott, és elkezdett csillogni a router monokróm LED paneljének minden színében. Szóval arra kérlek, szeress és szeress... Docker-OpenVPN. Még logót is kitaláltam (fent, vágás előtt), de ne ítéld meg szigorúan, mert nem vagyok (már) tervező.. Amikor ezt a projektet megvalósítottam, a bevetés gyorsaságát helyeztem előtérbe, minimum beállításokat és elfogadható biztonsági szintet. Próba-hibával megtaláltam ezeknek a kritériumoknak az optimális egyensúlyát, azonban helyenként a biztonság kedvéért fel kellett áldoznom a telepítési sebességet, illetve a minimális beállításért fizetnem kellett a hordozhatóságért: a jelenlegi konfigurációban egy Az egyik szerveren létrehozott tároló nem vihető át és nem indítható el egy másikon. Például az összes ügyfél- és szervertanúsítvány a szolgáltatás indulásakor jön létre, és ez körülbelül 2 másodpercet vesz igénybe. A Hellman Defi fájl generálását azonban bele kellett számolni az építési időbe: a docker image felépítése során jön létre, és akár 10 percig is eltarthat. Nagyon szeretnék egy ilyen megoldás biztonsági auditját kapni a tisztelt közösségtől.

dob

A szolgáltatás elindításához több dologra van szükségünk:

  1. Szerver: fizikai vagy virtuális. Elméletileg lehetséges docker-in-docker módban futni, de nem teszteltem alaposan ezt a lehetőséget;
  2. Valójában Docker. Sok tárhelyszolgáltató kész megoldásokat kínál Dockerrel;
  3. Nyilvános IP-cím.

Ha minden részlet a helyén van, akkor nincs más dolgunk, mint a következő parancs futtatása a kiszolgáló konzoljában:

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

Egy figyelmes olvasó észrevehette, hogy a szerver IP-címének meghatározása automatikusan történik ipify.org. Ha ez valamilyen oknál fogva nem működik, akkor manuálisan is megadhatja a címet. Ha az összes előző lépést megfelelően végezte el, akkor valami hasonlót kell látnunk a konzolban:

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!

Közel vagyunk a célhoz: most másolni kell example.com (esetedben ez a szervered címe lesz), és illeszd be a böngésződ címsorába. Az Enter megnyomása után a client.ovpn fájl letöltésre kerül, és maga a http szerver eltűnik a feledés homályába. Ha kétséges ez a megoldás, használhatja a következő trükköt: futtassa az előző parancsot, és adjon hozzá zászlókat zp és jelszót. Most, ha a generált hivatkozást beilleszti egy böngészőablakba, akkor egy zip archívumot kap egy jelszóval.Ha megvan a kliens konfigurációs fájlja, bármelyik megfelelő klienst használhatja. Tunnelblick for Mac-et használok.

Oktatóvideó

Ez az oktatóvideó részletes utasításokat tartalmaz a szolgáltatás DigitalOcean rendszeren történő üzembe helyezéséhez.

PS Ha hasznosnak találja ezt a projektet, jelölje meg csillaggal a GitHubon, forgassa el, és mondja el barátainak. A közreműködőket és a biztonsági auditokat is széles körben üdvözlik.PPS Ha ez a cikk a Habrra kerül, akkor a következőt arról tervezem, hogy arról írok, hogyan indítottam el a docker-in-docker-t és a docker-in-docker-in-docker-t, miért csináltam, és mi sült ki belőle.
EDIT1:

  1. A kiadvány hibáit javították,
  2. A megjegyzésekre reagálva úgy döntöttem, hogy ide teszem ezt az információt: a —privileged jelző szükséges az iptables használatához

EDIT2:

  1. Továbbfejlesztett a képindítási parancs: most már nem szükséges a –privileged jelző
  2. Hozzáadott egy linket az orosz nyelvű videokalauzhoz: youtu.be/A8zvrHsT9A0

Forrás: will.com

Hozzászólás