Li tagħmel ping lil 192.0.2.10 jgħidlek biss li indirizz wieħed wieġeb għal echo ICMP, u xejn aktar. F'netwerk mingħajr tunnel xorta jista' jirnexxi, għax l-indirizz jista' jkun fis-subnet lokali; b'tunnel b'saħħtu jista' jonqos, għax is-server jarmi l-ICMP waqt li jservi l-HTTPS. Il-verifika li l-iscript tiegħek teħtieġ hija mistoqsija tal-istat tal-pjattaforma flimkien ma' test tar-rotta lejn id-destinazzjoni li l-app tuża. Ittrattahom bħala żewġ oqsma separati, qatt bħala boolean wieħed.

X'jipprova tassew tweġiba għal echo

ICMP huwa protokoll ta' aċċessibbiltà li m'għandux kunċett ta' interfaces jew tunnels. Meta tasal tweġiba, il-kernel jirrapporta li host wieġeb; ma jirrapportax liema rotta ġarret it-talba u liema ġarret it-tweġiba. Il-filtrazzjoni tagħmel is-sinjal aktar storbjuż, għax firewall li jimblokka talbiet echo ma jgħid xejn dwar il-portijiet warajh. U profil ta' tunnel maqsum jista' apposta jeskludi l-indirizz ittestjat waqt li d-destinazzjonijiet l-oħra kollha jaħdmu.

Dak li tassew trid tkun taf huwa jekk servizz partikolari huwiex użabbli fit-triq li tieħu l-app. Agħżel il-host u l-port li l-app issejjaħ, imbagħad itlob tweġiba fil-livell tal-applikazzjoni.

Aċċessibbiltà u stat tat-tunnel huma fatti differenti, u wieħed jista' jkun veru waqt li l-ieħor ikun falz. Li żżommhom separati jgħidlek ta' min hija l-ħsara. Li tgħaqqadhom f'verifika waħda tipproduċi ticket li ħadd ma jista' jħaddem.

Staqsi lil Android għat-trasport, mhux għal ping

Android iwieġeb il-mistoqsija tal-istat direttament permezz ta' ConnectivityManager. Il-kapaċitajiet tan-netwerk attiv iġorru bandiera tat-trasport VPN, issettjata meta t-traffiku jiġi direġut minn interface VPN. Is-sejħa hija lokali, rħisa u indipendenti minn jekk xi host remot iwieġebx.

Din il-verżjoni Java tirritorna false minflok ma tarmi eċċezzjoni meta ma jkunx hemm netwerk attiv. Peress li taqra n-netwerk attiv, tirrifletti l-profil li l-utent għażel fis-Settings.

ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkCapabilities caps = cm.getNetworkCapabilities(cm.getActiveNetwork());
boolean tunnel = caps != null && caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN);

Għan-notifiki tal-bidliet, irreġistra NetworkCallback minflok ma tagħmel polling b'timer. Tħallatx dan ma' VpnService.prepare, li jirrapporta biss jekk l-utent taxx il-permess għal VPN, mhux jekk il-pakketti qed jgħaddu. Ir-revoka tasal permezz ta' VpnService.onRevoke, iżda li tinsa profil fis-Settings ma tipproduċi ebda xandir.

iOS: l-ismijiet tal-interfaces huma heuristika, mhux kuntratt

Ħafna snippets tal-iOS jeżaminaw is-settings tal-proxy, isibu d-dizzjunarju __SCOPED__ u jfittxu ċavetti tal-interface bħal tap, tun, utun2, ppp jew ipsec. Dan l-approċċ hija konvenzjoni tal-ismijiet, mhux garanzija dokumentata, allura aġġornament tal-OS li jbiddel isem ta' interface jista' jkissru. Għandu wkoll tendenza jirrapporta true għal entrati antiki li jgħixu aktar mit-tunnel.

Meta l-app tiegħek għandha l-konfigurazzjoni, NEVPNManager jagħtik stat veru minflok. Jiddeskrivi t-tunnel li bdiet l-app tiegħek; b'VPN għal kull app, apps oħra jistgħu jkunu kompletament barra minn dak it-tunnel.

Erġa' għabbi l-preferenzi qabel ma taqra l-istat, għax il-valur jinbidel hekk kif it-tunnel jitla' u jinżel:

