Το IPv6 μέσω διακομιστή VPN IPv4 χρειάζεται ακόμη έξοδο IPv6
Η μεταφορά IPv6 μέσα σε σήραγγα IPv4 είναι το εύκολο μισό. Η έξοδος χρειάζεται ακόμη πραγματικό upstream IPv6, ένα χρησιμοποιήσιμο πρόθεμα πηγής και διαδρομή επιστροφής για την ομάδα.
Η σήραγγα σηκώνεται, ο πελάτης παίρνει μια διεύθυνση IPv6 από την ομάδα και παρ’ όλα αυτά κάθε προορισμός IPv6 λήγει σε χρονικό όριο. Τίποτα δεν είναι χαλασμένο στη σήραγγα: το IPv6 ταξιδεύει μια χαρά μέσα στη μεταφορά IPv4, και αυτό δεν ήταν ποτέ το δύσκολο κομμάτι. Η διεύθυνση που έδωσες είναι μια υπόσχεση που ο διακομιστής δεν μπορεί να κρατήσει, γιατί η έξοδος δεν έχει upstream IPv6 για να τη στείλει. Η επισκευή ανήκει στην έξοδο, όχι στο προφίλ του πελάτη.
Το σύμπτωμα: μια διεύθυνση και κανένα μονοπάτι
Ένας έλεγχος στην πλευρά του πελάτη δείχνει μια διεύθυνση IPv6 που μοιάζει καθολική στη συσκευή σήραγγας και μια διαδρομή που δείχνει μέσα της, γι’ αυτό και αυτό διαβάζεται λανθασμένα ως σφάλμα πελάτη. Η κίνηση μπαίνει στη σήραγγα, ο διακομιστής την αποενθυλακώνει και μετά το πακέτο προσγειώνεται σε έναν υπολογιστή του οποίου ο πίνακας δρομολόγησης δεν έχει προεπιλεγμένη διαδρομή IPv6 προς κανένα πραγματικό μέρος. Ανάλογα με τη στοίβα παίρνεις άμεση απροσπελασιμότητα ή σιωπηλή απόρριψη, και σε κάθε περίπτωση ο πελάτης βλέπει ένα χρονικό όριο που μοιάζει ίδιο με τείχος προστασίας.
Διάβασε τον δικό του πίνακα δρομολόγησης του διακομιστή πριν αγγίξεις τον πελάτη, γιατί εκεί ζει το μισό μονοπάτι που λείπει. Ένας διακομιστής με μία προεπιλεγμένη διαδρομή IPv4 σου έχει ήδη δώσει την απάντηση.
Ακολούθησε το πακέτο μετά την αποενθυλάκωση
Μέσα στη σήραγγα το πακέτο είναι συνηθισμένο IPv6 και πηγή του είναι η διεύθυνση του πελάτη. Ο διακομιστής αφαιρεί την ενθυλάκωση μεταφοράς και κρατά τότε ένα γηγενές πακέτο IPv6 που πρέπει να προωθηθεί στο επόμενο άλμα IPv6. Μια προεπιλεγμένη διαδρομή IPv4 δεν μπορεί να το μεταφέρει, και η μετάφρασή του σε IPv4 είναι άλλη λειτουργία που κανείς δεν ανέπτυξε. Αυτή είναι όλη η αποτυχία, και δεν έχει καμία σχέση με το αν ο ακροατής VPN απάντησε μέσω IPv4.
Η μηχανική της ενθυλάκωσης IPv6 πάνω από IPv4 περιγράφεται στο RFC 4213, και η σημαντική λεπτομέρεια εκεί είναι ότι τα άκρα χρειάζονται ακόμη πραγματική συνδεσιμότητα IPv6 στην άλλη πλευρά της σήραγγας. Το τύλιγμα μιας κεφαλίδας δεν δημιουργεί upstream από το πουθενά.
Δύο στρώματα σήραγγας, δύο ανεξάρτητοι έλεγχοι
Επαλήθευσε κάθε στρώμα χωριστά, γιατί μια λειτουργική εξωτερική σήραγγα κρύβει μια χαλασμένη εσωτερική. Έλεγξε το εξωτερικό μονοπάτι με ping IPv4 από τον πελάτη στον διακομιστή και επιβεβαίωσε τη θύρα που χρησιμοποιείς. Μετά έλεγξε το εσωτερικό μονοπάτι στον διακομιστή, όπου ip -6 route πρέπει να δείχνει μια προεπιλεγμένη ή μια συγκεκριμένη διαδρομή που έμαθε από πραγματικό upstream, και ip -6 addr πρέπει να δείχνει ένα πρόθεμα πηγής που δέχεται το upstream. Οτιδήποτε λιγότερο είναι διακόσμηση στη διεπαφή.
Μια μοναδική τοπική διεύθυνση, ή ένα πρόθεμα που μοιάζει καθολικό και τίποτα δεν δρομολογεί πίσω σε αυτό, θα εμφανιστεί ευχαρίστως σε μια διεπαφή και θα πάει πουθενά. Η δημόσια προσβασιμότητα δίνεται από το upstream, όχι από το σχήμα της διεύθυνσης.
Το ίδιο ισχύει στον πελάτη: ip -6 route get 2001:4860:4860::8888 θα πρέπει να ονομάζει τη συσκευή σήραγγας, και αν ονομάζει τη φυσική, ο πελάτης δεν χρησιμοποιεί καθόλου το VPN για IPv6.
Πρόθεμα πηγής, μέγεθος και ICMPv6
Ρώτησε το upstream ποια προθέματα πηγής θα δεχτεί για προώθηση, και χρησιμοποίησε ένα από αυτά για την ομάδα πελατών. Ένας πάροχος που σου δίνει ένα /64 για τη διεπαφή του ίδιου του διακομιστή δεν δρομολογεί κατ’ ανάγκη ένα δεύτερο /64 ή μεγαλύτερο μπλοκ προς εσένα, και η διαφορά είναι ένα απόγευμα εντοπισμού σφαλμάτων που ένα δελτίο υποστήριξης τακτοποιεί με μία ερώτηση. Ρώτησε γραπτώς και κράτησε την απάντηση μαζί με τη διαμόρφωση.
Υπολόγισε την επιπλέον ενθυλάκωση που χρησιμοποιεί πραγματικά η στοίβα σου, και κράτησε το ICMPv6 σε λειτουργία, μαζί με το Packet Too Big. Μια δεύτερη κεφαλίδα μικραίνει το ωφέλιμο φορτίο, οπότε ένα μονοπάτι που απαντά σε μικρά ping μπορεί να αποτύχει σε μια μεταφορά αρχείου, και ένα τείχος προστασίας που ρίχνει όλο το ICMPv6 μετατρέπει ένα επισκευάσιμο πρόβλημα μεγέθους σε μαύρη τρύπα. Δοκίμασε μία μεγάλη μεταφορά πριν ανακοινώσεις την υπηρεσία.
Τι είναι εντελώς άλλο πρόβλημα
Το να φτάσεις σε μια εφαρμογή μόνο IPv4 από έναν πελάτη μόνο IPv6 είναι μετάφραση, όχι σηραγγοποίηση, και χρειάζεται κάτι σαν μια σκόπιμα αναπτυγμένη διάταξη NAT64. Ο προορισμός δεν θα καταλάβει μια επιπλέον κεφαλίδα σήραγγας μόνο επειδή πρόσθεσες μία. Οι ιστορικές υπηρεσίες μετάβασης αξίζουν την ίδια φροντίδα: το RFC 7526 κατήργησε το μοντέλο αναμετάδοσης anycast 6to4, οπότε ένας οδηγός γραμμένος γύρω από αυτό περιγράφει κάτι που δεν έχει πια συντηρούμενο δημόσιο αναμεταδότη.
Αν ο διακομιστής δεν έχει χρησιμοποιήσιμο upstream IPv6, οι επιλογές είναι ένα υποστηριζόμενο upstream, μια διαφορετική έξοδος ή μια τεκμηριωμένη απόφαση ότι το IPv6 μένει έξω από τη σήραγγα. Το μη αποδεκτό είναι να λες στους πελάτες ότι υπάρχει υπηρεσία IPv6 ενώ η συνηθισμένη τους σύνδεση IPv6 παρακάμπτει ήσυχα το VPN.