Aseman kirjain ilmestyy kirjautuessa ja avautuu sitten tyhjänä kansiona tai punaisella ristillä ja viestillä tavoittamattomasta verkkoresurssista. Käyttöoikeudet ovat yleensä kunnossa. Kävi niin, että yhdistämiskomento ajettiin ikkunassa, jossa VPN-asiakas oli olemassa mutta reittiä tiedostopalvelimelle ei ollut, ja Windows tallensi epäonnistumisen aseman tilaksi. Ratkaisu on lakkauttaa yhdistämisen pitäminen kirjautumisen yhteydessä tapahtuvana asiana ja käsitellä sitä yhteyssekvenssin viimeisenä vaiheena.

Miksi yhdistäminen ajetaan liian aikaisin

Kirjautumisskripti alkaa, kun istunto alkaa. Kirjautumisen aikana yhdistävä VPN-asiakas lisää oman aikajanansa päälle: prosessi voi olla käynnissä, virtuaalinen sovitin voi olla olemassa ja reitti toimiston aliverkkoon voi vielä puuttua. Nämä kolme tilaa näyttävät skriptin näkökulmasta samalta, ja vain yksi niistä toimii.

Jotkin ympäristöt reagoivat toistamalla saman epäonnistuvan rivin joka kirjautumisella, mikä tuottaa käyttäjän, joka on oppinut kaksoisklikkaamaan asemaa, ja skriptin, joka ei ole kertaakaan onnistunut itsestään.

Itse asema pahentaa tilannetta. Yhdistetty asema on istunnon objekti, ja kun Windows on merkinnyt sen tavoittamattomaksi, kuvake voi pysyä rikki kauan sen jälkeen, kun tunneli on kunnossa. Siksi uudelleenyhdistäminen käsin toimii, kun taas skripti näyttää tekevän ei mitään. Istunto muistaa epäonnistumisen, ei sen taustalla ollutta aikomusta.

Yhdistetty tila ei ole reitti

Ilmaisinalueen VPN-kuvake kertoo, onko tunneli pystyssä. Se ei kerro, onko reittiä tiettyyn palvelimeen olemassa, ratkaiseeko DNS sen nimen tunnelin osoitteeksi, eikä sitä, hyväksyykö palvelimen oma palomuuri sinut.

Nämä ovat kolme erillistä vikaa, joilla on sama näkyvä lopputulos, ja ilmaisinalueen kuvakkeesta riippuvaksi tekeminen sulattaa ne yhdeksi epäluotettavaksi signaaliksi.

Valmiustarkistus, joka nimeää palvelimen, jota todella tarvitset erottaa ne, koska se epäonnistuu, kunnes tietty reitti toimii, eikä ennen kuin jokin liitäntä ilmoittaa olevansa yhdistetty.

Tee riippuvuus palvelimesta, ei asiakkaasta

Valitse yksi isäntä, joka on tavoitettavissa vain tunnelin kautta, ja odota sitä ennen kuin yhdistät mitään. Alla oleva katkelma yhdistää tallennetun Windows VPN -merkinnän, kysyy tiedostopalvelinta ja yhdistää sitten aseman.

@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 on valmiustarkistus, ei käyttöoikeustesti. Jos ICMP suodatetaan verkossasi, tarkista sen sijaan palvelu, jota todella käytät: net view \\%server% nopeaan tarkistukseen tai lyhyt TCP-testi porttiin 445 PowerShellissä. Kumpikin tekee olennaisesta asiasta riippuvan.

Lisää rajoitettu määrä yrityksiä. Odotussilmukka ilman ylärajaa muuttaa rikkinäisen tunnelin istunnoksi, joka ei koskaan saa kirjautumista valmiiksi, ja se on pahempi tukipuhelu kuin puuttuva aseman kirjain.

Tee siitä uudelleen ajettava ja istuntotietoinen

Aja se käyttäjän omassa istunnossa. SYSTEM-tilassa ajettava tehtävä sijoittaa aseman täysin eri istuntoon, eikä kirjautunut käyttäjä näe tulosta koskaan. Näin saat skriptin, joka raportoi onnistumisesta, ja työpöydän, jossa ei ole asemaa.

Tarkista ennen yhdistämistä ja poista vain vanhentunut merkintä. net use Z: /delete palauttaa virheen, kun kirjain ei ole käytössä, ja sen virheen voi turvallisesti jättää huomiotta sen sijaan, että se olisi syy luopua skriptin lopusta. Pidä /persistent:no, jotta epäonnistunut yritys ei myöhemmin muutu pysyväksi uudelleenyhdistämisyritykseksi.

Äläkä laita salasanaa tiedostoon. rasdial voi käyttää uudelleen VPN-merkinnälle tallennettuja tunnistetietoja, ja jaon pitäisi todentaa kirjautuneena käyttäjänä. Jos jako todella tarvitsee eri tunnistetiedot, rekisteröi ne kerran käyttäjää kohden cmdkey-komennolla sen sijaan, että upotat ne batch-tiedostoon, joka sijaitsee kirjautumisen jaossa. Kuka tahansa, joka voi lukea jaon, voi lukea salasanan, ja se muuttaa mukavuuden tapaukseksi.

Koko skriptin uudelleen ajaminen pitäisi olla vaaratonta, koska juuri niin tulee tapahtumaan. Käyttäjät yhdistävät uudelleen, kannettavat heräävät, ja sama koodipolku ajetaan uudelleen erilaisella lähtötilalla.

Kirjaa tarpeeksi, jotta voit todistaa kumpi puoli myöhästyi

Kirjoita aikaleima, valmiustarkistuksen tulos ja yhdistämisen poistumiskoodi tiedostoon käyttäjäprofiilin alle. Kun seuraava ilmoitus puuttuvasta asemasta saapuu, se loki vastaa ainoaan tärkeään kysymykseen: tuliko tunneli myöhässä vai kieltäytyikö jako?

Ilman sitä jokainen toistuma tutkitaan alusta, ja tavallinen johtopäätös on käyttöoikeusmuutos, joka ei korjaa mitään.

Testaa sekvenssi kerran kylmäkäynnistyksestä ja kerran unesta. Heräämisen tapaus on se, jossa järjestys useimmin rikkoutuu, koska istunto jatkuu ennen verkkoa ja skripti näkee koneen, joka on ollut kirjautuneena tunteja.

Aiheeseen liittyvät artikkelit