Ένας φύλακας ping δεν ξεχωρίζει μια χαλασμένη σήραγγα από μια υγιή
Ένα ping στο διαδίκτυο αποδεικνύει λιγότερα απ’ όσα φαίνονται. Ελέγξτε τη σήραγγα από μέσα, μετρήστε τις αποτυχίες πριν ενεργήσετε και αντιμετωπίστε την αλλαγή διακομιστή ως ξεχωριστή απόφαση.
Τρεις συνθήκες κρίνουν αν ένας φύλακας βοηθά ή βλάπτει: τι μπορεί να ξεχωρίσει ο έλεγχος, πόσες διαδοχικές αποτυχίες δικαιολογούν ενέργεια και αν η ενέργεια είναι επανασύνδεση ή αλλαγή διακομιστή. Μια γραμμή cron που κάνει ping σε μια δημόσια διεύθυνση δεν απαντά καλά σε καμία από αυτές. Επανασυνδέει σήραγγες που είναι εντάξει και αφήνει σήραγγες που είναι χαλασμένες, και κάνει και τα δύο χωρίς καταγραφή. Ο σχεδιασμός που αξίζει να κρατήσετε κάνει αυτές τις τρεις επιλογές ρητές.
Ο έλεγχος είναι το μέρος που καθορίζει όλα τα υπόλοιπα.
Τι αποδεικνύει πραγματικά ένα ping στο διαδίκτυο
Το ping σε έναν δημόσιο resolver δείχνει ότι η τοπική διαδρομή του διαδικτύου είναι ζωντανή. Δεν αποδεικνύει ότι η σήραγγα μεταφέρει κίνηση, και σε προφίλ πλήρους σήραγγας το ίδιο το ping ταξιδεύει μέσα από τη σήραγγα, οπότε μια υγιής απάντηση και μια χαλασμένη σήραγγα μπορούν να συνυπάρχουν ενώ ο πελάτης ακόμη προωθεί πακέτα. Αν το προφίλ στέλνει αναζητήσεις ονομάτων μέσα από τη σήραγγα, μια αποτυχία DNS διαβάζεται ως νεκρή σύνδεση και ξεκινά μια επανασύνδεση που δεν μπορεί να διορθώσει τίποτα.
Καμία από τις δύο κατευθύνσεις του σφάλματος δεν εμφανίζεται στον κωδικό εξόδου. Ένας φύλακας χτισμένος πάνω σε αυτό το σήμα είναι ρίψη νομίσματος με πρόγραμμα cron.
Ελέγξτε κάτι που ζει πίσω από τη σήραγγα
ip -brief addr show tun0 ip route get 10.100.20.10 nc -z -w3 10.100.20.10 443
Ελέγξτε από μέσα, ο φθηνότερος έλεγχος πρώτα. Αν η διεπαφή υπάρχει, η σήραγγα είναι όρθια· αν μια αναζήτηση διαδρομής για μια γνωστή εσωτερική διεύθυνση βρει δρόμο, η κίνηση θα έμπαινε· ένας έλεγχος TCP σε έναν κόμβο στην άλλη πλευρά λέει ότι κάτι απαντά πραγματικά. Μόνο τα αιτήματα echo παραπλανούν: πολλοί εσωτερικοί κόμβοι απαντούν πρόθυμα σε TCP αλλά πετούν το ICMP, οπότε ένας φύλακας βασισμένος στο ping επανασυνδέει συνεχώς μια σήραγγα που ποτέ δεν έπαψε να δουλεύει.
Κρατήστε τον έλεγχο περιορισμένο στον χρόνο και δώστε του ξεχωριστή κατάσταση εξόδου. Ένας έλεγχος που κρέμεται τριάντα δευτερόλεπτα μετατρέπει έναν φύλακα σε ανιχνευτή διακοπών με ενσωματωμένη καθυστέρηση.
Διαλέξτε ανάμεσα σε μία γραμμή και έναν βρόχο
* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect
Μια καταχώριση cron είναι μία γραμμή χωρίς μνήμη, που ταιριάζει σε φορητό υπολογιστή όπου μια επιπλέον επανασύνδεση δεν κοστίζει τίποτα. Ένας εποπτευόμενος βρόχος κρατά μετρητή και ενεργεί μόνο μετά από αρκετές αστοχίες, κάτι που εμποδίζει μια ασταθή ζεύξη να προκαλέσει καταιγίδα επανασυνδέσεων. Σε κάθε περίπτωση, τρέξτε τον κάτω από έναν επόπτη ώστε να επιβιώσει από κατάρρευση και να γράφει στο ημερολόγιο. Διαλέξτε με κριτήριο αν μια περιττή επανασύνδεση έχει σημασία, όχι ποια έκδοση είναι πιο σύντομη.
failures=0 while sleep 30; do if nc -z -w5 10.100.20.10 443; then failures=0 else failures=$((failures+1)); fi if [ $failures -ge 3 ]; then myvpn reconnect; failures=0; fi done
Αυτός ο βρόχος μετρά διαδοχικές αποτυχίες αντί για κλάσμα σε ένα παράθυρο. Ένα παράθυρο χρειάζεται ρολόι και μνήμη δειγμάτων, και τα περισσότερα σφάλματα σε χειροποίητους φύλακες ζουν σε αυτή την αριθμητική.
Η αλλαγή διακομιστή είναι διαφορετική απόφαση
Η εναλλαγή διακομιστών διαφέρει από την επανασύνδεση. Σκίστε πρώτα την παλιά ζεύξη, γιατί ένας δεύτερος πελάτης που ξεκινά ενώ ο πρώτος κρατά ακόμη τη διεύθυνση θα συγκρουστεί. Μετρήστε διαδοχικές αποτυχίες πριν την αλλαγή, βάλτε όριο στις προσπάθειες και ελέγξτε ξανά μόλις σηκωθεί η νέα ζεύξη αντί να εμπιστευτείτε τον κωδικό εξόδου της εντολής connect. Μια λάθος διαμόρφωση δεν πρέπει να περιστρέφεται σε κάθε διακομιστή μέσα σε βρόχο.
Μην ελέγχετε τη δημόσια διεύθυνση του ίδιου του διακομιστή VPN από μέσα σε πλήρη σήραγγα. Αυτός ο έλεγχος εξαρτάται από το πράγμα που δοκιμάζει και αναφέρει επιτυχία ενώ η διαδρομή που έπρεπε να επικυρώσει έχει χαθεί.
Καταγράψτε ποιος έλεγχος έτρεξε, τι επέστρεψε και ποια ενέργεια ακολούθησε. Αυτή η καταγραφή μετατρέπει μια μυστηριώδη επανασύνδεση σε συμβάν που διαγιγνώσκεται.