let manager = NEVPNManager.shared()
manager.loadFromPreferences { error in
    let up = manager.connection.status == .connected
    print(up)
}

Bandiera tal-istat tal-pjattaforma xorta ma tippruvax li t-traffiku jasal għand il-peer. Dak id-distakk tkoprih it-test tar-rotta, u għalhekk boolean wieħed mhuwiex biżżejjed għas-support.

Il-profili ta' Windows juru qasam tal-istat veru

Windows issegwi l-profili VPN separatament mill-adapters, u Get-VpnConnection juri ConnectionStatus għal kull profil li jaf bih. Hawn jidhru profili maħluqa mill-klijent ta' Windows jew minn pakkett ta' provviżjoni. Dan il-cmdlet mhuwiex ditektor ġenerali tat-tunnels.

Aqra l-qasam għal profil bl-isem, u żid -AllUserConnection meta l-profil ikun tal-utenti kollha:

Get-VpnConnection -Name "Fabrikam" | Select-Object Name, ConnectionStatus, ServerAddress

Klijenti ta' partijiet terzi spiss jibqgħu inviżibbli għal dan il-cmdlet anki meta t-tunnel tagħhom ikun attiv, allura riżultat vojt ifisser mhux magħruf, mhux skonness. Il-listi tal-adapters iqarrqu bl-istess mod: adapter tal-fornitur jista' jibqa' waqt li jkun idle, u xi adapters jeżistu biss waqt sessjoni. Għal profil li Windows għandu, rasdial jirrapporta kodiċi tal-ħruġ li tista' tferrgħu. Dan kollu jiddeskrivi twemmin lokali, mhux l-aċċessibbiltà tal-peer.

Stat flimkien ma' rotta: il-verifika f'żewġ partijiet

Profil konness ma jgħid xejn dwar fejn imorru l-pakketti. Tunnel maqsum jista' jżomm it-tunnel attiv waqt li jeskludi d-destinazzjoni li tinteressak. Profili always-on jibqgħu konnessi ma' server mejjet, u kill switch jimblokka t-traffiku apposta meta t-tunnel jaqa'.

Ittestja ż-żewġ livelli: ikkonferma li trasport VPN jew profil huwa attiv, imbagħad ikkonferma li d-destinazzjoni tiġi riżolta u twieġeb tul dik ir-rotta. Fuq Linux, staqsi lill-kernel liema interface juża:

ip route get 192.0.2.10
resolvectl query intranet.example.test

Meta l-klijent ikun barra mill-kontroll tiegħek, irreġistra ż-żewġ riżultati u ħalli l-mudell jindika l-livell. Konness flimkien ma' test tar-rotta fallut jissuġġerixxi tunnel maqsum, DNS jew politika. Skonness flimkien ma' test tar-rotta li jaħdem ifisser li rotta oħra qed iġġorr it-traffiku.

Test li tista' tmexxi fl-ordni

Irreġistra l-istat tal-pjattaforma l-ewwel, qabel ma tbiddel kwalunkwe stat tan-netwerk. Irriżolvi l-isem tal-host u nnota l-familja tal-indirizzi, għax rekord AAAA jista' jieħu rotta differenti minn rekord A. Iftaħ il-port tas-servizz u itlob tweġiba tal-applikazzjoni minflok sempliċi handshake. Żomm kull osservazzjoni fil-qasam tal-log tagħha.

Fuq magna Linux b'dig u curl, tliet kmand jkopru r-riżoluzzjoni, ir-rotta u s-servizz innifsu. Mexxihom bit-tunnel 'il fuq u għal darb'oħra meta jkun 'l isfel:

dig +short intranet.example.test
ip route get 198.51.100.20
curl -sS -o /dev/null -w "%{http_code}" --max-time 8 https://intranet.example.test/health

Erba' oqsma separati jegħlbu boolean wieħed, għax stat, DNS, rotta u politika jonqsu b'mod indipendenti u jispiċċaw fi timijiet differenti. Ping fit-terminal jibqa' verifika manwali tajba. Hija definizzjoni fqira tal-konnettività għall-awtomazzjoni, fejn l-API tal-pjattaforma u test tar-rotta jwieġbu l-mistoqsija vera.

Artikli relatati