«Միացվա՞ծ է VPN-ը» իրականում երեք հարց է մեկ նախադասության մեջ։ Ձեր կոդին դրանցից որն է պետք՝ առաջին որոշումն է, և հենց այն բաց են թողնում իրականացումների մեծ մասը։ Արդյոք այս սարքում թունել կա, արդյոք այս նպատակակետի երթևեկությունը դուրս է գալիս դրա միջով, թե հեռավոր ծայրը պատասխանում է ձեր սպասած ինքնությամբ։ Ընտրեք հատկությունը, ապա ընտրեք այն ազդանշանը, որը չափում է այն, և վերջում գրանցամատյանում գրեք, թե որն եք իրականում չափել։

Երեք հատկություն, երեք ազդանշան

Մեկական տողի մեջ սեղմված՝ երեք հարցերն ունեն երեք տարբեր պատասխան։ Ստորև բերված աղյուսակը հենց որոշումն է, ոչ թե դրա ամփոփումը։

PropertySignal that answers itWhat it still leaves open
ExistenceThe platform's own connection state: RAS on Windows, NetworkManager on D-Bus on Linux, scutil on macOSTunnels of a type the platform does not manage, which includes most third-party clients
PathA route lookup for the one destination, or a scoped proxy or interface key that names the tunnelWhether the far end is the peer you trust
IdentityAn authenticated response from the far end, or a source-address policy applied on the serverWhich local interface carried the packets

Կարդացեք վերջին տողը դանդաղ։ Պատասխանող մասնավոր հոսթը վկայում է, որ ինչ-որ բան պատասխանել է, ոչ թե որ պատասխանը եկել է թունելով, և այն ոչինչ չի ասում այն մասին, թե ով է մյուս ծայրում։ Եթե ձեզ անհրաժեշտ հատկությունը ուղին է, չափեք ուղին։

Գոյություն՝ հարթակի սեփական վիճակը

Windows-ը դա պատասխանում է բնիկ պրոֆիլների համար Remote Access Service API-ի միջոցով։ RasEnumConnections թվարկում է, թե ինչ է միացված, RasGetConnectStatus հաղորդում է մեկ գրառման վիճակը, իսկ RasGetLinkStatistics ավելացնում է արագություն, բայթերի հաշվիչներ և կապի տարիք։ Սահմանափակումները հենց էությունն են. OpenVPN-ը, WireGuard-ը և մատակարարների հաճախորդները երբեք չեն գրանցում RAS կապ, ուստի այդ տիպի առողջ թունելը ցույց է տալիս դատարկ ցուցակ, և միամիտ կոդը հաղորդում է այն որպես անջատված։

Linux-ի աշխատանքային սեղանները նույն հատկությունը բացահայտում են D-Bus-ի վրա NetworkManager-ի միջոցով, որտեղ VPN կապի օբյեկտի վրա PropertiesChanged ստուգումը վերածում է իրադարձության, և State հատկությունը հաղորդում է, թե երբ կապը հասնում է միացված վիճակին։ Shell-ից nmcli connection show --active կարդում է նույն տեղեկությունը, և դա է այն, ինչ ուզում եք վրիպազերծման ժամանակ։ macOS-ը այդ ցուցակը պահում է System Configuration շրջանակում, և scutil նրա հրամանային տողի տեսքն է։ Երեքն էլ նկարագրում են հարթակի կողմից կառավարվող կապ, և երեքն էլ լռում են այն թունելի համար, որը նա չի կառավարում։

Ուղի՝ ուր է իրականում գնում փաթեթը

Անունների համապատասխանեցումը այն կարճուղին է, որին բոլորը նախ դիմում են. թվարկեք ինտերֆեյսները, փորձարկեք տողը tun, tap, ppp կամ ipsec-ի դեմ և համընկնումը համարեք ապացույց։ Սա էվրիստիկ է, և ինտերֆեյսների հավաքածուն կարող է նույնը թվալ՝ անկախ նրանից՝ ինչ-որ բան անցնում է դրա միջով, թե ոչ։ Հին iOS տարբերակները այսպես էին պատասխանում, իսկ ավելի նորերը դադարեցին, որովհետև տեսանելի ինտերֆեյսներն այլևս չէին տարբերում երկու վիճակները։

