Το γράμμα του δίσκου εμφανίζεται κατά τη σύνδεση και μετά ανοίγει ως κενός φάκελος, ή με κόκκινο σταυρό και μήνυμα για μη διαθέσιμο πόρο δικτύου. Τα δικαιώματα συνήθως είναι εντάξει. Αυτό που συνέβη είναι ότι η εντολή αντιστοίχισης έτρεξε στο διάστημα όπου ο πελάτης VPN υπήρχε αλλά δεν υπήρχε διαδρομή προς τον διακομιστή αρχείων, και τα Windows κατέγραψαν αυτή την αποτυχία ως κατάσταση του δίσκου. Η λύση είναι να πάψετε να αντιμετωπίζετε την αντιστοίχιση ως κάτι που συμβαίνει κατά τη σύνδεση και να τη θεωρείτε το τελευταίο βήμα μιας ακολουθίας σύνδεσης.

Γιατί η αντιστοίχιση τρέχει πολύ νωρίς

Ένα σενάριο σύνδεσης ξεκινά όταν ξεκινά η συνεδρία. Ένας πελάτης VPN που συνδέεται κατά τη σύνδεση προσθέτει το δικό του χρονοδιάγραμμα από πάνω: η διεργασία μπορεί να τρέχει, ο εικονικός προσαρμογέας μπορεί να υπάρχει, και η διαδρομή προς το υποδίκτυο του γραφείου μπορεί να λείπει ακόμη. Αυτές οι τρεις καταστάσεις μοιάζουν ίδιες από τη σκοπιά ενός σεναρίου και μόνο μία από αυτές λειτουργεί.

Μερικά περιβάλλοντα αντιδρούν επαναλαμβάνοντας την ίδια αποτυχημένη γραμμή σε κάθε σύνδεση, κάτι που παράγει έναν χρήστη που έχει μάθει να κάνει διπλό κλικ στον δίσκο και ένα σενάριο που δεν έχει πετύχει ποτέ μόνο του.

Ο ίδιος ο δίσκος το χειροτερεύει. Ένας αντιστοιχισμένος δίσκος είναι αντικείμενο συνεδρίας, και μόλις τα Windows τον σημάνουν ως μη διαθέσιμο, το εικονίδιο μπορεί να μείνει σπασμένο πολύ αφότου το τούνελ είναι υγιές. Γι' αυτό η χειροκίνητη επαναντιστοίχιση λειτουργεί ενώ το σενάριο μοιάζει να μην κάνει τίποτα. Η συνεδρία θυμάται την αποτυχία, όχι την πρόθεση πίσω από αυτήν.

Η κατάσταση «συνδεδεμένο» δεν είναι διαδρομή

Το εικονίδιο VPN στη γραμμή εργασιών αναφέρει αν το τούνελ είναι ενεργό. Δεν λέει τίποτα για το αν υπάρχει διαδρομή προς έναν συγκεκριμένο διακομιστή, αν το DNS μεταφράζει αυτό το όνομα στη διεύθυνση του τούνελ, ούτε αν το δικό του τείχος προστασίας του διακομιστή σας δέχεται.

Πρόκειται για τρεις ξεχωριστές αποτυχίες με το ίδιο ορατό αποτέλεσμα, και το να εξαρτάστε από το εικονίδιο της γραμμής εργασιών τις συνενώνει σε ένα αναξιόπιστο σήμα.

Ένας έλεγχος ετοιμότητας που ονομάζει τον διακομιστή που πραγματικά χρειάζεστε τις ξεχωρίζει, γιατί αποτυγχάνει μέχρι να λειτουργήσει η συγκεκριμένη διαδρομή, και όχι μέχρι κάποια διεπαφή να δηλώσει ότι συνδέθηκε.

Εξαρτηθείτε από τον διακομιστή, όχι από τον πελάτη

Διαλέξτε έναν υπολογιστή προσβάσιμο μόνο μέσω του τούνελ και περιμένετε γι' αυτόν πριν αντιστοιχίσετε οτιδήποτε. Το απόσπασμα παρακάτω συνδέει μια αποθηκευμένη καταχώριση VPN των Windows, ελέγχει τον διακομιστή αρχείων και μετά αντιστοιχίζει τον δίσκο.

