Kodla istənilən platformada aktiv VPN tunelini necə aşkar etmək olar
Tunel mövcuddurmu, bu təyinat ondan keçirmi, yoxsa uzaq tərəf cavab verir? Bunlar üç fərqli yoxlama və üç fərqli siqnaldır.
“VPN işləyirmi?” əslində bir cümlədə üç sualdır. Kodunuzun hansına ehtiyacı olduğu ilk qərardır və bu, əksər tətbiqlərin atladığı qərardır. Bu cihazda tunel varmı, bu təyinat üçün trafik ondan keçirmi, yoxsa uzaq tərəf gözlədiyiniz kimliklə cavab verir. Xassəni seçin, sonra onu ölçən siqnalı seçin, sonra jurnalda hansını həqiqətən ölçdüyünüzü yazın.
Üç xassə, üç siqnal
Hər biri bir sətrə sıxılmış üç sualın üç fərqli cavabı var. Aşağıdakı cədvəl qərarın özüdür, onun xülasəsi deyil.
| Property | Signal that answers it | What it still leaves open |
|---|---|---|
| Existence | The platform's own connection state: RAS on Windows, NetworkManager on D-Bus on Linux, scutil on macOS | Tunnels of a type the platform does not manage, which includes most third-party clients |
| Path | A route lookup for the one destination, or a scoped proxy or interface key that names the tunnel | Whether the far end is the peer you trust |
| Identity | An authenticated response from the far end, or a source-address policy applied on the server | Which local interface carried the packets |
Son sətri yavaş oxuyun. Cavab verən şəxsi host nəyinsə cavab verdiyini sübut edir, cavabın tuneldən gəldiyini yox, və digər tərəfdə kimin olduğu barədə heç nə demir. Lazım olan xassə yoldursa, yolu ölçün.
Mövcudluq: platformanın öz vəziyyəti
Windows bunu yerli profillər üçün Remote Access Service API vasitəsilə cavablandırır. RasEnumConnections nəyin qoşulduğunu sadalayır, RasGetConnectStatus bir girişin vəziyyətini bildirir, RasGetLinkStatistics isə sürət, bayt sayğacları və bağlantı yaşı əlavə edir. Məhdudiyyətlər əsas məsələdir: OpenVPN, WireGuard və vendor müştəriləri heç vaxt RAS bağlantısı qeydiyyatdan keçirmir, ona görə də bu tipli sağlam tunel boş siyahı göstərir və sadəlövh kod onu söndürülmüş kimi bildirir.
Linux masaüstləri eyni xassəni D-Bus üzərindəki NetworkManager vasitəsilə təqdim edir, burada VPN bağlantı obyektindəki PropertiesChanged yoxlamanı hadisəyə çevirir və State xassəsi keçidin qoşulmuş vəziyyətə çatdığını bildirir. Qabıqdan nmcli connection show --active eyni məlumatı oxuyur, sazlama zamanı istədiyiniz də budur. macOS həmin siyahını System Configuration çərçivəsində saxlayır və scutil onun əmr sətri görünüşüdür. Hər üçü platformanın idarə etdiyi bağlantını təsvir edir və hər üçü onun idarə etmədiyi tunel üçün susur.
Yol: paket əslində hara gedir
Ad uyğunlaşdırması hamının ilk əl atdığı qısa yoldur: interfeysləri sadalayın, sətri tun, tap, ppp və ya ipsec ilə müqayisə edin və uyğunluğu sübut sayın. Bu evristikadır və interfeys çoxluğu ondan nəyinsə keçib-keçmədiyindən asılı olmayaraq eyni görünə bilər. Köhnə iOS buraxılışları bu cür cavab verirdi, sonrakılar isə dayandı, çünki görünən interfeyslər artıq iki vəziyyəti ayırmırdı.
Orada onu əvəz edən sistem proksi lüğətidir. VPN qoşulu olduqda proksi parametrləri çağırışı tunellə əlaqəli interfeyslərə bağlanmış açarlar qaytarır, heç nə qoşulu olmadıqda isə lüğət boş qayıdır. Bu, göründüyündən zəif bir ifadədir, çünki tunelin mövcud olduğuna dair sistem inancını qeyd edir, hansı təyinatın ondan istifadə etdiyini yox.
Android-in tələnin öz versiyası var: vpn.connectivity yayımı bəzi buraxılışlarda manifestdə elan edilmiş qəbuledicilərə, digərlərində isə işləmə zamanı qeydiyyatdan keçmiş qəbuledicilərə çatır. Ona ən yaxşı səy kimi yanaşın və arxasında birbaşa zond saxlayın.
Təyinat vacib olduqda adapter siyahısı yerinə marşrut cədvəlindən soruşun. Defolt şlüz evristikaları çoxşəbəkəli maşınlarda və öz şlüzünü quraşdıran tunellərdə pozulur.
Kimlik: uzaq tərəfi yoxlayın
Bir neçə saniyədən bir uzaq tərəfə ICMP əks-sədası göndərən dövrə bu növdən ən ucuz yoxlamadır və faydalı istiqamətdə uğursuz olur. Onu yalnız şəxsi şəbəkə daxilində mövcud olan ünvana yönəldin, çünki açıq ünvan istənilən işlək yuxarı kanal üzərindən cavab verir və heç nə sübut etmir. ICMP süzüldüyü yerdə xidmət portuna qısa TCP qoşulması eyni işi görür.
Server tərəfindəki yoxlamanın yalnız bir siqnalı var: bağlantıdakı mənbə ünvanı. Aralıq inventarını saxlamaq texniki xidmət işidir və o, tuneli eyni blokdan istifadə edən hər hansı digər şəbəkədən ayıra bilməz.
Kobud siyasət bununla yaşaya bilər. Kimlik yaşaya bilməz, ona görə də paketlərinin görünən mənbəyinə güvənmək yerinə müştərini doğrulayın.
Verdikti deyil, kateqoriyanı qeyd edin
Uğursuzluq kateqoriyalarını jurnalda ayrı saxlayın: heç bir interfeys yoxdur, interfeys var amma təyinat əlçatmazdır, təyinat əlçatandır amma autentifikasiya rədd edilib. Bunlar üç fərqli sahibdir və hər biri fərqli araşdırma açır.
Onları bir “VPN söndü” halına gətirmək hesabatı düzəldə bilməyən komandaya göndərir. Kateqoriya faydalı çıxışdır; verdikt onu səhv edən şeydir.