Mapezi unitatea înainte ca VPN-ul să fie gata? Condiționează de server
Un script de autentificare mapează partajarea înainte ca tunelul să aibă rută. Verifică un server care răspunde doar prin el, apoi mapează în sesiunea utilizatorului și înregistrează rezultatul.
Litera de unitate apare la autentificare și apoi se deschide ca un folder gol, sau cu o cruce roșie și un mesaj despre o resursă de rețea indisponibilă. Permisiunile sunt de obicei în regulă. Ce s-a întâmplat este că comanda de mapare a rulat în fereastra în care clientul VPN exista, dar nu exista nicio rută către serverul de fișiere, iar Windows a înregistrat acel eșec ca stare a unității. Soluția este să nu mai tratăm maparea ca pe ceva ce se întâmplă la autentificare și să o tratăm ca pe ultimul pas al unei secvențe de conectare.
De ce maparea rulează prea devreme
Un script de autentificare începe când începe sesiunea. Un client VPN care se conectează în timpul autentificării adaugă propria cronologie deasupra: procesul poate rula, adaptorul virtual poate exista, iar ruta către subrețeaua biroului poate lipsi încă. Aceste trei stări arată la fel din perspectiva unui script și doar una dintre ele funcționează.
Unele medii reacționează repetând aceeași linie eșuată la fiecare autentificare, ceea ce produce un utilizator care a învățat să dea două clicuri pe unitate și un script care nu a reușit niciodată singur.
Unitatea în sine înrăutățește lucrurile. O unitate mapată este un obiect de sesiune, iar după ce Windows a marcat-o ca indisponibilă, pictograma poate rămâne stricată mult timp după ce tunelul este sănătos. De aceea remapare manuală funcționează în timp ce scriptul pare că nu face nimic. Sesiunea își amintește eșecul, nu intenția din spatele lui.
Starea conectat nu este o cale
Pictograma VPN din tavă raportează dacă tunelul este ridicat. Nu spune nimic despre existența unei rute către un anumit server, dacă DNS rezolvă acel nume la adresa tunelului, sau dacă firewallul serverului însuși vă acceptă.
Sunt trei eșecuri separate cu același rezultat vizibil, iar condiționarea de pictograma din tavă le contopește într-un singur semnal nesigur.
O verificare de disponibilitate care numește serverul de care aveți cu adevărat nevoie le distinge, pentru că eșuează până funcționează calea concretă, și nu până când vreo interfață se declară conectată.
Condiționează de server, nu de client
Alegeți un singur host accesibil doar prin tunel și așteptați-l înainte de a mapa ceva. Fragmentul de mai jos conectează o intrare VPN Windows salvată, verifică serverul de fișiere și apoi mapează unitatea.
@echo off
set server=fileserver.corp.example
rasdial "Office VPN" /disconnect
rasdial "Office VPN"
:wait
ping -n 1 -w 1000 %server% >nul || (
timeout /t 5 /nobreak >nul
goto wait
)
net use Z: \\%server%\share /persistent:no
Ping este o sondă de disponibilitate, nu un test de permisiuni. Dacă ICMP este filtrat în rețeaua dumneavoastră, verificați în schimb serviciul pe care îl folosiți cu adevărat: net view \\%server% pentru o verificare rapidă, sau un test TCP scurt pe portul 445 în PowerShell. Oricare dintre ele condiționează de lucrul care contează.
Adăugați un număr limitat de încercări. O buclă de așteptare fără plafon transformă un tunel stricat într-o sesiune care nu termină niciodată autentificarea, iar asta este un apel de suport mai rău decât o literă de unitate lipsă.
Faceți-l reexecutabil și conștient de sesiune
Rulați-l în sesiunea utilizatorului însuși. O sarcină care rulează ca SYSTEM pune unitatea într-o sesiune complet diferită, iar utilizatorul autentificat nu vede niciodată rezultatul. Astfel obțineți un script care raportează succes și un desktop fără unitate.
Verificați înainte de a mapa și eliminați doar intrarea învechită. net use Z: /delete returnează o eroare când litera nu este folosită, iar acea eroare poate fi ignorată în siguranță în loc să fie un motiv de a abandona restul scriptului. Păstrați /persistent:no pentru ca o încercare eșuată să nu devină mai târziu o încercare permanentă de reconectare.
Și nu puneți o parolă în fișier. rasdial poate refolosi acreditările salvate pentru intrarea VPN, iar partajarea ar trebui să se autentifice ca utilizatorul conectat. Dacă partajarea are într-adevăr nevoie de alte acreditări, înregistrați-le o dată per utilizator cu cmdkey în loc să le încorporați într-un fișier batch care stă pe o partajare de autentificare. Oricine poate citi acea partajare poate citi și parola, iar asta transformă o comoditate într-un incident.
Reexecutarea întregului script ar trebui să fie inofensivă, pentru că exact asta se va întâmpla. Utilizatorii se reconectează, laptopurile se trezesc, iar aceeași cale de cod rulează din nou cu o stare inițială diferită.
Înregistrați suficient pentru a demonstra care jumătate a întârziat
Scrieți marca temporală, rezultatul verificării de disponibilitate și codul de ieșire al mapării într-un fișier sub profilul utilizatorului. Când sosește următorul raport despre o unitate lipsă, acel jurnal răspunde la singura întrebare care contează: a sosit tunelul târziu sau partajarea a refuzat?
Fără el, fiecare recurență este investigată de la zero, iar concluzia obișnuită este o modificare de permisiuni care nu repară nimic.
Testați secvența o dată de la o pornire la rece și o dată din repaus. Cazul trezirii este cel în care ordinea se strică cel mai des, pentru că sesiunea se reia înainte de rețea și scriptul vede o mașină autentificată de ore întregi.