Το IKEv2 χρησιμοποιεί UDP 500 και 4500: ποια θύρα μεταφέρει τα δεδομένα;
Η πρώτη ανταλλαγή και η διαδρομή που μεταφέρει δεδομένα δεν είναι η ίδια ροή. Ελέγξτε και τις δύο θύρες και θυμηθείτε ότι το γνήσιο ESP είναι αριθμός πρωτοκόλλου, όχι θύρα.
Το άνοιγμα της UDP 500 στο τείχος προστασίας επιτρέπει στη σήραγγα να διαπραγματευτεί, και μετά η σύνδεση σταματά να περνά κίνηση. Η λίστα θυρών ήταν ελλιπής, όχι λανθασμένη. Το IKEv2 ξεκινά σε ένα socket και σε πολλές πραγματικές εγκαταστάσεις συνεχίζει σε άλλο, ενώ το ωφέλιμο φορτίο μπορεί να μην είναι καθόλου θύρα. Η ανάγνωση των σταδίων με σειρά εξηγεί ποιος κανόνας λείπει.
Δύο θύρες, δύο ρόλοι
Το IKEv2 ξεκινά με ανταλλαγή κλειδιών στην UDP 500, όπου τα δύο άκρα πιστοποιούνται και δημιουργούν έναν σύνδεσμο ασφαλείας για τη σήραγγα. Η διαδρομή δεδομένων που ακολουθεί είναι ξεχωριστό ζήτημα: μπορεί να είναι γνήσιο ESP, δηλαδή αριθμός πρωτοκόλλου IP και όχι θύρα, ή κίνηση ενθυλακωμένη σε UDP στην 4500. Ο διαχωρισμός τους σε έναν έλεγχο τείχους προστασίας είναι η διαφορά ανάμεσα σε σήραγγα που διαπραγματεύεται και σε σήραγγα που λειτουργεί. Το ένα socket μεταφέρει έλεγχο και το άλλο ωφέλιμο φορτίο.
Γι' αυτό ένας κανόνας που επιτρέπει μόνο την 500 παράγει το πιο μπερδεμένο σύμπτωμα σε όλη την οικογένεια πρωτοκόλλων: η διαπραγμάτευση πετυχαίνει και τίποτα χρήσιμο δεν ακολουθεί. Η κατάσταση δείχνει έναν peer, το αρχείο καταγραφής δείχνει εγκατεστημένο IKE SA, και η εφαρμογή εξακολουθεί να λήγει. Η άδεια που λείπει ανήκει σε διαφορετική ροή από εκείνη που μόλις πέτυχε.
Γιατί υπάρχει καν η 4500
Πολλές συσκευές NAT δεν μπορούν να προωθήσουν πρωτόκολλο άλλο από TCP ή UDP, και μερικές ξαναγράφουν διευθύνσεις με τρόπους που σπάνε τον έλεγχο ακεραιότητας του ESP. Η ενθυλάκωση του ESP μέσα σε UDP λύνει και τα δύο προβλήματα, με κόστος μια επιπλέον κεφαλίδα και μια δεύτερη θύρα που πρέπει να επιτραπεί. Αυτή η ενθυλάκωση είναι ο λόγος που η δεύτερη θύρα υπάρχει καν.
Μόλις ανιχνευθεί NAT, το ίδιο το IKE μετακινείται επίσης στην 4500 ώστε όλη η κίνηση να μοιράζεται μία διαδρομή μέσα από τον μεταφραστή. Ένας δείκτης τεσσάρων byte που δεν είναι ESP ξεχωρίζει τα μηνύματα ελέγχου από τα δεδομένα σε αυτό το socket. Η αλλαγή είναι απόφαση πρωτοκόλλου, όχι προτίμηση διαχειριστή.
Πού αλλάζει η θύρα προέλευσης
Ένας μεταφραστής μπορεί να ξαναγράψει τη θύρα προέλευσης του πελάτη, οπότε η πλειάδα που βλέπει ο διακομιστής δεν ταιριάζει με την πλειάδα στον πελάτη. Κοιτάξτε και τις δύο πλευρές κάθε άλματος NAT πριν συμπεράνετε ότι ένας κανόνας αγνοείται. Η αντιμετώπιση προβλημάτων μόνο στον πελάτη μπορεί να δώσει κανόνα που φαίνεται σωστός και παρόλα αυτά αποτυγχάνει.
Οι υλοποιήσεις με υποστήριξη MOBIKE μπορούν επίσης να μετακινηθούν στην 4500 χωρίς ανιχνευμένο NAT, και μερικές εγκαταστάσεις επιβάλλουν σκόπιμα αυτή τη διαδρομή. Το να βλέπεις 4500 είναι επομένως απόδειξη απόφασης, όχι απόδειξη οικιακού δρομολογητή.
Ελέγξτε και τις δύο ροές σε κάθε όριο
Περάστε τα τρία όρια: το δίκτυο του πελάτη, οποιοδήποτε ενδιάμεσο τείχος προστασίας και τον διακομιστή. Το καθένα χρειάζεται τις ροές που τεκμηριώνει η εγκατάσταση, όχι τις ροές από ένα άρθρο για άλλη περίπτωση.
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state
Η γραμμή ESP σε μια λίστα τείχους προστασίας είναι αντιστοίχιση πρωτοκόλλου, οπότε ένας κανόνας θύρας δεν την καλύπτει ποτέ. Αν ο χειριστής χρησιμοποιεί προσαρμοσμένη θύρα, ακολουθήστε την τεκμηριωμένη διαμόρφωση και στα δύο άκρα, γιατί ένας πελάτης δεν μπορεί να δημιουργήσει ακροατή στον διακομιστή επιλέγοντας ένα γνωστό νούμερο.
Καταγράψτε πού σταμάτησε η διαπραγμάτευση και αν εγκαταστάθηκε θυγατρικός σύνδεσμος ασφαλείας, γιατί αυτό το ζεύγος ξεχωρίζει μια φραγμένη διαδρομή από σφάλμα πιστοποίησης ή πολιτικής. Στη συνέχεια επαναλάβετε τη δοκιμή με ενεργή επαλήθευση διακομιστή, γιατί η προσβασιμότητα δεν είναι πιστοποίηση. Αυτό το τελευταίο βήμα ξεχωρίζει μια επιτρεπόμενη θύρα από έναν αξιόπιστο peer.