Η τεκμηρίωση split-tunnel χρειάζεται κανόνα DNS δίπλα σε κάθε διαδρομή
Μια διαδρομή αποφασίζει με βάση τη διεύθυνση, ένας resolver με βάση το όνομα. Καταγράψτε και τους δύο επιλογείς ανά ροή, τον καθένα με ένα τεστ, αλλιώς η σημείωση αποτυγχάνει όταν μετακινηθεί το DNS.
Μια σημείωση split-tunnel που λέει «η κίνηση του γραφείου περνά από το VPN» έχει τεκμηριώσει μία απόφαση και έχει υπονοήσει άλλες τρεις. Στο επίπεδο πακέτων, ένας πίνακας δρομολόγησης επιλέγει διεπαφή με βάση τη διεύθυνση προορισμού· στο επίπεδο ονομάτων, ένας resolver επιλέγει διακομιστή με βάση το ερώτημα, και οι δύο επιλογές γίνονται ανεξάρτητα. Γι' αυτό ένα σωστά τεκμηριωμένο πρόθεμα μπορεί ακόμη να παράγει μηχάνημα που επιλύει ένα εσωτερικό όνομα σε δημόσια διεύθυνση, ή δεν επιλύει τίποτα ενώ η διαδρομή φαίνεται τέλεια.
Δύο επιλογείς, μία προσπάθεια σύνδεσης
Όταν μια εφαρμογή συνδέεται με files.corp.example, συμβαίνουν δύο αναζητήσεις πριν υπάρξει πακέτο. Ο resolver αποφασίζει ποιος διακομιστής λαμβάνει το ερώτημα, χρησιμοποιώντας τομείς αναζήτησης, τομείς δρομολόγησης ανά ζεύξη ή ρητό κανόνα προφίλ. Στη συνέχεια ο πίνακας δρομολόγησης αποφασίζει πού πηγαίνει η διεύθυνση που προκύπτει, χρησιμοποιώντας την πιο μακριά αντιστοίχιση προθέματος με τον προορισμό.
Τίποτα δεν συνδέει αυτές τις δύο αποφάσεις. Μια ιδιωτική ζώνη μπορεί να απαντήσει με 10.20.4.11 ενώ ο πίνακας δρομολόγησης στέλνει 10.20.0.0/16 στη σήραγγα, και η σύνδεση λειτουργεί. Αντιστρέψτε οποιοδήποτε από τα δύο και αποτυγχάνει με τρόπο που μοιάζει με το άλλο: σωστή πολιτική DNS συν μια απούσα διαδρομή δίνει επιλυμένο όνομα και λήξη χρόνου, ενώ μια σωστή διαδρομή συν δημόσιο resolver δίνει διεύθυνση που δρομολογείται καθαρά στο λάθος μέρος.
Το DNS διαχωρισμένου ορίζοντα το κάνει πιο έντονο. Το ίδιο όνομα μπορεί να επιστρέψει ιδιωτική διεύθυνση από τον εσωτερικό resolver και δημόσια διεύθυνση από τον resolver που βλέπει προς το διαδίκτυο, οπότε μια σημείωση που καταγράφει μόνο το πρόθεμα δεν μπορεί να προβλέψει ποια διεύθυνση θα χρησιμοποιήσει πραγματικά ο πελάτης. Γράψτε τη διαδρομή του resolver, αλλιώς η διεύθυνση είναι εικασία.
Τι παραλείπει μια σημείωση μόνο για τη διαδρομή
Μια εγγραφή μόνο για τη διαδρομή είναι άχρηστη για την πιο συχνή αποτυχία split-tunnel: τα ονόματα. Ο χρήστης αναφέρει ότι το intranet δεν φορτώνει, η σήραγγα είναι ενεργή και το πρόθεμα υπάρχει. Όποιος πάρει το δελτίο δεν έχει εγγραφή για το ποιος resolver θα έπρεπε να έχει απαντήσει, ούτε τρόπο να ξεχωρίσει ένα λάθος επίθημα αναζήτησης από έναν αποκλεισμένο διακομιστή, ούτε βάση σύγκρισης.
Η δεύτερη παράλειψη είναι η λίστα εξαιρέσεων. Ο σχεδιασμός split-tunnel ορίζεται εξίσου από ό,τι μένει έξω από τη σήραγγα όσο και από ό,τι μπαίνει σε αυτήν, και οι εξαιρούμενες περιοχές είναι συνήθως αυτές που σπάνε πρώτες, επειδή μια πιο συγκεκριμένη τοπική διαδρομή ή ένα φίλτρο στην πλευρά του πελάτη μπορεί να υπερισχύσει της πρόθεσης χωρίς να αγγίξει το προφίλ.
Η τρίτη είναι η μακρινή πλευρά της σήραγγας. Μια διαδρομή πελάτη βάζει μόνο το πακέτο στο καλώδιο· η πύλη πρέπει ακόμη να το προωθήσει και να έχει διαδρομή επιστροφής. Ο οδηγός προώθησης του strongSwan υπενθυμίζει ότι οι κανόνες προώθησης και τείχους προστασίας στην πύλη είναι μέρος της λειτουργίας, όχι μέρος της υδραυλικής εγκατάστασης που μπορείτε να θεωρήσετε δεδομένη.
Τα πεδία που κάνουν τη σημείωση εκτελέσιμη
Μία γραμμή ανά ροή, και ροή είναι προορισμός συν όνομα συν ιδιοκτήτης. Αυτά είναι τα πεδία που επιβιώνουν από επαφή με πραγματικό περιστατικό:
| Field | Why it has to be written down |
|---|---|
| Destination prefix and address family | The route is per family; an IPv4 note says nothing about a AAAA answer |
| Selected tunnel or direct path | Names the decision, not the symptom |
| Private namespace and resolver | Which domain, which server, which search suffix |
| Public name path | Confirms public names do not accidentally use the private resolver |
| Where the rule lives | Client profile, server push, OS policy or management tool |
| Owner and review date | Namespaces change owner more often than routes change |
Η γραμμή «πού ζει» είναι αυτή που οι άνθρωποι παραλείπουν. Ένα πρόθεμα που σπρώχνεται από τον διακομιστή, μια διαδρομή που προσθέτει ένα προφίλ πελάτη και μια διαδρομή που πληκτρολογείται σε ένα κέλυφος διαφέρουν ως προς το ποιος μπορεί να τα αλλάξει και ως προς το αν επιβιώνουν από επανασύνδεση. Χωρίς αυτό το πεδίο, ο επόμενος μηχανικός δεν μπορεί να πει ποιο από τα τρία κοιτάζει.
Ένα τεστ ανά κανόνα, όχι ανά σήραγγα
Κάθε γραμμή χρειάζεται δύο αβλαβείς ελέγχους: έναν που ασκεί τη διαδρομή και έναν που ασκεί το όνομα. Για τη διαδρομή, ζητήστε κάτι που πρέπει να διασχίσει τη σήραγγα και επιβεβαιώστε τη διαδρομή αντί για τη συνδεσιμότητα, για παράδειγμα tracert -d 10.20.4.11 στα Windows ή ip route get 10.20.4.11 στο Linux. Για το όνομα, ζητήστε το ιδιωτικό όνομα και καταγράψτε ποιος διακομιστής απάντησε, χρησιμοποιώντας resolvectl query files.corp.example ή dig files.corp.example στον resolver που ονομάζει η σημείωση.
Προσθέστε και μια αρνητική προσδοκία: τι πρέπει να συμβεί όταν η σήραγγα είναι κάτω. Μια εξαιρούμενη εφαρμογή σε συσκευή Android ή iOS με ενεργοποιημένο αποκλεισμό χωρίς VPN μπορεί να μην έχει καθόλου συνδεσιμότητα, και ένας πελάτης υπολογιστή μπορεί να αφήσει την ίδια εφαρμογή να λειτουργεί όσο η σήραγγα επανασυνδέεται. Η καταγραφή της προβλεπόμενης απάντησης μετατρέπει το «το VPN μου χάλασε την εφαρμογή» σε ελεγχόμενη δήλωση.
Κρατήστε την εγγραφή μαζί με τη διαμόρφωση
Αποθηκεύστε τη σημείωση δίπλα στο προφίλ που περιγράφει και εκδώστε την με έκδοση μαζί με αυτό το προφίλ. Ένα έγγραφο σε ένα wiki που κανείς δεν ενημερώνει είναι φήμη· ένας πίνακας στο ίδιο αποθετήριο με τις διαδρομές που σπρώχνονται και την πολιτική του resolver μπορεί να ελεγχθεί στην ίδια αλλαγή.
Όταν κάτι χαλάσει, συγκρίνετε την εφαρμοσμένη διαδρομή και τον ενεργό resolver με την εγγραφή πριν προσθέσετε άλλη εξαίρεση. Δύο από τις τρεις συνήθεις αιτίες — ένας παλιός κανόνας χώρου ονομάτων και μια βοηθητική διεργασία εκτός της πολιτικής της εφαρμογής — μοιάζουν ακριβώς με βλάβη VPN και είναι αόρατες αν η σημείωση απαριθμεί μόνο προθέματα.
Πριν θεωρήσετε τη σημείωση έτοιμη, επιβεβαιώστε ότι απαντά γραπτώς σε αυτά: ποιο πρόθεμα, για ποια οικογένεια διευθύνσεων· ποιος ιδιωτικός χώρος ονομάτων, από ποιον resolver απαντιέται· ποια ονόματα μένουν σκόπιμα δημόσια· πού διαμορφώνεται κάθε κανόνας και ποιος τον κατέχει· και η μία εντολή που αποδεικνύει τη διαδρομή και η μία που αποδεικνύει το όνομα. Αν λείπει οποιοδήποτε από αυτά, το επόμενο περιστατικό θα διαγνωστεί από το μηδέν.