Palaidiet OpenVPN programmā Docker 2 sekundēs

Sveiki, Habrovskas iedzÄ«votāji! Vai esat kādreiz saskāruÅ”ies ar situāciju, kad patieŔām vēlējāties bÅ«t virtuāli pārvestam uz citu pilsētu, valsti vai kontinentu? Man Ŕī vajadzÄ«ba rodas diezgan bieži, tāpēc iespēja iegÅ«t savu VPN serveri, kuru var palaist jebkurā vietā, pāris sekundēs, bija diezgan steidzama. Å ajā rakstā es vēlos pastāstÄ«t par savu projektu, kuru es iecerēju, kad biju meklē gatavu risinājumu, Å”ajā gadÄ«jumā Docker attēlu, kas ļautu ātri iestatÄ«t OpenVPN serveri, ar minimāliem iestatÄ«jumiem un pieņemamu droŔības lÄ«meni.

Palaidiet OpenVPN programmā Docker 2 sekundēs

Aizvēsture

Spēja palaist pakalpojumu jebkurā datorā ā€” vai tas bÅ«tu fizisks serveris vai virtuāls privātais serveris, vai pat konteineru telpa citā konteineru pārvaldÄ«bas sistēmā ā€“ bija ļoti svarÄ«ga. Mans skatiens uzreiz nokrita uz Dokeru. Pirmkārt, Å”is pakalpojums gÅ«st popularitāti, un tāpēc arvien vairāk pakalpojumu sniedzēju nodroÅ”ina gatavus risinājumus ar tā iepriekŔēju uzstādÄ«Å”anu; otrkārt, ir centralizēta attēlu krātuve, no kuras varat lejupielādēt un palaist pakalpojumu, izmantojot vienu komandu terminālÄ«. Man radās doma, ka Ŕādam projektam jau vajadzētu pastāvēt, un es cÄ«tÄ«gi meklēju. Bet lielākā daļa projektu, ko es atklāju, bija vai nu pārāk apgrÅ«tinoÅ”i (vajadzēja izveidot konteineru pastāvÄ«gai datu glabāŔanai un vairākas reizes palaist konteineru ar aplikāciju ar dažādiem parametriem), vai arÄ« bez saprātÄ«gas dokumentācijas, vai arÄ« pilnÄ«bā pamesti. Neatrodot neko pieņemamu , Es sāku strādāt pie jÅ«su projekta. Bija bezmiega naktis pirms dokumentācijas izpētes, koda rakstÄ«Å”anas un atkļūdoÅ”anas, taču galu galā mans pakalpojums ieraudzÄ«ja dienasgaismu un sāka mirdzēt ar visām marÅ”rutētāja vienkrāsainā LED paneļa krāsām. Tāpēc es lÅ«dzu jÅ«s mÄ«lēt un atbalstÄ«t - Docker-OpenVPN. Es pat izdomāju logotipu (augŔā, pirms griezuma), bet nevērtējiet to stingri, jo es neesmu dizainers (vairs) Realizējot Å”o projektu, es par prioritāti izvirzÄ«ju izvietoÅ”anas ātrumu, minimālo iestatÄ«jumus un pieņemamu droŔības lÄ«meni. Mēģinot un kļūdoties, es atradu Å”o kritēriju optimālo lÄ«dzsvaru, tomēr dažviet man nācās upurēt izvietoÅ”anas ātrumu droŔības labad, un par minimālajiem iestatÄ«jumiem man bija jāmaksā par pārnesamÄ«bu: paÅ”reizējā konfigurācijā konteineru, kas izveidots vienā serverÄ«, nevar pārsÅ«tÄ«t un palaist citā. Piemēram, visi klienta un servera sertifikāti tiek Ä£enerēti, kad pakalpojums sākas, un tas aizņems apmēram 2 sekundes. Tomēr Hellman Defi faila Ä£enerÄ“Å”ana bija jāņem vērā izveides laikā: tas tiek izveidots dokera attēla veidoÅ”anas laikā un var ilgt lÄ«dz 10 minÅ«tēm. Ä»oti vēlētos saņemt Ŕāda risinājuma droŔības auditu no cienÄ«jamās sabiedrÄ«bas.

Š—Š°ŠæусŠŗ

Lai sāktu pakalpojumu, mums ir nepiecieŔamas vairākas lietas:

  1. Serveris: fiziskais vai virtuālais. Teorētiski ir iespējams darboties režīmā docker-in-docker, bet es neesmu plaÅ”i pārbaudÄ«jis Å”o iespēju;
  2. PatiesÄ«bā Docker. Daudzi mitināŔanas pakalpojumu sniedzēji nodroÅ”ina gatavus risinājumus ar Docker;
  3. Publiskā IP adrese.

Ja visa informācija ir norādÄ«ta, viss, kas mums jādara, ir jÅ«su servera konsolē palaist Ŕādu komandu:

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

UzmanÄ«gs lasÄ«tājs varētu bÅ«t pamanÄ«jis, ka servera IP adrese tiek noteikta automātiski, izmantojot ipify.org. Ja kāda iemesla dēļ tas nedarbojas, varat norādÄ«t adresi manuāli. Ja visas iepriekŔējās darbÄ«bas tika veiktas pareizi, tad konsolē vajadzētu redzēt kaut ko lÄ«dzÄ«gu:

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!

Mēs esam tuvu mērÄ·im: tagad mums ir jākopē example.com (jÅ«su gadÄ«jumā tā bÅ«s jÅ«su servera adrese) un ielÄ«mējiet to pārlÅ«kprogrammas adreses joslā. Pēc Enter nospieÅ”anas tiks lejupielādēts fails client.ovpn, un pats http serveris pazudÄ«s aizmirstÄ«bā. Ja rodas Å”aubas par Å”o risinājumu, varat izmantot Ŕādu triku: palaidiet iepriekŔējo komandu un pievienojiet karogus zp un paroli. Tagad, ielÄ«mējot Ä£enerēto saiti pārlÅ«kprogrammas logā, jÅ«s saņemsiet zip arhÄ«vu ar paroli. Kad jums ir klienta konfigurācijas fails, varat izmantot jebkuru piemērotu klientu. Es izmantoju Tunnelblick for Mac.

Video pamācība

Å ajā video pamācÄ«bā ir ietverti detalizēti norādÄ«jumi par pakalpojuma izvietoÅ”anu DigitalOcean.

PS Ja Å”is projekts jums Ŕķiet noderÄ«gs, lÅ«dzu, pieŔķiriet tam zvaigznÄ«ti vietnē GitHub, dakÅ”a un pastāstiet draugiem. PlaÅ”i atzinÄ«gi tiek vērtēti arÄ« ieguldÄ«tāji un droŔības auditi.PPS Ja Å”is raksts nonāks Habr, tad es plānoju rakstÄ«t nākamo par to, kā es palaižu docker-in-docker un docker-in-docker-in-docker, kāpēc es to izdarÄ«ju un kas no tā iznāca.
EDIT1:

  1. Izlabotas kļūdas publikācijā,
  2. Atbildot uz komentāriem, es nolēmu ievietot Å”o informāciju Å”eit: lai strādātu ar iptables, ir nepiecieÅ”ams priviliģētais karogs

EDIT2:

  1. Uzlabota attēla palaiÅ”anas komanda: tagad tai nav nepiecieÅ”ams priviliģētais karogs
  2. Pievienota saite uz video ceļvedi krievu valodā: youtu.be/A8zvrHsT9A0

Avots: www.habr.com

Pievieno komentāru