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

Τέσσερα στάδια, μία αποτυχία

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

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

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

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

Ελέγξτε τη διαδρομή εκεί όπου εκτελείται ο πελάτης

Ξεκινήστε από τον πελάτη που αποτυγχάνει, όχι από τον δρομολογητή. Επιβεβαιώστε ότι η διαδρομή υπάρχει και ότι η προτίμηση του πελάτη επιτρέπει γενικά την αποδοχή διαδρομών.

tailscale status
tailscale debug prefs | grep -i route
ip route get 10.20.0.42

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

Για να αποδεχτείτε διαδρομές στο Linux, συνδεθείτε ξανά με τη σημαία αντί να υποθέσετε ότι έχει οριστεί: tailscale up --accept-routes. Ένας πελάτης που εντάχθηκε με διαφορετικές σημαίες τις διατηρεί μέχρι να αλλάξουν, οπότε ελέγξτε την τρέχουσα προτίμηση πριν προσθέσετε άλλη. Η επανεκτέλεση της πρώτης εντολής μετά την αλλαγή θα πρέπει να δείξει τη διαδρομή στον πίνακα.

Αποδείξτε την προώθηση και τη διαδρομή επιστροφής

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

sysctl net.ipv4.ip_forward
iptables -t nat -L POSTROUTING -n -v
tcpdump -ni any host 10.20.0.42 and port 443

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

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

Διαβάστε τον κανόνα πρόσβασης για τον πόρο

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

tailscale status --json | head -40
tailscale ping <router-name-or-tailnet-ip>
ping -c 3 10.20.0.42

Η έξοδος κατάστασης προσδιορίζει τις δικές του διευθύνσεις του πελάτη και τους ομοτίμους που βλέπει, και με αυτά πρέπει να ταιριάζει ο επιλογέας πηγής της πολιτικής. Το tailscale ping αποδεικνύει τη διαδρομή του tailnet μέχρι τον ίδιο τον δρομολογητή υποδικτύου· επιλύει ονόματα ομοτίμων και διευθύνσεις tailnet, όχι κεντρικούς υπολογιστές μέσα σε ένα διαφημιζόμενο υποδίκτυο. Η τρίτη εντολή στέλνει ένα κανονικό ICMP echo μέσω της διαδρομής υποδικτύου, οπότε το αποτέλεσμά της περιγράφει τον προορισμό και όχι τον δρομολογητή. Μια άρνηση σε επίπεδο tailnet συνήθως επιστρέφει ως άρνηση, ενώ ένα πακέτο που φεύγει και δεν επιστρέφει ποτέ λήγει σε χρονικό όριο.

Ένα όνομα που αποτυγχάνει είναι διαφορετικό ζήτημα από μια διεύθυνση που αποτυγχάνει· επιλύστε τον κεντρικό υπολογιστή απευθείας πριν κατηγορήσετε τη διαδρομή. Γράψτε την παραχώρηση με βάση την πραγματική απαίτηση του πόρου και όχι ολόκληρο το υποδίκτυο. Το άνοιγμα ενός ολόκληρου /24 για να λειτουργήσει μία εφαρμογή είναι ο τρόπος με τον οποίο ένα στενό αίτημα γίνεται ευρεία άδεια που κανείς δεν τολμά αργότερα να αφαιρέσει.

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

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