@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 είναι ανιχνευτής ετοιμότητας, όχι δοκιμή δικαιωμάτων. Αν το ICMP φιλτράρεται στο δίκτυό σας, ελέγξτε αντ' αυτού την υπηρεσία που πραγματικά χρησιμοποιείτε: net view \\%server% για γρήγορο έλεγχο, ή μια σύντομη δοκιμή TCP στη θύρα 445 στο PowerShell. Οποιοδήποτε από τα δύο εξαρτάται από το πράγμα που μετράει.

Προσθέστε περιορισμένο αριθμό προσπαθειών. Ένας βρόχος αναμονής χωρίς όριο μετατρέπει ένα χαλασμένο τούνελ σε συνεδρία που δεν ολοκληρώνει ποτέ τη σύνδεση, και αυτό είναι χειρότερη κλήση υποστήριξης από ένα γράμμα δίσκου που λείπει.

Κάντε το επανεκτελέσιμο και ενήμερο της συνεδρίας

Εκτελέστε το μέσα στη συνεδρία του ίδιου του χρήστη. Μια εργασία που τρέχει ως SYSTEM βάζει τον δίσκο σε εντελώς άλλη συνεδρία, και ο συνδεδεμένος χρήστης δεν βλέπει ποτέ το αποτέλεσμα. Έτσι παίρνετε ένα σενάριο που αναφέρει επιτυχία και μια επιφάνεια εργασίας χωρίς δίσκο.

Ελέγξτε πριν αντιστοιχίσετε και αφαιρέστε μόνο την παλιά καταχώριση. Το net use Z: /delete επιστρέφει σφάλμα όταν το γράμμα δεν χρησιμοποιείται, και αυτό το σφάλμα είναι ασφαλές να αγνοηθεί αντί να είναι λόγος να εγκαταλείψετε το υπόλοιπο σενάριο. Κρατήστε το /persistent:no ώστε μια αποτυχημένη προσπάθεια να μη μετατραπεί αργότερα σε μόνιμη προσπάθεια επανασύνδεσης.

Και μην βάλετε κωδικό πρόσβασης στο αρχείο. Το rasdial μπορεί να επαναχρησιμοποιήσει διαπιστευτήρια που έχουν αποθηκευτεί για την καταχώριση VPN, και ο κοινόχρηστος πόρος πρέπει να πιστοποιείται ως ο συνδεδεμένος χρήστης. Αν ο πόρος χρειάζεται πραγματικά διαφορετικά διαπιστευτήρια, καταχωρίστε τα μία φορά ανά χρήστη με το cmdkey αντί να τα ενσωματώσετε σε ένα αρχείο batch που ζει σε κοινόχρηστο πόρο σύνδεσης. Όποιος μπορεί να διαβάσει αυτόν τον πόρο μπορεί να διαβάσει και τον κωδικό, και αυτό μετατρέπει μια ευκολία σε περιστατικό.

Η επανεκτέλεση ολόκληρου του σεναρίου πρέπει να είναι ακίνδυνη, γιατί αυτό ακριβώς θα συμβεί. Οι χρήστες επανασυνδέονται, οι φορητοί υπολογιστές ξυπνούν, και η ίδια διαδρομή κώδικα τρέχει ξανά με διαφορετική αρχική κατάσταση.

Καταγράψτε αρκετά για να αποδείξετε ποιο μισό άργησε

Γράψτε τη χρονική σήμανση, το αποτέλεσμα του ελέγχου ετοιμότητας και τον κωδικό εξόδου της αντιστοίχισης σε ένα αρχείο κάτω από το προφίλ του χρήστη. Όταν φτάσει η επόμενη αναφορά για δίσκο που λείπει, αυτό το αρχείο καταγραφής απαντά στην μόνη ερώτηση που μετράει: ήρθε αργά το τούνελ, ή αρνήθηκε ο κοινόχρηστος πόρος;

Χωρίς αυτό, κάθε επανάληψη ερευνάται από την αρχή, και το συνηθισμένο συμπέρασμα είναι μια αλλαγή δικαιωμάτων που δεν διορθώνει τίποτα.

Δοκιμάστε την ακολουθία μία φορά από κρύα εκκίνηση και μία φορά από αναστολή. Η περίπτωση αφύπνισης είναι εκεί όπου η σειρά σπάει πιο συχνά, γιατί η συνεδρία συνεχίζεται πριν από το δίκτυο και το σενάριο βλέπει ένα μηχάνημα που είναι συνδεδεμένο εδώ και ώρες.

Σχετικά άρθρα