„Je VPN vklopljen?” so v resnici tri vprašanja v enem stavku. Katero od njih potrebuje vaša koda, je prva odločitev, in prav to večina izvedb preskoči. Ali na tej napravi obstaja tunel, ali promet do tega cilja odhaja skozenj, ali oddaljeni konec odgovori z identiteto, ki jo pričakujete. Izberite lastnost, nato izberite signal, ki jo meri, in na koncu v dnevnik zapišite, katero ste v resnici izmerili.

Tri lastnosti, trije signali

Stisnjena na eno vrstico vsaka, imajo tri vprašanja tri različne odgovore. Spodnja tabela je odločitev sama, ne njen povzetek.

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

Preberite zadnjo vrstico počasi. Zasebni gostitelj, ki odgovori, dokazuje, da je nekaj odgovorilo, ne pa da je odgovor prišel skozi tunel, in ne pove ničesar o tem, kdo je na drugi strani. Če je lastnost, ki jo potrebujete, pot, merite pot.

Obstoj: lastno stanje platforme

Windows to za izvorne profile odgovori prek Remote Access Service API. RasEnumConnections našteje, kaj je povezano, RasGetConnectStatus poroča stanje enega vnosa, RasGetLinkStatistics pa doda hitrost, števce bajtov in starost povezave. Omejitve so bistvo: OpenVPN, WireGuard in odjemalci proizvajalcev nikoli ne registrirajo povezave RAS, zato zdrav tunel te vrste pokaže prazen seznam in naivna koda ga prijavi kot izklopljenega.

Namizja Linux razkrijejo isto lastnost prek NetworkManagerja na D-Bus, kjer PropertiesChanged na objektu povezave VPN spremeni preverjanje v dogodek in lastnost State poroča, kdaj povezava doseže stanje povezano. Iz lupine nmcli connection show --active bere iste informacije, in to je tisto, kar želite med razhroščevanjem. macOS hrani ta seznam v ogrodju System Configuration, scutil pa je njegov pogled iz ukazne vrstice. Vse tri opisujejo povezavo, ki jo upravlja platforma, in vse tri utihnejo za tunel, ki ga ne upravlja.

Pot: kam paket v resnici gre

Ujemanje imen je bližnjica, po kateri vsi najprej posežejo: naštejte vmesnike, preizkusite niz proti tun, tap, ppp ali ipsec in zadetek vzemite kot dokaz. To je heuristika, in nabor vmesnikov je lahko videti enak ne glede na to, ali gre kaj skozenj. Starejše različice iOS so odgovarjale tako, novejše pa so prenehale, ker vidni vmesniki niso več razlikovali obeh stanj.

Kar je to tam nadomestilo, je sistemski slovar proxyja. Dokler je VPN povezan, klic nastavitev proxyja vrne ključe, omejene na vmesnike, povezane s tunelom, in ko ni nič povezano, se slovar vrne prazen. To je šibkejša trditev, kot se sliši, ker beleži sistemsko prepričanje, da tunel obstaja, ne pa, kateri cilj ga uporablja.

Android ima svojo različico te pasti: oddajanje vpn.connectivity doseže prejemnike, deklarirane v manifestu, v nekaterih gradnjah in prejemnike, registrirane med izvajanjem, v drugih. Obravnavajte ga kot najboljši trud in za njim obdržite neposredno sondo.

Ko je cilj tisto, kar šteje, vprašajte usmerjevalno tabelo namesto seznama adapterjev. Heuristike privzetega prehoda se zlomijo na strojih z več omrežji in na tunelih, ki namestijo svoj prehod.

Identiteta: preizkusite oddaljeni konec

Zanka, ki vsakih nekaj sekund pošlje odmev ICMP na oddaljeni konec, je najcenejše preverjanje te vrste in odpove v koristno smer. Usmerite jo na naslov, ki obstaja samo znotraj zasebnega omrežja, ker javni odgovori prek katere koli delujoče povezave navzgor in ne dokaže ničesar. Kjer je ICMP filtriran, opravi isto delo kratka povezava TCP na vrata storitve.

Preverjanje na strani strežnika ima na voljo natanko en signal: naslov vira na povezavi. Vzdrževanje evidence obsegov je vzdrževalno delo in ne more ločiti tunela od katerega koli drugega omrežja, ki slučajno uporablja isti blok.

Groba politika lahko živi s tem. Identiteta ne more, zato overite odjemalca, namesto da bi zaupali temu, od kod se zdi, da prihajajo njegovi paketi.

Zapišite kategorijo, ne razsodbe

Kategorije napak imejte v dnevniku ločene: nobenega vmesnika, vmesnik je, a cilj ni dosegljiv, cilj je dosegljiv, a overjanje je zavrnjeno. To so trije različni lastniki in vsak odpre drugačno preiskavo.

Če jih zlijete v en sam „VPN je dol”, pošljete poročilo ekipi, ki tega ne more popraviti. Kategorija je koristen izhod; razsodba je tisto, kar ga naredi napačnega.

Sorodni članki