Preslikati disk, preden je VPN pripravljen? Pogojite to s strežnikom
Prijavna skripta preslika delež, preden ima tunel pot. Preverite en strežnik, ki odgovarja samo prek njega, nato preslikajte v uporabnikovi seji in zabeležite rezultat.
Črka pogona se pojavi ob prijavi in se nato odpre kot prazna mapa, ali z rdečim križcem in sporočilom o nedosegljivem omrežnem viru. Dovoljenja so običajno v redu. Zgodilo se je, da se je ukaz za preslikavo izvedel v oknu, ko je odjemalec VPN obstajal, a poti do strežnika datotek ni bilo, in Windows je to napako zabeležil kot stanje pogona. Rešitev je, da preslikave ne obravnavate več kot nekaj, kar se zgodi ob prijavi, ampak kot zadnji korak zaporedja povezave.
Zakaj se preslikava izvede prezgodaj
Prijavna skripta se začne, ko se začne seja. Odjemalec VPN, ki se poveže med prijavo, doda svojo časovnico: proces lahko teče, navidezni vmesnik lahko obstaja, pot do pisarniškega podomrežja pa lahko še manjka. Ta tri stanja so z vidika skripte videti enako in deluje le eno od njih.
Nekatera okolja se odzovejo s ponavljanjem iste neuspele vrstice ob vsaki prijavi, kar ustvari uporabnika, ki se je naučil dvakrat klikniti pogon, in skripto, ki sama ni nikoli uspela.
Pogon sam poslabša stanje. Preslikan pogon je objekt seje, in ko ga Windows označi kot nedosegljivega, lahko ikona ostane pokvarjena še dolgo po tem, ko je tunel zdrav. Zato ročna ponovna preslikava deluje, medtem ko se zdi, da skripta ne naredi ničesar. Seja si zapomni neuspeh, ne namere za njim.
Stanje povezano ni pot
Ikona VPN v pladnju sporoča, ali je tunel dvignjen. Ne pove ničesar o tem, ali obstaja pot do določenega strežnika, ali DNS to ime razreši v naslov tunela, ali ali vas požarni zid strežnika samega spusti skozi.
To so tri ločene okvare z enakim vidnim izidom, in pogojitev z ikono v pladnju jih združi v en sam nezanesljiv signal.
Preverjanje pripravljenosti, ki poimenuje strežnik, ki ga resnično potrebujete jih razlikuje, ker ne uspe, dokler ne deluje konkretna pot, in ne, dokler se neka vmesnik ne razglasi za povezan.
Pogojite s strežnikom, ne z odjemalcem
Izberite enega gostitelja, dosegljivega le prek tunela, in počakajte nanj, preden karkoli preslikate. Spodnji odlomek poveže shranjen vnos VPN za Windows, preveri strežnik datotek in nato preslika pogon.
@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 je preizkus pripravljenosti, ne preizkus dovoljenj. Če je ICMP v vašem omrežju filtriran, preverite namesto tega storitev, ki jo resnično uporabljate: net view \\%server% za hitro preverjanje, ali kratek preizkus TCP na vrata 445 v PowerShellu. Oboje pogojuje tisto, kar je pomembno.
Dodajte omejeno število poskusov. Čakalna zanka brez zgornje meje spremeni pokvarjen tunel v sejo, ki nikoli ne konča prijave, in to je slabši klic v podporo kot manjkajoča črka pogona.
Naredite jo večkrat izvedljivo in seji zavedno
Izvajajte jo v seji samega uporabnika. Opravilo, ki teče kot SYSTEM, postavi pogon v povsem drugo sejo, in prijavljeni uporabnik rezultata nikoli ne vidi. Tako dobite skripto, ki poroča o uspehu, in namizje brez pogona.
Preverite pred preslikavo in odstranite le zastarel vnos. net use Z: /delete vrne napako, ko črka ni v uporabi, in to napako je varno prezreti, namesto da bi bila razlog za opustitev preostanka skripte. Ohranite /persistent:no, da se neuspešen poskus pozneje ne spremeni v trajni poskus ponovne povezave.
In ne dajajte gesla v datoteko. rasdial lahko znova uporabi poverilnice, shranjene za vnos VPN, in delež bi se moral overiti kot prijavljeni uporabnik. Če delež resnično potrebuje druge poverilnice, jih registrirajte enkrat na uporabnika s cmdkey, namesto da jih vgradite v paketno datoteko, ki leži na prijavnem deležu. Kdor lahko bere ta delež, lahko bere tudi geslo, in to spremeni udobje v incident.
Ponovna izvedba celotne skripte bi morala biti neškodljiva, ker točno to se bo zgodilo. Uporabniki se znova povežejo, prenosniki se prebudijo, in ista pot kode se izvede znova z drugim začetnim stanjem.
Zabeležite dovolj, da dokažete, katera polovica je bila pozna
Zapišite časovni žig, rezultat preverjanja pripravljenosti in izhodno kodo preslikave v datoteko pod uporabniškim profilom. Ko prispe naslednje poročilo o manjkajočem pogonu, ta dnevnik odgovori na edino pomembno vprašanje: ali je tunel prišel pozno, ali je delež zavrnil?
Brez tega se vsaka ponovitev preiskuje od začetka, in običajen sklep je sprememba dovoljenj, ki ničesar ne popravi.
Preizkusite zaporedje enkrat po hladnem zagonu in enkrat po mirovanju. Primer prebujanja je tisti, kjer se vrstni red najpogosteje zlomi, ker se seja nadaljuje pred omrežjem in skripta vidi stroj, ki je prijavljen že ure.