Եկել է ժամանակը, երբ VPN-ն այլևս մորուքավոր համակարգի ադմինիստրատորների էկզոտիկ գործիք չէ: Օգտատերերն ունեն տարբեր առաջադրանքներ, բայց փաստն այն է, որ բոլորին անհրաժեշտ է VPN:
Ընթացիկ VPN լուծումների խնդիրն այն է, որ դրանք դժվար է ճիշտ կազմաձևել, թանկ է պահպանել և լի են կասկածելի որակի ժառանգական կոդով:
Մի քանի տարի առաջ կանադացի տեղեկատվական անվտանգության մասնագետ Ջեյսոն Ա. Դոնենֆելդը որոշեց, որ իրեն բավական է դա և սկսեց աշխատել. WireGuard- ը. WireGuard-ն այժմ պատրաստվում է ընդգրկվելու Linux միջուկում և նույնիսկ գովասանքի է արժանացել Լինուս Տորվալդս իսկ ԱՄՆ Սենատը.
WireGuard-ի պահանջվող առավելությունները VPN այլ լուծումների նկատմամբ.
Հեշտ օգտագործման համար:
Օգտագործում է ժամանակակից ծածկագրություն՝ աղմուկի արձանագրության շրջանակ, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF և այլն:
Կոմպակտ, ընթեռնելի կոդ, ավելի հեշտ է ուսումնասիրել խոցելիությունը:
Գործառնական սկզբունքները կարելի է նկարագրել այսպես.
Ստեղծվում է WireGuard ինտերֆեյս, և դրան հատկացվում է մասնավոր բանալի և IP հասցե: Բեռնվում են այլ գործընկերների կարգավորումները՝ նրանց հանրային բանալիները, IP հասցեները և այլն:
Բոլոր IP փաթեթները, որոնք հասնում են WireGuard ինտերֆեյսին, պարփակված են UDP-ում և ապահով առաքված այլ հասակակիցներ:
Հաճախորդները կարգավորումներում նշում են սերվերի հանրային IP հասցեն: Սերվերը ավտոմատ կերպով ճանաչում է հաճախորդների արտաքին հասցեները, երբ նրանցից ճիշտ վավերացված տվյալներ են ստացվում:
Սերվերը կարող է փոխել հանրային IP հասցեն՝ առանց իր աշխատանքը ընդհատելու: Միևնույն ժամանակ, այն ահազանգ կուղարկի կապակցված հաճախորդներին, և նրանք անմիջապես կթարմացնեն իրենց կազմաձևերը:
Օգտագործվում է երթուղի հասկացությունը Cryptokey Routing. WireGuard-ն ընդունում և ուղարկում է փաթեթներ՝ հիմնված գործընկերների հանրային բանալիի վրա: Երբ սերվերը վերծանում է ճիշտ վավերացված փաթեթը, դրա src դաշտը ստուգվում է: Եթե այն համապատասխանում է կազմաձևին allowed-ips վավերացված գործընկերոջ, փաթեթը ստացվում է WireGuard ինտերֆեյսի միջոցով: Ելքային փաթեթ ուղարկելիս կատարվում է համապատասխան ընթացակարգ՝ վերցվում է փաթեթի dst դաշտը և դրա հիման վրա ընտրվում է համապատասխան համարժեքը, փաթեթը ստորագրվում է իր բանալիով, գաղտնագրվում է գործընկերոջ բանալիով և ուղարկվում է հեռավոր վերջնակետ։ .
WireGuard-ի ողջ հիմնական տրամաբանությունը 4 հազարից պակաս կոդ է վերցնում, մինչդեռ OpenVPN-ն և IPSec-ն ունեն հարյուր հազարավոր տողեր: Ժամանակակից կրիպտոգրաֆիկ ալգորիթմներին աջակցելու համար առաջարկվում է Linux միջուկում ներառել նոր կրիպտոգրաֆիկ API: ցինկ. Ներկայումս քննարկում է ընթանում այն մասին, թե արդյոք սա լավ գաղափար է:
Արտադրողականություն
Առավելագույն կատարողական առավելությունը (համեմատ OpenVPN-ի և IPSec-ի հետ) նկատելի կլինի Linux համակարգերում, քանի որ WireGuard-ն այնտեղ ներդրված է որպես միջուկի մոդուլ։ Բացի այդ, macOS-ը, Android-ը, iOS-ը, FreeBSD-ն և OpenBSD-ն ապահովված են, սակայն դրանցում WireGuard-ն աշխատում է օգտատերերի տարածքում՝ դրանից բխող բոլոր կատարողական հետևանքներով: Սպասվում է, որ Windows-ի աջակցությունը կավելացվի մոտ ապագայում։
Ես VPN փորձագետ չեմ: Ես մի անգամ ձեռքով ստեղծեցի OpenVPN, և դա շատ հոգնեցուցիչ էր, և ես նույնիսկ չփորձեցի IPSec. Չափազանց շատ որոշումներ կան կայացնելու համար, շատ հեշտ է կրակել քո ոտքին: Հետեւաբար, ես միշտ օգտագործում էի պատրաստի սկրիպտներ՝ սերվերը կարգավորելու համար։
Այսպիսով, WireGuard-ը, իմ տեսանկյունից, ընդհանուր առմամբ իդեալական է օգտագործողի համար: Ցածր մակարդակի բոլոր որոշումները ընդունվում են ճշգրտման մեջ, ուստի տիպիկ VPN ենթակառուցվածքի պատրաստման գործընթացը տևում է ընդամենը մի քանի րոպե: Գրեթե անհնար է խաբել կոնֆիգուրացիայի մեջ:
Մնում է միայն կարգավորել NAT-ը սերվերի վրա, որպեսզի հաճախորդները կարողանան մուտք գործել ինտերնետ, և դուք ավարտեցիք:
Կոդի բազայի օգտագործման այս հեշտությունը և կոմպակտությունը ձեռք են բերվել բանալիների բաշխման գործառույթի վերացման միջոցով: Չկա սերտիֆիկատների բարդ համակարգ և այս ամբողջ կորպորատիվ սարսափը, կարճ գաղտնագրման բանալիները բաշխվում են SSH ստեղների նման: Բայց սա մի խնդիր է առաջացնում.
Թերությունների թվում հարկ է նշել, որ WireGuard-ը չի աշխատի HTTP վստահված անձի միջոցով, քանի որ որպես տրանսպորտ հասանելի է միայն UDP արձանագրությունը: Հարց է առաջանում՝ հնարավո՞ր է արդյոք խայտառակել արձանագրությունը։ Իհարկե, սա VPN-ի ուղղակի խնդիր չէ, բայց OpenVPN-ի համար, օրինակ, կան եղանակներ՝ քողարկվելու որպես HTTPS, որն օգնում է տոտալիտար երկրների բնակիչներին ամբողջությամբ օգտվել ինտերնետից։
Արդյունքները
Ամփոփելու համար սա շատ հետաքրքիր և խոստումնալից նախագիծ է, այն արդեն կարող եք օգտագործել անձնական սերվերների վրա։ Ո՞րն է շահույթը: Բարձր կատարողականություն Linux համակարգերում, տեղադրման և աջակցության հեշտություն, կոմպակտ և ընթեռնելի կոդերի բազա: Այնուամենայնիվ, դեռ վաղ է շտապել բարդ ենթակառուցվածքը WireGuard-ին փոխանցելու համար, արժե սպասել, որ այն ներառվի Linux միջուկում:
Իմ (և ձեր) ժամանակը խնայելու համար ես մշակեցի WireGuard ավտոմատ տեղադրող. Նրա օգնությամբ դուք կարող եք ստեղծել անձնական VPN ձեր և ձեր ընկերների համար՝ նույնիսկ դրա մասին ոչինչ չհասկանալով։