Στα Windows, ένας προσαρμογέας OpenVPN που παίρνει μια διεύθυνση, την απορρίπτει και το επαναλαμβάνει κάθε λίγα δευτερόλεπτα συνήθως δεν είναι σφάλμα DHCP. Ο προσαρμογέας λαμβάνει εντολή να χρησιμοποιήσει μια διεύθυνση για την οποία απαντά ήδη κάτι άλλο, οπότε τα Windows τη χαρακτηρίζουν ως μη χρησιμοποιήσιμη και ο πελάτης ξεκινά από την αρχή. Το αρχείο καταγραφής του πελάτη μένει σιωπηλό επειδή η σύγκρουση επιλύεται από κάτω, μέσα στη στοίβα δικτύου του ίδιου του λειτουργικού συστήματος.

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

Ξεκινήστε από το αρχείο συμβάντων των Windows, όχι από το αρχείο του πελάτη

Τα Windows καταγράφουν τις συγκρούσεις διευθύνσεων στο αρχείο συστήματος, με αναγνωριστικά συμβάντων 4198 και 4199. Το πρώτο αναφέρει σύγκρουση που εντοπίστηκε για μια διεύθυνση, το δεύτερο αναφέρει ότι μια διεπαφή δεν μπόρεσε να χρησιμοποιήσει τη διεύθυνση με την οποία είχε ρυθμιστεί. Κανένα δεν αναφέρει το OpenVPN, και γι' αυτό ακριβώς παραβλέπονται εύκολα.

Αντλήστε τα πρόσφατα συμβάντα και συγκρίνετε τις χρονικές σφραγίδες τους με τον κύκλο ανανέωσης του προσαρμογέα: Get-WinEvent -FilterHashtable @{LogName='System'; Id=4198,4199} -MaxEvents 40 | Format-Table TimeCreated,Id,Message -Wrap. Μια σύγκρουση κάθε δεκαπέντε δευτερόλεπτα ταιριάζει με πελάτη που επαναδοκιμάζει την ίδια διεύθυνση απέναντι σε κάτοχο που συνεχίζει να απαντά. Μια μεμονωμένη σύγκρουση τη στιγμή της σύνδεσης δείχνει μάλλον μια εφάπαξ σύγκρουση. Σε κάθε περίπτωση, το επόμενο ερώτημα είναι ποιος άλλος κρατά τη διεύθυνση.

Τρεις διατάξεις βάζουν δύο κεντρικούς υπολογιστές σε μία διεύθυνση

Ρωτήστε τον διακομιστή ποιος νομίζει ότι κρατά τη διεύθυνση και μετά ρωτήστε το δίκτυο ποιος απαντά γι' αυτήν. Το grep -H ifconfig-push /etc/openvpn/ccd/* απαριθμεί κάθε καρφιτσωμένη διεύθυνση σήραγγας και το πιστοποιητικό στο οποίο ανήκει. Το ip -4 neigh show dev tap0 δείχνει τι έχει μάθει η γέφυρα στο δεύτερο επίπεδο. Η σύγκριση αυτών των δύο λιστών βρίσκει τις περισσότερες διπλοεγγραφές σε λιγότερο από ένα λεπτό.

Τρεις διατάξεις εξηγούν σχεδόν όλες: μια καταχώριση client-config-dir καρφιτσώνει μία διεύθυνση για δύο πιστοποιητικά, ένα τμήμα tap γεφυρωμένο δίνει σε ένα μηχάνημα διεύθυνση που άλλος κεντρικός υπολογιστής έχει ήδη στατικά, ή ένα παρωχημένο αρχείο μίσθωσης επιστρέφει διεύθυνση που ένας πελάτης ακόμη συνδεδεμένος πιστεύει ότι κατέχει. Η τρίτη περίπτωση είναι η πιο ύπουλη, γιατί το ifconfig-pool-persist επαναχρησιμοποιεί σκόπιμα διευθύνσεις για γνωστούς πελάτες.

Κάντε τη διεύθυνση μοναδική αντί να συναγωνίζεστε γι' αυτήν

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

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

Επανεκκινήστε με τη σωστή σειρά και επιβεβαιώστε έναν κάτοχο ανά διεύθυνση

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

Αν ένας πελάτης εξακολουθεί να μην μπορεί να κρατήσει τη διεύθυνσή του, ελέγξτε αν τη φέρει μια διεπαφή γέφυρας στον ίδιο κεντρικό υπολογιστή. Μια γέφυρα που κληρονόμησε διεύθυνση από συσκευή προμηθευτή θα απαντά ARP γι' αυτήν ακόμη και όταν ο διακομιστής VPN έχει ήδη δώσει τη διεύθυνση σε πελάτη.

Παρατηρήστε για έναν πλήρη κύκλο ανανέωσης πριν κλείσετε το αίτημα

Μία καθαρή ανάγνωση δεν αποδεικνύει τίποτα. Παρατηρήστε τον προσαρμογέα τουλάχιστον δέκα λεπτά και αναγκάστε επανασύνδεση στη μέση: Get-NetIPAddress -InterfaceAlias "OpenVPN*" | Select-Object IPAddress,AddressState. Η διεύθυνση θα πρέπει να επιβιώσει της επανασύνδεσης και να παραμείνει σε προτιμώμενη κατάσταση.

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

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

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