Ο κόμβος εξόδου του ZeroTier δεν λειτουργεί; Ελέγξτε διαδρομή, NAT και πελάτη
Μια διαδρομή 0.0.0.0/0 στον πελάτη δεν είναι έξοδος. Ο κόμβος πρέπει να προωθεί και να μεταφράζει, το δίκτυο να διαφημίζει τη διαδρομή και ο πελάτης να τη δέχεται.
Ο πίνακας δρομολόγησης δείχνει μια προεπιλεγμένη διαδρομή μέσω της διεπαφής ZeroTier, το δίκτυο αναφέρεται ως συνδεδεμένο και ένα πρόγραμμα περιήγησης εξακολουθεί να βγαίνει από την τοπική διεύθυνση ISP. Ο συνδυασμός είναι συνηθισμένος και δεν είναι σφάλμα του πελάτη. Μια προεπιλεγμένη διαδρομή λέει μόνο πού πρέπει να πάνε τα πακέτα· κάτι πρέπει να τα προωθήσει και να τα μεταφράσει στο άλλο άκρο. Τρία ξεχωριστά μέρη πρέπει να ισχύουν πριν λειτουργήσει ένας κόμβος εξόδου.
Η διαδρομή υπάρχει, αλλά τίποτα δεν βγαίνει
Ελέγξτε πρώτα τον πίνακα δρομολόγησης του πελάτη. Μια γραμμή όπως default via 10.147.20.5 dev zt0 αποδεικνύει ότι η διαδρομή εγκαταστάθηκε, όχι ότι ο προορισμός θα δεχτεί την κίνηση. Το επόμενο άλμα πρέπει να είναι μέλος πρόθυμο και ικανό να την προωθήσει.
Αν το ίδιο αίτημα εξακολουθεί να βγαίνει από τη φυσική διεπαφή, ο πελάτης δεν εγκατέστησε τη διαδρομή ή την εγκατέστησε με μετρική που έχασε από την τοπική προεπιλεγμένη. Αν το αίτημα εξαφανιστεί μετά την εγκατάσταση της διαδρομής, το μέλος εξόδου λαμβάνει πακέτα και αποτυγχάνει να τα προωθήσει ή να τα μεταφράσει. Ένας πελάτης που κρατά τη φυσική προεπιλεγμένη δεν στέλνει καθόλου πακέτο στην έξοδο.
Αυτή η διάκριση καθορίζει πού θα δουλέψετε. Η σύγκριση μιας δημόσιας διεύθυνσης πριν και μετά την αλλαγή ξεχωρίζει μια διαδρομή που δεν χρησιμοποιήθηκε ποτέ από μια που χρησιμοποιήθηκε και απορρίφθηκε, και απαιτεί μία εντολή αντί για ανασκόπηση όλης της ρύθμισης. Κάντε τη σύγκριση πριν αλλάξετε οτιδήποτε άλλο, ώστε και τα δύο αποτελέσματα να προέρχονται από την ίδια αρχική κατάσταση.
Τρία μέρη που πρέπει να ισχύουν όλα
Η έξοδος είναι αλυσίδα και ο ασθενέστερος κρίκος καθορίζει το σύμπτωμα. Ο πίνακας παρακάτω απαριθμεί τους κρίκους με τη σειρά που συνήθως αποτυγχάνουν.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
Η πρώτη γραμμή είναι αυτή που κρύβει το όνομα της επιλογής. Ένα μέλος γίνεται έξοδος μόνο όταν ο πυρήνας του προωθεί πακέτα μεταξύ της διεπαφής ZeroTier και της διεπαφής που βλέπει στο διαδίκτυο, και όταν η διαδρομή απάντησης μεταφράζεται πίσω στη σήραγγα. Χωρίς αυτή την προώθηση, το μέλος είναι ομότιμο, όχι πύλη.
Η γραμμή του ελεγκτή είναι εξουσιοδότηση, όχι διαμόρφωση. Η διαφήμιση του 0.0.0.0/0 μέσω μέλους λέει σε κάθε πελάτη πού είναι η έξοδος· δεν κάνει το μέλος ικανό να μεταφέρει την κίνηση. Ούτε επαληθεύει ότι το μέλος έχει λειτουργική διαδρομή προς το διαδίκτυο. Η τεκμηρίωση του ZeroTier για τον κόμβο εξόδου καλύπτει τον ίδιο διαχωρισμό μεταξύ κόμβου, διαδρομής και πελάτη.
Ρυθμίστε τον κόμβο εξόδου να προωθεί και να μεταφράζει
Ενεργοποιήστε μόνιμα την προώθηση IPv4 και μετά προσθέστε NAT προέλευσης για την κίνηση που φεύγει από τη διεπαφή WAN. Οι κανόνες φιλτραρίσματος πρέπει να επιτρέπουν τη προωθούμενη ροή και προς τις δύο κατευθύνσεις, γιατί η προώθηση και η μετάφραση είναι ξεχωριστές από την άδεια:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTΑντικαταστήστε το zt0 και το eth0 με τα ονόματα στον κεντρικό υπολογιστή· ένας κανόνας που αποθηκεύτηκε για διεπαφή παραδείγματος δεν ακολουθεί πακέτα σε πραγματική. Κάντε τις αλλαγές μόνιμες μέσω του διαχειριστή τείχους προστασίας που κατέχει τους κανόνες, γιατί μια εντολή σε διαδραστικό κέλυφος εξαφανίζεται στην επόμενη επανεκκίνηση.
Αν ο κεντρικός υπολογιστής τρέχει διαχειριστή τείχους προστασίας όπως UFW ή firewalld, προσθέστε τους κανόνες μέσω αυτού του διαχειριστή αντί να στοιβάζετε γραμμές iptables δίπλα. Δύο ιδιοκτήτες που επεξεργάζονται τις ίδιες αλυσίδες παράγουν πολιτική που εξαρτάται από τη σειρά εκκίνησης. Η σειρά μετράει όταν ο διαχειριστής δημιουργεί τις δικές του αλυσίδες. Δοκιμάστε από πελάτη αφού επαναφορτώσετε τον διαχειριστή, όχι πριν.
Διαφημίστε τη διαδρομή και δεχτείτε την στον πελάτη
Στον ελεγκτή δικτύου προσθέστε μια διαχειριζόμενη διαδρομή για το 0.0.0.0/0 της οποίας το επόμενο άλμα είναι η διεύθυνση ZeroTier του μέλους εξόδου. Έπειτα, στο μέλος που πρέπει να τη χρησιμοποιεί, επιτρέψτε την παράκαμψη για αυτό το δίκτυο. Η άδεια είναι τοπική: δεν επαναδιαμορφώνει άλλα μέλη και δεν αλλάζει τον ελεγκτή.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Η τελευταία εντολή θα πρέπει να αναφέρει τη διεπαφή ZeroTier και τη διεύθυνση του μέλους εξόδου. Αν εξακολουθεί να αναφέρει τη φυσική διεπαφή, η διαδρομή λείπει ή μια ανταγωνιστική προεπιλεγμένη έχει καλύτερη μετρική.
Κρατήστε τη ρύθμιση περιορισμένη στο δίκτυο που τη χρειάζεται. Η ενεργοποίηση αποδοχής της προεπιλεγμένης διαδρομής παγκοσμίως, ή σε δίκτυο που πρέπει να παρέχει μόνο ιδιωτικό υποδίκτυο, στέλνει την κίνηση μέσω εξόδου που δεν είχε ποτέ διαστασιολογηθεί για αυτό.
Επαληθεύστε την έξοδο και ελέγξτε τις άλλες οικογένειες διευθύνσεων
Ζητήστε μια δημόσια διεύθυνση από υπηρεσία που αναφέρει την πηγή και συγκρίνετε την με τη διεύθυνση WAN του κόμβου εξόδου. Έπειτα φορτώστε έναν ιστότοπο με όνομα για να επιβεβαιώσετε ότι το DNS εξακολουθεί να επιλύει, και δοκιμάστε μια εφαρμογή που μετράει αντί μόνο ένα πρόγραμμα περιήγησης.
Ένας πελάτης διπλής στοίβας μπορεί να συνεχίσει να χρησιμοποιεί την εγγενή διαδρομή IPv6 ενώ το IPv4 βγαίνει μέσω ZeroTier. Αν στόχος είναι να κρυφτεί ή να ελεγχθεί όλη η κίνηση, απαιτούνται ξεχωριστή διαδρομή ::/0 και προώθηση IPv6 στην έξοδο, και ένα τεστ IPv4 δεν λέει τίποτα γι' αυτά.
Το αντίστροφο φιλτράρισμα διαδρομής στο Linux μπορεί επίσης να απορρίψει έγκυρη κίνηση εξόδου στον πελάτη. Το ZeroTier τεκμηριώνει μια σκέψη για το rp_filter στα συμμετέχοντα μέλη· αλλάξτε αυτή τη ρύθμιση σκόπιμα και μόνο αφού επιβεβαιωθούν η διαδρομή και το NAT, όχι ως πρώτο πείραμα.
Αν η απαίτηση είναι πρόσβαση σε NAS ή σε ένα υποδίκτυο γραφείου, μια διαχειριζόμενη διαδρομή για αυτό το πρόθεμα είναι μικρότερη και ασφαλέστερη αλλαγή από μια πλήρη έξοδο. Το να περνά όλη η περιήγηση από άλλη συσκευή είναι διαφορετική απόφαση από το να φτάσεις έναν ιδιωτικό πόρο, και αξίζει ξεχωριστή ανασκόπηση.