«Ĉu la VPN estas ŝaltita?» estas fakte tri demandoj en unu frazo. Kiun el ili via kodo bezonas estas la unua decido, kaj ĝuste tion la plej multaj realigoj preterlasas. Ĉu ekzistas tunelo sur ĉi tiu aparato, ĉu trafiko al ĉi tiu celo eliras tra ĝi, aŭ ĉu la malproksima fino respondas per la identeco, kiun vi atendas. Elektu la econ, poste elektu la signalon, kiu mezuras ĝin, kaj fine diru en la protokolo, kiun vi efektive mezuris.

Tri ecoj, tri signaloj

Kunpremitaj al unu linio po unu, la tri demandoj havas tri malsamajn respondojn. La tabelo sube estas la decido mem, ne resumo de ĝi.

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

Legu la lastan vicon malrapide. Privata gastiganto, kiu respondas, pruvas, ke io respondis, ne ke la respondo venis tra la tunelo, kaj ĝi diras nenion pri tio, kiu estas ĉe la alia fino. Se la eco, kiun vi bezonas, estas la vojo, mezuru la vojon.

Ekzisto: la propra stato de la platformo

Windows respondas tion por denaskaj profiloj per la Remote Access Service API. RasEnumConnections listigas, kio estas konektita, RasGetConnectStatus raportas la staton de unu ero, kaj RasGetLinkStatistics aldonas rapidon, bajtajn nombrilojn kaj aĝon de la konekto. La limoj estas la punkto: OpenVPN, WireGuard kaj vendistaj klientoj neniam registras RAS-konekton, do sana tunelo de tiu speco montras malplenan liston kaj naiva kodo raportas ĝin kiel malŝaltita.

Linuxaj labortabloj elmetas la saman econ per NetworkManager sur D-Bus, kie PropertiesChanged sur la VPN-konekta objekto turnas la kontrolon en eventon kaj la eco State raportas, kiam la ligilo atingas konektitan. El ŝelo, nmcli connection show --active legas la samajn informojn, kaj tion vi volas dum sencimigado. macOS tenas tiun liston en la kadro System Configuration, kun scutil kiel ĝia komandlinia vido. Ĉiuj tri priskribas konekton, kiun la platformo administras, kaj ĉiuj tri silentas pri tunelo, kiun ĝi ne administras.

Vojo: kien la pakaĵo efektive iras

Nomkongruo estas la fuĝvojo, kiun ĉiuj unue atingas: listigu interfacojn, testu la ĉenon kontraŭ tun, tap, ppp aŭ ipsec, kaj traktu trafon kiel pruvon. Ĝi estas heŭristiko, kaj la interfaca aro povas aspekti same sendepende de tio, ĉu io moviĝas tra ĝi. Pli malnovaj iOS-konstruoj respondis tiel kaj pli novaj ĉesis, ĉar la videblaj interfacoj jam ne distingis la du statojn.

Tio, kio anstataŭis ĝin tie, estas la sistema prokura vortaro. Dum VPN estas konektita, la alvoko de prokuraj agordoj redonas ŝlosilojn limigitajn al la tunelaj interfacoj, kaj kiam nenio estas konektita la vortaro revenas malplena. Tio estas pli malforta aserto ol ĝi sonas, ĉar ĝi registras sisteman kredon, ke tunelo ekzistas, anstataŭ kiun celon ĝi uzas.

Android havas sian propran version de la kaptilo: la dissendo vpn.connectivity atingas ricevilojn deklaritajn en la manifestaĵo en iuj konstruoj kaj dum-runtempajn ricevilojn en aliaj. Traktu ĝin kiel plejbonan penon, kaj tenu rektan sondilon malantaŭ ĝi.

Kiam la celo estas tio, kio gravas, demandu la enkursigan tabelon anstataŭ la adaptilan liston. Heŭristikoj de la implicita pordego rompiĝas sur plurhejmaj maŝinoj kaj sur tuneloj, kiuj instalas propran pordegon.

Identeco: sondi la malproksiman finon

Buklo, kiu sendas ICMP eĥon al la malproksima flanko ĉiujn kelkajn sekundojn, estas la plej malmultekosta kontrolo de tiu speco, kaj ĝi malsukcesas en utila direkto. Celu ĝin al adreso, kiu ekzistas nur ene de la privata reto, ĉar publika adreso respondas tra iu ajn funkcianta suprenligo kaj pruvas nenion. Kie ICMP estas filtrita, mallonga TCP-konekto al la serva pordo faras la saman taskon.

Kontrolo ĉe la servila flanko havas precize unu signalon disponeblan: la fontan adreson de la konekto. Prizorgi la inventaron de gamoj estas prizorga laboro, kaj ĝi ne povas apartigi tunelon de iu ajn alia reto, kiu hazarde uzas la saman blokon.

Malglata politiko povas vivi kun tio. Identeco ne povas, do aŭtentikigu la klienton anstataŭ fidi tion, de kie ŝajne venas ĝiaj pakaĵoj.

Registru la kategorion, ne la verdikton

Tenu la fiaskajn kategoriojn aparte en la protokolo: neniu interfaco entute, interfaco ĉeestas sed la celo neatingebla, celo atingebla sed aŭtentikigo malakceptita. Tiuj estas tri malsamaj posedantoj, kaj ĉiu malfermas malsaman esploron.

Kunfaligi ilin en unu «VPN falinta» sendas la raporton al teamo, kiu ne povas ripari ĝin. La kategorio estas la utila eligo; la verdikto estas tio, kio igas ĝin malĝusta.

Rilataj artikoloj