Μια διεύθυνση από το εύρος IPv6 εμφανίζεται σε μια σελίδα δοκιμής, η σήραγγα προφανώς δεν τη μεταφέρει, και η πιο δημοφιλής συμβουλή στο διαδίκτυο είναι να απενεργοποιήσετε το IPv6 παντού. Αυτή η εντολή πράγματι κάνει τον πίνακα να σωπάσει. Αφαιρεί όμως και ένα πρωτόκολλο από το οποίο μπορεί να εξαρτάται το δίκτυο πρόσβασης, και σας αφήνει χωρίς ιδέα αν η διεύθυνση ήταν πραγματική διαρροή, διεύθυνση διεπαφής link-local ή ένας resolver που κάνει τη δουλειά του. Τρεις συνθήκες καθορίζουν τον σωστό έλεγχο, και μόνο μία από αυτές οδηγεί σε αποκλεισμό.

Προσδιορίστε τι μέτρησε πραγματικά το εργαλείο

Ο πιο συνηθισμένος ψευδής συναγερμός είναι μια διεύθυνση link-local, που αρχίζει με fe80: και υπάρχει σε κάθε διεπαφή με δυνατότητα IPv6 είτε το μηχάνημα φτάνει στο διαδίκτυο μέσω IPv6 είτε όχι. Εμφανίζεται σε καταλόγους διεπαφών και σε ορισμένα διαγνωστικά εφαρμογών και δεν λέει τίποτα για τη διαδρομή της κίνησής σας.

Ο δεύτερος ψευδής συναγερμός είναι μια μοναδική τοπική διεύθυνση στο fc00::/7, που είναι ιδιωτικό εύρος και χρησιμοποιείται μέσα σε δίκτυο. Ένα εργαλείο που εκτυπώνει κάθε διεύθυνση του κεντρικού υπολογιστή θα τη δείξει ευχαρίστως δίπλα στη δημόσια. Όποιος διαβάζει βιαστικά το λέει διαρροή και μετά περνά μια ώρα σε ένα πρόβλημα που δεν υπάρχει.

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

ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co

Αν η πρώτη εντολή εκτυπώσει καθολική διεύθυνση και η τρίτη επιστρέψει δημόσια διεύθυνση IPv6 που δεν είναι της σήραγγας, έχετε πραγματική διαδρομή έξω από τη σήραγγα. Αν η πρώτη δεν εκτυπώσει τίποτα παρά μόνο εγγραφές link-local, δεν υπήρξε ποτέ διαρροή για διόρθωση.

Τρεις συνθήκες καθορίζουν τον έλεγχο

Η απόφαση δεν είναι "IPv6 καλό" ή "IPv6 κακό". Είναι σε ποια από τρεις καταστάσεις βρίσκεστε, και καθεμία έχει διαφορετική σωστή απάντηση με διαφορετικό κόστος αν κάνετε λάθος.

SituationCorrect controlCost if you disable IPv6 instead
Exit has no IPv6, host doesBlock IPv6 deliberately in the tunnel policySame visible result, no documentation of intent
Exit carries IPv6, host leaksRoute IPv6 into the tunnel and verifyYou lose IPv6 reachability entirely
Access network is IPv6-onlyChange nothing; use the tunnel's IPv6Machine loses connectivity completely

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

Η τρίτη γραμμή είναι όπου η γενική συμβουλή γίνεται ενεργά επιζήμια. Οι εταιρείες κινητής τηλεφωνίας και μερικές οικιακές συνδέσεις λειτουργούν δίκτυα IPv6-only με μετάφραση για προορισμούς IPv4. Αφαιρέστε το IPv6 εκεί και αφαιρείτε τη μόνη μεταφορά που προσφέρει το δίκτυο, κάτι που παράγει πολύ χειρότερη διακοπή από αυτήν που διορθώνατε.

Αν η έξοδος δεν έχει IPv6, αποκλείστε το σκόπιμα

Προτιμήστε τον μηχανισμό του ίδιου του πελάτη, γιατί ισχύει ακριβώς όσο η σήραγγα είναι ενεργή και επανέρχεται όταν πέσει. OpenVPN έχει επιλογή για αυτό, και το iptables έχει ισοδύναμο κανόνα για άλλους πελάτες:

block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable

Η οδηγία ανήκει στο προφίλ· ο κανόνας ανήκει σε ένα τείχος προστασίας που μπορείτε να ελέγξετε και να αφαιρέσετε. Και τα δύο αποτυγχάνουν κλειστά, που είναι το επιθυμητό, και τα δύο φαίνονται σε ένα diff ρυθμίσεων, κάτι που ένα sysctl πυρήνα θαμμένο σε σενάριο εκκίνησης δεν κάνει.

Καταγράψτε γιατί υπάρχει. Ένας κανόνας αποκλεισμού χωρίς σχόλιο αφαιρείται από τον επόμενο που χρειάζεται IPv6 για κάτι άσχετο, και τότε η διαρροή επιστρέφει ήσυχα.

Αν η έξοδος μεταφέρει IPv6, δρομολογήστε το και δοκιμάστε και τις δύο οικογένειες

Η μεταφορά IPv6 είναι η καλύτερη απάντηση όταν ο διακομιστής την υποστηρίζει, και δεν είναι πολύ δυσκολότερη. Η απαίτηση είναι η διεπαφή της σήραγγας να έχει διεύθυνση σε αυτή την οικογένεια και η προεπιλεγμένη διαδρομή γι' αυτήν να δείχνει μέσα στη σήραγγα και όχι έξω από τη φυσική διεπαφή:

ip -6 route get 2606:4700:4700::1111
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
curl -4 -sS --max-time 6 https://ifconfig.co

Η αναζήτηση διαδρομής είναι η αποφασιστική δοκιμή: αν ονομάζει τη διεπαφή της σήραγγας, η κίνηση IPv6 μεταφέρεται. Οι δύο κλήσεις curl επιβεβαιώνουν μετά τι βλέπει κάθε οικογένεια, και η σύγκρισή τους είναι ο τρόπος να αποδείξετε ότι και οι δύο διαδρομές βγαίνουν τώρα από την ίδια έξοδο.

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

Αν το δίκτυο πρόσβασης είναι μόνο IPv6, αφήστε το ήσυχο

Μερικά δίκτυα παρέχουν μόνο IPv6 και περιμένουν η συσκευή να φτάσει σε υπηρεσίες IPv4 μέσω μηχανισμού μετάφρασης στην πλευρά του παρόχου. Η απενεργοποίηση του IPv6 σε ένα τέτοιο μηχάνημα δεν είναι βελτίωση ασφάλειας· αφαιρεί τη μόνη διαδρομή προς οτιδήποτε. Είναι μια διακοπή που προκαλείτε μόνοι σας για χάρη ενός αποτελέσματος δοκιμής που δεν χρειαζόταν κανείς.

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

Ό,τι κι αν επιλέξετε, κρατήστε την απόφαση ρητή στο προφίλ ή στο τείχος προστασίας, συνδέστε την με αυτό που υποστηρίζει πραγματικά η έξοδος, και σημειώστε τη συμπεριφορά διπλής στοίβας που περιγράφει η συζήτηση για διπλή στοίβα του RFC 7359 . Ένας δηλωμένος αποκλεισμός είναι πολιτική. Ένα απενεργοποιημένο πρωτόκολλο είναι μια παράκαμψη που κανείς δεν μπορεί να ελέγξει, και από τη σελίδα δοκιμής φαίνονται ίδια.

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