„Is de VPN oan?” binne eins trije fragen yn ien sin. Hokker fan dy’t jo code nedich hat is de earste beslissing, en krekt dy slaan de measte ymplemintaasjes oer. Bestiet der in tunnel op dit apparaat, ferlit ferkear nei dit bestimming him trochhinne, of antwurdet it fiere ein mei de identiteit dy’t jo ferwachtsje. Kies de eigenskip, kies dan it sinjaal dat dy mjit, en sis dan yn it log hokker jo echt metten hawwe.

Trije eigenskippen, trije sinjalen

Yndrukt ta ien rigel elk hawwe de trije fragen trije ferskillende antwurden. De tabel hjirûnder is de beslissing sels, net in gearfetting derfan.

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

Lês de lêste rigel stadich. In partikuliere host dy’t antwurdet bewiist dat der wat antwurde, net dat it antwurd troch de tunnel kaam, en hy seit neat oer wa’t oan de oare kant is. As de eigenskip dy’t jo nedich hawwe it paad is, mjit dan it paad.

Bestean: de eigen steat fan it platfoarm

Windows antwurdet dit foar lânseigen profilen fia de Remote Access Service API. RasEnumConnections listet op wat ferbûn is, RasGetConnectStatus rapportearret de steat fan ien yngong, en RasGetLinkStatistics foeget snelheid, byte-tellers en de leeftyd fan ’e ferbining ta. De grinzen binne it punt: OpenVPN, WireGuard en klanten fan leveransiers registrearje nea in RAS-ferbining, dus in sûne tunnel fan dat type lit in lege list sjen en naïve code rapportearret him as út.

Linux-buroblêden eksposearje deselde eigenskip fia NetworkManager op D-Bus, wêr’t PropertiesChanged op it VPN-ferbiningsobject de kontrôle yn in barren feroaret en de eigenskip State rapportearret wannear’t de keppeling ferbûn berikt. Fan in shell lêst nmcli connection show --active deselde ynformaasje, en dat is wat jo by it debuggen wolle. macOS hâldt dy list yn it System Configuration-ramt, mei scutil as syn werjefte fan de opdrachtline. Alle trije beskriuwe in ferbining dy’t it platfoarm beheart, en alle trije wurde stil foar in tunnel dy’t it net beheart.

Paad: wêr’t it pakket echt hinne giet

Nammatching is de koarte wei dêr’t elkenien earst nei grypt: list de ynterfaces op, test de tekenrige tsjin tun, tap, ppp of ipsec, en nim in treffer as bewiis. It is in heuristyk, en de ynterfaceset kin itselde lykje oft der no wat trochhinne beweecht of net. Aldere iOS-buils antwurden sa en letteren holden op, om’t de sichtbere ynterfaces de beide steaten net mear ûnderskiede.

Wat it dêr ferfong is it systeem-proxywurdboek. Wylst in VPN ferbûn is, jout de oprop fan proxy-ynstellingen kaaien werom dy’t beheind binne ta de oan ’e tunnel besibbe ynterfaces, en as der neat ferbûn is komt it wurdboek leech werom. Dat is in swakkere bewearing as it klinkt, om’t it de systeemoertsjûging fêstleit dat der in tunnel bestiet, net hokker bestimming him brûkt.

Android hat syn eigen ferzje fan ’e falstrik: de vpn.connectivity-útstjoering berikt ûntfangers dy’t yn it manifest ferklearre binne op guon buils en by runtime registrearre ûntfangers op oaren. Behannelje it as bêste poging, en hâld in direkte sonde efter it.

As it bestimming is wat telt, freegje dan de routingtabel yn plak fan ’e adapterlist. Heuristiken foar de standertgateway brekke op masines mei meardere netwurken en op tunnels dy’t har eigen gateway ynstallearje.

Identiteit: ûndersykje it fiere ein

In lus dy’t elke pear sekonden in ICMP-eko nei it fiere ein stjoert is de goedkeapste kontrôle fan dit soarte, en it mislearret yn in nuttige rjochting. Rjochtsje it op in adres dat allinnich binnen it partikuliere netwurk bestiet, om’t in iepenbier adres oer elke wurkjende uplink antwurdet en neat bewiist. Wêr’t ICMP filtere wurdt, docht in koarte TCP-ferbining mei de tsjinstpoarte itselde wurk.

In kontrôle oan ’e serverside hat krekt ien sinjaal ta syn beskikking: it boarne-adres op ’e ferbining. It ûnderhâlden fan ’e ynventaris fan berikken is ûnderhâldswurk, en it kin in tunnel net skiede fan elk oar netwurk dat tafallich itselde blok brûkt.

Rûge belied kin dêrmei libje. Identiteit kin dat net, dus autentisearje de klant yn plak fan te fertrouwen wêr’t syn pakketten wei lykje te kommen.

Log de kategory, net it fûnis

Hâld de flaterkategoryen apart yn it log: gjin ynterface hielendal, ynterface oanwêzich mar it bestimming net berikber, bestimming berikber mar autentikaasje wegere. Dat binne trije ferskillende eigners, en elk iepenet in oar ûndersyk.

Se gearfetsje ta ien „VPN del” stjoert it rapport nei in team dat it net reparearje kin. De kategory is de nuttige útkomst; it fûnis is wat it ferkeard makket.

Relatearre artikelen