Բարև, Խաբրովսկի բնակիչներ: Երբևէ բախվե՞լ եք մի իրավիճակի, երբ իսկապես ցանկանաք վիրտուալ կերպով ձեզ տեղափոխել մեկ այլ քաղաք, երկիր կամ մայրցամաք: Ես բավականին հաճախ եմ ունենում այս կարիքը, ուստի հնարավորություն ընձեռվեց ունենալ իմ սեփական VPN սերվերը, որը կարող է գործարկվել ցանկացած վայրում, մի քանի վայրկյանում, բավականին հրատապ էր: Այս հոդվածում ես ուզում եմ խոսել իմ նախագծի մասին, որը ես մտահղացել էի, երբ ես փնտրում է պատրաստի լուծում, այս դեպքում՝ Docker պատկեր, որը թույլ կտա արագ կարգավորել OpenVPN սերվերը՝ նվազագույն պարամետրերով և անվտանգության ընդունելի մակարդակով։
նախապատմությանը
Ծառայությունը ցանկացած մեքենայի վրա գործարկելու կարողությունը՝ լինի դա ֆիզիկական սերվեր, թե վիրտուալ մասնավոր սերվեր, կամ նույնիսկ կոնտեյներային տարածք մեկ այլ կոնտեյների կառավարման համակարգի ներսում, կարևոր էր: Իմ հայացքն անմիջապես ընկավ Դոկերին։ Նախ, այս ծառայությունը դառնում է ժողովրդականություն, և, հետևաբար, ավելի ու ավելի շատ մատակարարներ պատրաստի լուծումներ են տրամադրում դրա նախնական տեղադրմամբ. երկրորդը, կա պատկերների կենտրոնացված պահեստավորում, որտեղից կարող եք ներբեռնել և գործարկել ծառայությունը՝ օգտագործելով մեկ հրաման տերմինալում: Գաղափարը, որ նման նախագիծ արդեն պետք է լինի, ինձ մոտ առաջացավ, և ես շատ փնտրեցի։ Բայց իմ գտած նախագծերի մեծ մասը կա՛մ չափազանց ծանրաբեռնված էր (դուք պետք է ստեղծեիք տվյալների մշտական պահպանման համար նախատեսված կոնտեյներ և մի քանի անգամ գործարկեք կոնտեյները հավելվածի հետ՝ տարբեր պարամետրերով), կա՛մ առանց ողջամիտ փաստաթղթերի, կա՛մ ամբողջովին լքված: Ընդունելի ոչինչ չգտնելով: , ես սկսեցի աշխատել ձեր նախագծի վրա։ Փաստաթղթերի ուսումնասիրման, կոդ գրելու և վրիպազերծմանն ընդառաջ անքուն գիշերներ կային, բայց ի վերջո իմ ծառայությունը տեսավ օրվա լույսը և սկսեց փայլել երթուղիչի մոնոխրոմ LED վահանակի բոլոր գույներով: Այսպիսով, ես խնդրում եմ ձեզ սիրել և բարեհաճել, Docker-OpenVPN. Ես նույնիսկ լոգոն եմ մշակել (վերևում, նախքան կտրվածքը), բայց խստորեն մի դատեք դրա մասին, քանի որ ես դիզայներ չեմ (այլևս): Երբ ես իրագործեցի այս նախագիծը, ես առաջնահերթություն տվեցի տեղակայման արագությանը, նվազագույնը. կարգավորումներ և անվտանգության ընդունելի մակարդակ: Փորձի և սխալի միջոցով ես գտա այս չափանիշների օպտիմալ հավասարակշռությունը, այնուամենայնիվ, որոշ տեղերում ես ստիպված էի զոհաբերել տեղակայման արագությունը հանուն անվտանգության, և ես ստիպված էի վճարել շարժականության համար նվազագույն պարամետրերի համար. ընթացիկ կազմաձևում. Մեկ սերվերի վրա ստեղծված կոնտեյները չի կարող փոխանցվել և գործարկվել մյուսի վրա: Օրինակ, բոլոր հաճախորդի և սերվերի վկայականները ստեղծվում են ծառայության մեկնարկի ժամանակ, և դա կտևի մոտ 2 վայրկյան: Այնուամենայնիվ, Hellman Defi ֆայլի սերունդը պետք է հաշվի առնվեր կառուցման ժամանակի մեջ. այն ստեղծվում է դոկերի պատկերի կառուցման ժամանակ և կարող է տևել մինչև 10 րոպե: Ես իսկապես կցանկանայի հարգարժան համայնքից ստանալ նման լուծման անվտանգության աուդիտ:
Գործարկել
Ծառայությունը սկսելու համար մեզ անհրաժեշտ է մի քանի բան.
Սերվեր՝ ֆիզիկական կամ վիրտուալ: Տեսականորեն հնարավոր է գործարկել docker-in-docker ռեժիմում, բայց ես այս տարբերակը լայնորեն չեմ փորձարկել.
Իրականում Դոկեր. Հոսթինգի շատ պրովայդերներ պատրաստի լուծումներ են տրամադրում Docker-ի հետ միասին.
Հանրային IP հասցե.
Եթե բոլոր մանրամասները տեղում են, ապա մեզ մնում է միայն գործարկել հետևյալ հրամանը ձեր սերվերի վահանակում.
Ուշադիր ընթերցողը կարող էր նկատել, որ սերվերի IP հասցեն որոշվում է ավտոմատ կերպով՝ օգտագործելով ipify.org. Եթե ինչ-ինչ պատճառներով դա չի աշխատում, ապա կարող եք ձեռքով նշել հասցեն: Եթե բոլոր նախորդ քայլերը ճիշտ են կատարվել, ապա մենք պետք է տեսնենք նման բան վահանակում.
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!
Մենք մոտ ենք նպատակին. հիմա պետք է պատճենել example.com (ձեր դեպքում դա կլինի ձեր սերվերի հասցեն) և տեղադրեք այն ձեր բրաուզերի հասցեագոտում: Enter սեղմելուց հետո client.ovpn ֆայլը կներբեռնվի, իսկ http սերվերն ինքը կվերանա մոռացության: Եթե այս լուծումը կասկածի տակ է, կարող եք օգտագործել հետևյալ հնարքը՝ գործարկել նախորդ հրամանը և ավելացնել դրոշներ zp և գաղտնաբառը: Այժմ, եթե ստեղծված հղումը տեղադրեք դիտարկիչի պատուհանում, դուք կստանաք գաղտնաբառով zip արխիվ: Հաճախորդի կազմաձևման ֆայլ ունենալուց հետո կարող եք օգտագործել ցանկացած հարմար հաճախորդ: Ես օգտագործում եմ Tunnelblick-ը Mac-ի համար:
Վիդեո ձեռնարկ
Այս վիդեո ձեռնարկը պարունակում է մանրամասն հրահանգներ՝ ծառայությունը DigitalOcean-ում տեղակայելու համար:
PS Եթե կարծում եք, որ այս նախագիծը օգտակար է, խնդրում ենք աստղ տալ GitHub-ում, պատառաքաղել այն և պատմել ձեր ընկերներին: Աջակցողները և անվտանգության աուդիտները նույնպես լայնորեն ողջունվում են:PPS Եթե այս հոդվածը ավարտվի Habr-ում, ապա ես նախատեսում եմ գրել հաջորդը այն մասին, թե ինչպես գործարկեցի docker-in-docker-ը և docker-in-docker-in-docker-ը, ինչու ես դա արեցի և ինչ ստացվեց դրանից: EDIT1- ը `
Հրապարակման մեջ շտկված սխալները,
Պատասխանելով մեկնաբանություններին՝ ես որոշեցի տեղադրել այս տեղեկատվությունը այստեղ՝ «արտոնյալ դրոշն անհրաժեշտ է iptables-ի հետ աշխատելու համար»:
EDIT2- ը `
Բարելավվել է պատկերի գործարկման հրամանը. այժմ այն չի պահանջում –արտոնյալ դրոշակ