Το cron επανεκκινεί ένα απολύτως υγιές VPN κάθε δέκα λεπτά, και η ίδια εργασία αφήνει ένα νεκρό να λειτουργεί για μια εβδομάδα. Και οι δύο αποτυχίες προέρχονται από το ότι αντιμετωπίζουμε το «ενεργό» ως ένα μόνο γεγονός, ενώ είναι τουλάχιστον τέσσερα. Μια συσκευή μπορεί να είναι διαχειριστικά ενεργοποιημένη, σωστά δρομολογημένη, πλήρως κρυπτογραφημένη και παρ' όλα αυτά να μη μεταφέρει τίποτα χρήσιμο. Διαχωρίστε πρώτα τις παρατηρήσεις, και ο έλεγχος σχεδόν γράφεται μόνος του.

Οι σημαίες ζεύξης περιγράφουν τη συσκευή, όχι τη διαδρομή

Ο έλεγχος που αντιγράφουν όλοι ψάχνει για διεύθυνση υλικού από καθαρά μηδενικά. Το κόλπο αυτό ξεχωρίζει μια γνήσια διεπαφή από ένα σύμβολο θέσης σε μερικούς οδηγούς και δεν αποδεικνύει τίποτα στους υπόλοιπους, γιατί μια συσκευή tun δεν έχει καθόλου MAC να αναφέρει. ip -brief link show tun0 δίνει αντ' αυτού σημαίες: UP σημαίνει ότι ένας διαχειριστής ενεργοποίησε τη συσκευή, και LOWER_UP σημαίνει ότι ο οδηγός θεωρεί τη ζεύξη χρησιμοποιήσιμη. Διαβασμένες μαζί, λένε ότι η συσκευή υπάρχει και δεν είναι διαχειριστικά ανενεργή. Καμία από τις δύο δεν λέει ότι ένα πακέτο έχει πού να πάει.

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

Ρωτήστε πού θα πήγαινε ένα πακέτο

Η αναζήτηση διαδρομής απαντά στο ερώτημα που δεν μπορούν οι σημαίες. ip route get 10.8.0.1 from 10.8.0.2 ονομάζει τη διεπαφή, τη διεύθυνση προέλευσης και τον πίνακα που θα χρησιμοποιούσε ο πυρήνας, που είναι ακριβώς αυτό με το οποίο πρέπει να ελεγχθεί μια διαιρεμένη σήραγγα. Χωρίς τη διεύθυνση προέλευσης ρωτάτε κάτι άλλο, και με δρομολόγηση πολιτικής η απάντηση μπορεί να διαφέρει ανά προέλευση. Είναι ο φθηνότερος ειλικρινής έλεγχος, γιατί συμβουλεύεται τους ίδιους κανόνες που θα χρησιμοποιήσει η κίνησή σας.

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

Ο πίνακας 220 διηγείται την ιστορία του IPsec

Το strongSwan εγκαθιστά διαδρομές για διαπραγματευμένους επιλογείς στον πίνακα 220 όταν η εγκατάσταση διαδρομών είναι ενεργή. ip route list table 220 επομένως χωρίζει το διαπραγματευμένο από το δρομολογημένο: ένας κενός πίνακας δίπλα σε μια φορτωμένη σύνδεση σημαίνει ότι τα SA του IKE και του CHILD σηκώθηκαν ενώ καμία κίνηση δεν κατευθύνεται σε αυτά. Ελέγξτε ip xfrm state δίπλα του, αφού απαριθμεί τις εγκατεστημένες ενώσεις ασφαλείας και τα τελικά τους σημεία.

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

Η κατάσταση του διαχειριστή και η κατάσταση του δαίμονα είναι διαφορετικές λίστες

Το NetworkManager απαριθμεί μόνο τις συνδέσεις που κατέχει. nmcli -t -f NAME,TYPE connection show --active δεν επιστρέφει τίποτα για μια σήραγγα που ξεκίνησε απευθείας από το wg-quick ή από έναν δαίμονα OpenVPN.

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

Κάντε το επόμενο βήμα να εξαρτάται από τον έλεγχο που χρειάζεται

Η ανίχνευση μιας θύρας UDP δεν αποδεικνύει τίποτα για την ετοιμότητα, αφού το UDP δεν έχει χειραψία και nc -u πετυχαίνει μόλις φύγει το πακέτο. Ελέγξτε τι πραγματικά καταναλώνει το επόμενο βήμα: μια σύνδεση TCP στην προωθημένη θύρα, ένα αίτημα σε έναν υπολογιστή μέσα στη σήραγγα, ένα όνομα που επιλύεται μόνο εκεί. Περιορίστε την αναμονή με ένα χρονικό όριο και έναν αριθμό προσπαθειών, και αποτύχετε ηχηρά όταν εξαντληθεί.

Τα άγκιστρα νικούν την ανίχνευση όταν τα προσφέρει ο πελάτης. --up και --down σενάρια του OpenVPN εκτελούνται αφού αλλάξει κατάσταση η διεπαφή, κάτι που εξαλείφει εντελώς τον αγώνα, αλλά εκτελούνται με τα προνόμια που κράτησε ο δαίμονας. Αν το OpenVPN έπεσε σε λογαριασμό χωρίς προνόμια μέσω user και group, το άγκιστρο εκτελείται ως αυτός ο λογαριασμός. Η επανεκκίνηση μιας υπηρεσίας συστήματος τότε απαιτεί sudo για να επιτρέψει ακριβώς αυτή την εντολή. Αναθέστε την επανάληψη στον διαχειριστή υπηρεσιών αντί σε βρόχο cron: μια φραγμένη πολιτική επανεκκίνησης με όριο εκκινήσεων φανερώνει μια σπασμένη σήραγγα, ενώ ένας απεριόριστος βρόχος την κρύβει επ' αόριστον.

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