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

Η σειρά που ακολουθεί ο καταμεριστής

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

SituationAddress chosenPractical effect
Reconnect, old address still freeThe remembered addressRules appear stable for days
Old address taken by another clientLeast recently used free addressA working rule silently stops matching
Concurrent sessions, same nameFirst free address, per sessionOne identity can hold several leases

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

Γιατί μια μίσθωση φαίνεται σταθερή και μετά μετακινείται

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

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

Το αρχείο μονιμότητας θυμάται, δεν δεσμεύει

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

ifconfig-pool-persist /etc/openvpn/ipp.txt
server 10.8.0.0 255.255.255.0

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

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

Το σωστό καρφίτσωμα μιας διεύθυνσης

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

# client-config-dir entry for "laptop-acme"
ifconfig-push 10.8.0.50 255.255.255.0

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

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

Η απομακρυσμένη διεύθυνση είναι ξεχωριστό ζήτημα

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

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

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