strongSwan ESP-in-UDP: όταν δεν υπάρχει NAT για εντοπισμό
Ο εντοπισμός NAT βρίσκει τη μετάφραση διευθύνσεων, όχι την πολιτική του τείχους προστασίας. Μια σύνδεση τοποθεσίας χωρίς NAT μπορεί παρ' όλα αυτά να χρειάζεται ρητή επιλογή ESP-in-UDP.
Ο εντοπισμός NAT απαντά σε ένα ερώτημα: άλλαξαν οι διευθύνσεις ή οι θύρες κατά τη διαδρομή; Δεν απαντά αν ένα τείχος προστασίας επιτρέπει το πρωτόκολλο IP 50. Οι πύλες τοποθεσίας χωρίς καμία μετάφραση μπορούν ακόμη να βρίσκονται πίσω από πολιτική που απορρίπτει το native ESP, και αυτή η απαίτηση πρέπει να ρυθμιστεί αντί να ανακαλυφθεί. Ο μηχανισμός είναι το ESP-in-UDP, και είναι απόφαση, όχι εφεδρική λύση που εμφανίζεται μόνη της.
Ο εντοπισμός είναι αριθμητική στις διευθύνσεις, όχι ανίχνευση τείχους προστασίας
Το IKEv2 μεταφέρει ωφέλιμα φορτία εντοπισμού NAT με κατακερματισμούς των διευθύνσεων και θυρών πηγής και προορισμού. Κάθε πλευρά συγκρίνει ό,τι έλαβε με ό,τι βλέπει τοπικά, και μια ασυμφωνία τής λέει ότι κάτι μετέφρασε το πακέτο. Τίποτε σε αυτή την ανταλλαγή δεν ελέγχει αν ένας δρομολογητής στη μέση προωθεί το πρωτόκολλο 50.
Αξίζει να πούμε καθαρά την πρακτική συνέπεια. Μια σήραγγα που λειτουργούσε με native ESP δεν θα ανακαλύψει μόνη της ένα νέο περιοριστικό τείχος προστασίας, και η επόμενη προσπάθειά της αποτυγχάνει στο στάδιο δεδομένων ενώ το IKE συνεχίζει να πετυχαίνει. Θα δείτε εγκατεστημένες συσχετίσεις ασφαλείας IKE και καμία προστατευμένη κίνηση, που μοιάζει με σφάλμα δρομολόγησης μέχρι να συλλάβετε στο καλώδιο.
Η ενθυλάκωση είναι επομένως ιδιότητα της σύνδεσης που ρυθμίζετε, όχι αποτέλεσμα που διαπραγματεύονται τα άκρα από τη συμπεριφορά του δικτύου.
Πώς το encap αλλάζει την ανταλλαγή
Σε μια σύγχρονη εγκατάσταση strongSwan που διαχειρίζεται μέσω swanctl.conf, η ρύθμιση encap = yes στη σύνδεση επηρεάζει την ανταλλαγή εντοπισμού NAT ώστε και τα δύο άκρα να χρησιμοποιούν ενθυλάκωση UDP για το ESP. Τα προστατευμένα πακέτα ταξιδεύουν τότε μέσα σε UDP, συνήθως στη θύρα 4500, και τα δύο άκρα πρέπει να συμφωνήσουν σε αυτή τη διευθέτηση.
connections {
site {
encap = yes
# existing approved peer, authentication and child settings
}
}
Αυτό το απόσπασμα ανήκει μέσα σε έναν πραγματικό ορισμό σύνδεσης και δεν είναι πλήρες προφίλ τοποθεσίας. Διατηρήστε τις διευθύνσεις ομοτίμων, την αυθεντικοποίηση και τους επιλογείς κίνησης child που ήδη εκτελείτε· το μόνο κλειδί που προστέθηκε αλλάζει πώς τυλίγονται τα προστατευμένα δεδομένα, όχι τι προστατεύουν.
Ο οδηγός του strongSwan για NAT-traversal περιγράφει αυτή τη συμπεριφορά, μαζί με την αλληλεπίδραση με την πλωτή θύρα όταν χρησιμοποιείται το MOBIKE.
Χρησιμοποιήστε τη ρύθμιση που ανήκει στο backend σας
Το strongSwan έχει δύο backends διαμόρφωσης, και το κλειδί διαφέρει μεταξύ τους. Μια swanctl.conf σύνδεση δέχεται encap, ενώ μια παλαιότερη ipsec.conf σύνδεση δέχεται forceencaps. Η τοποθέτηση της λέξης-κλειδιού του ενός backend στο άλλο παράγει διαμόρφωση που φορτώνεται χωρίς παράπονο και δεν αλλάζει τίποτε, κάτι χειρότερο από σφάλμα.
Ελέγξτε ποιος δαίμονας εκτελείται πραγματικά πριν επεξεργαστείτε οτιδήποτε. Σε πολλές διανομές υπάρχουν και τα δύο αρχεία επειδή το ένα είναι κατάλοιπο προηγούμενης μετανάστευσης, και το ενεργό είναι αυτό που ξεκινά η μονάδα υπηρεσίας. Διαβάστε αυτή τη μονάδα αντί να μαντεύετε από τις χρονικές σημάνσεις των αρχείων. Ένας έλεγχος πέντε δευτερολέπτων εδώ αποτρέπει ώρες δοκιμών μιας ρύθμισης που δεν φόρτωσε τίποτε.
Εφαρμόστε την αλλαγή μέσω του ιδιοκτήτη της σύνδεσης και επαναφέρετε τη συσχέτιση σε ελεγχόμενο παράθυρο. Ένα ήδη εγκατεστημένο child διατηρεί την τρέχουσα ενθυλάκωσή του μέχρι να αντικατασταθεί, οπότε μια επεξεργασία αρχείου μόνη της δεν αποδεικνύει ότι η νέα διευθέτηση χρησιμοποιείται.
Επαληθεύστε τα τυλιγμένα δεδομένα, όχι μόνο τη θύρα
Συλλάβετε στην πύλη ενώ ρέει προστατευμένη κίνηση και μετά συγκρίνετε το με την εικόνα του ίδιου του strongSwan:
$ sudo tcpdump -ni eth0 'udp port 4500' -c 20
$ sudo swanctl --list-sas --ike site
$ sudo ip xfrm state list
Το native ESP εμφανίζεται ως πρωτόκολλο IP 50 και δεν μοιάζει καθόλου με UDP. Το τυλιγμένο ESP εμφανίζεται ως αυτοδύναμα UDP στο 4500 των οποίων το ωφέλιμο φορτίο δεν είναι IKE. Η κίνηση IKE στην ίδια θύρα δεν είναι απόδειξη ενθυλάκωσης, επειδή το MOBIKE μπορεί να μεταφέρει το IKE εκεί ενώ η διαδρομή δεδομένων παραμένει native, οπότε διαβάστε το ωφέλιμο φορτίο και όχι τον αριθμό θύρας.
Έχετε επίσης υπόψη το MTU της διαδρομής. Το περίβλημα προσθέτει επιβάρυνση, και μια διαδρομή που μετέφερε native ESP μπορεί να χρειαστεί προσαρμογές καθώς τα πακέτα μεγαλώνουν. Η απαιτούμενη διαχείριση ICMP θα έπρεπε ήδη να είναι μέρος του σχεδιασμού· η ενθυλάκωση δεν αφαιρεί αυτή την εξάρτηση.
Αποδεχτείτε την αλλαγή όταν η νέα κίνηση εφαρμογών μέσα στη σήραγγα είναι ορατή στη σύλληψη ως τυλιγμένο ESP και στα δύο άκρα, και όταν η εσωτερική υπηρεσία και η διαδρομή επιστροφής της λειτουργούν ακόμη. Οτιδήποτε λιγότερο είναι μια διαμόρφωση που φαίνεται σωστή σε ένα αρχείο.