Nola egiaztatu VPNaren egoera ping egin gabe Android, iOS eta Windowsen
Ping-ek host batek erantzun duela soilik frogatzen du, ez tunela martxan dagoenik. Galdetu Android, iOS eta Windowsen egoera API-ei, eta gero egiaztatu zure aplikazioak benetan behar duen ibilbidea.
192.0.2.10 helbideari ping egiteak ICMP oihartzun bati helbide bat erantzun diola esaten dizu, eta besterik ez. Tunelik gabeko sarean arrakastatsua izan daiteke, helbidea tokiko azpisarean egon baitaiteke; tunel osasuntsuarekin huts egin dezake, zerbitzariak ICMP botatzen duelako HTTPS zerbitzatzen duen bitartean. Zure script-ak behar duen egiaztapena plataformaren egoera-kontsulta bat da, gehi aplikazioak erabiltzen duen helmugarako ibilbide-proba bat. Tratatu bi eremu bereizi gisa, inoiz ez boolean bakar gisa.
Zer frogatzen du benetan oihartzun-erantzun batek
ICMP irisgarritasun-protokoloa da, interfaze edo tunelik ezagutzen ez duena. Erantzuna iristen denean, kernelak host batek erantzun duela jakinarazten du; ez du jakinarazten zein ibilbidek eraman zuen eskaera edo erantzuna. Iragazketak seinalea are zaratatsuagoa egiten du, oihartzun-eskaerak blokeatzen dituen suebakiak ez baitu ezer esaten atzean dauden porteei buruz. Eta tunel zatitua duen profilek probatutako helbidea nahita bazter dezake, gainerako helmuga guztiek funtzionatzen duten bitartean.
Benetan jakin nahi duzuna da zerbitzu jakin bat erabilgarri ote dagoen aplikazioak hartzen duen bidean. Aukeratu aplikazioak deitzen dituen hosta eta portua, eta gero eskatu erantzun bat aplikazio-geruzan.
Irisgarritasuna eta tunelaren egoera gertaera desberdinak dira, eta bakoitza egia izan daiteke bestea faltsua den bitartean. Bereiz edukitzeak hutsa norena den esaten dizu. Bakarrik egiaztapen batean fusionatzeak inork bideratu ezin duen tiket bat sortzen du.
Galdetu Androidi garraioari buruz, ez ping bati buruz
Androidek egoera-galderari zuzenean erantzuten dio ConnectivityManager-en bidez. Sare aktiboaren gaitasunek VPN garraio-bandera daramate, trafikoa VPN interfaze batetik bideratzen denean ezartzen dena. Deia lokala eta merkea da, eta ez du inolako urruneko hostek erantzuten duen ala ez kontuan hartzen.
Java bertsio honek false itzultzen du, salbuespenik jaurti gabe, sare aktiborik ez dagoenean. Sare aktiboa irakurtzen duenez, erabiltzaileak Ezarpenetan aukeratu duen profila islatzen du.
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkCapabilities caps = cm.getNetworkCapabilities(cm.getActiveNetwork());
boolean tunnel = caps != null && caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN);
Aldaketa-jakinarazpenetarako, erregistratu NetworkCallback bat, tenporizadorearekin inkestatu beharrean. Ez nahastu hori VpnService.prepare-rekin, honek soilik jakinarazten baitu erabiltzaileak VPN baterako baimena eman duen, ez paketeak isurtzen ari diren. Errebokatzea VpnService.onRevoke bidez iristen da, baina Ezarpenetan profil bat ahazteak ez du inongo difusiorek sortzen.
iOS: interfaze-izenak heuristika bat dira, ez kontratu bat
iOS zatiki askok proxy ezarpenak aztertzen dituzte, __SCOPED__ hiztegia aurkitzen dute eta tap, tun, utun2, ppp edo ipsec bezalako interfaze-gakoak bilatzen dituzte. Hurbilketa hori izendapen-konbentzio bat da, ez dokumentatutako bermea, beraz interfaze bat berrizendatzen duen sistema-eguneratze batek hauts dezake. Gainera, tunelari bizirik dirauten sarrera zaharkituentzat egia emateko joera du.
Zure aplikazioa konfigurazioaren jabe denean, NEVPNManager-ek benetako egoera ematen dizu. Zure aplikazioak hasitako tunela deskribatzen du; aplikazio bakoitzeko VPN batekin, beste aplikazioak tunel horretatik erabat kanpo egon daitezke.
Berriz kargatu hobespenak egoera irakurri aurretik, balioa aldatzen baita tunela joan-etorrian dabilen heinean:
let manager = NEVPNManager.shared()
manager.loadFromPreferences { error in
let up = manager.connection.status == .connected
print(up)
}
Plataformaren egoera-bandera batek oraindik ez du frogatzen trafikoak parekoa iristen duenik. Hutsune hori estaltzen du ibilbide-probak, eta horregatik ez da boolean bat nahikoa laguntzarako.
Windows profilek benetako egoera-eremu bat erakusten dute
Windowsek VPN profilak egokitzaileetatik bereizita jarraitzen ditu, eta Get-VpnConnection-ek ConnectionStatus bat erakusten du ezagutzen duen profil bakoitzeko. Windows bezeroaren edo hornidura-pakete baten bidez sortutako profilak hemen agertzen dira. Cmdlet hau ez da tunelen detektagailu orokor bat.
Irakurri eremua izendatutako profil baterako, -AllUserConnection gehituta profila erabiltzaile guztiena denean:
Get-VpnConnection -Name "Fabrikam" | Select-Object Name, ConnectionStatus, ServerAddress
Hirugarrenen bezeroak sarritan ikusezinak izaten dira cmdlet honentzat, beren tunela martxan egon arren, beraz emaitza hutsak ezezaguna esan nahi du, ez deskonektatua. Egokitzaileen zerrendek ere engainatzen dute: saltzailearen egokitzaile bat egon daiteke alferrik dagoela, eta egokitzaile batzuk saio batean soilik existitzen dira. Windowsek duen profil baterako, rasdial-ek irteera-kode bat jakinarazten du, eta horren arabera adarkatu dezakezu. Horiek guztiek tokiko ustea deskribatzen dute, ez parekoaren irisgarritasuna.
Egoera gehi ibilbidea: bi zatiko egiaztapena
Konektatutako profil batek ez du ezer esaten paketeak nora doazen. Tunel zatuak tunela martxan eduki dezake zure helmuga baztertuz. Always-on profilek zerbitzari hil batekin konektatuta jarraitzen dute, eta kill switch batek trafikoa nahita blokeatzen du tunela erortzen denean.
Probatu bi geruzak: egiaztatu VPN garraio edo profil bat aktibo dagoela, eta gero helmuga ebazten dela eta bide horretatik erantzuten duela. Linuxen, galdetu kernelari zein interfaze erabiliko lukeen:
ip route get 192.0.2.10
resolvectl query intranet.example.test
Bezeroa zure kontroletik kanpo dagoenean, erregistratu bi emaitzak eta utzi ereduari geruza seinalatzen. Konektatua eta ibilbide-proba huts egina tunel zatiak, DNSak edo politikak iradokitzen du. Deskonektatua eta ibilbide-proba ongi dabilena esan nahi du beste bide batek daramala trafikoa.
Ordenan exekuta dezakezun proba bat
Erregistratu lehenengo plataformaren egoera, sare-egoerarik aldatu aurretik. Ebatz ezazu host-izena eta ohartu helbide-familiaz, AAAA erregistro batek A erregistroak ez bezalako bidea har baitezake. Ireki zerbitzuaren portua eta eskatu aplikazio-erantzun bat, eskuko ukipen soil bat ez. Eduki behaketa bakoitza bere log-eremuan.
dig eta curl dituen Linux makinan, hiru komenduk ebazpena, ibilbidea eta zerbitzua bera hartzen dituzte. Exekutatu tunela martxan dagoela eta berriro erorita dagoela:
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
Lau eremu bereizik boolean bat gainditzen dute, egoera, DNSa, ibilbidea eta politika modu independentean huts egiten baitute eta talde desberdinetara iristen. Terminaleko ping-ek eskuzko zentzuzko egiaztapen ona izaten jarraitzen du. Konektibitatearen definizio txarra da automatizaziorako, han plataformaren APIak eta ibilbide-proba batek benetako galderari erantzuten baitiote.