Այնտեղ դա փոխարինողը համակարգի պրոքսիի բառարանն է։ Քանի դեռ VPN-ը միացված է, պրոքսիի կարգավորումների կանչը վերադարձնում է թունելի հետ կապված ինտերֆեյսներով սահմանափակված բանալիներ, իսկ երբ ոչինչ միացված չէ, բառարանը վերադառնում է դատարկ։ Սա ավելի թույլ պնդում է, քան հնչում է, որովհետև գրանցում է համակարգի հավատը, որ թունել գոյություն ունի, և ոչ թե, թե որ նպատակակետն է օգտագործում այն։

Android-ն ունի այս թակարդի իր տարբերակը. vpn.connectivity հեռարձակումը որոշ կառուցվածքներում հասնում է մանիֆեստում հայտարարված ընդունիչներին, իսկ մյուսներում՝ գործարկման ընթացքում գրանցված ընդունիչներին։ Վերաբերվեք դրան որպես լավագույն ջանք և դրա հետևում պահեք ուղղակի զոնդ։

Երբ նպատակակետն է կարևորը, հարցրեք երթուղավորման աղյուսակին՝ ադապտերների ցուցակի փոխարեն։ Լռելյայն դարպասի էվրիստիկաները կոտրվում են բազմացանց մեքենաների վրա և այն թունելների վրա, որոնք տեղադրում են իրենց դարպասը։

Ինքնություն՝ ստուգեք հեռավոր ծայրը

Ամեն մի քանի վայրկյանը մեկ հեռավոր ծայրին ICMP արձագանք ուղարկող հանգույցը այս տեսակի ամենաէժան ստուգումն է, և այն ձախողվում է օգտակար ուղղությամբ։ Ուղղեք այն հասցեի, որը գոյություն ունի միայն մասնավոր ցանցի ներսում, որովհետև հանրային հասցեն պատասխանում է ցանկացած աշխատող վերին կապով և ոչինչ չի ապացուցում։ Այնտեղ, որտեղ ICMP-ն զտվում է, ծառայության պորտին կարճ TCP կապը կատարում է նույն աշխատանքը։

Սերվերի կողմի ստուգումն ունի ուղիղ մեկ ազդանշան. կապի սկզբնաղբյուրի հասցեն։ Շրջանակների գույքագրումը պահելը սպասարկման աշխատանք է, և այն չի կարող թունելը բաժանել որևէ այլ ցանցից, որն պատահաբար օգտագործում է նույն բլոկը։

Կոպիտ քաղաքականությունը կարող է ապրել դրա հետ։ Ինքնությունը չի կարող, ուստի վավերացրեք հաճախորդին՝ փոխանակ վստահելու, թե որտեղից են կարծես թե գալիս նրա փաթեթները։

Գրանցեք կատեգորիան, ոչ թե վճիռը

Ձախողման կատեգորիաները գրանցամատյանում առանձին պահեք. ընդհանրապես ինտերֆեյս չկա, ինտերֆեյս կա, բայց նպատակակետն անհասանելի է, նպատակակետը հասանելի է, բայց նույնականացումը մերժվել է։ Սրանք երեք տարբեր սեփականատերեր են, և յուրաքանչյուրը բացում է տարբեր քննություն։

Դրանք մեկ «VPN-ն անջատված է»-ի մեջ միավորելը հաշվետվությունն ուղարկում է թիմի, որը չի կարող ուղղել այն։ Կատեգորիան օգտակար ելքն է. վճիռն այն է, ինչը դարձնում է այն սխալ։

Առնչվող հոդվածներ