Πώς λειτουργεί το IPsec βάσει δρομολόγησης με μια διεπαφή XFRM
Μια διεπαφή XFRM δίνει στο IPsec βάσει δρομολόγησης μια συσκευή μέσω της οποίας δρομολογεί. Το if_id, οι συσχετίσεις ασφαλείας πίσω του και η εξωτερική διαδρομή πρέπει όλα να ταιριάζουν.
Το IPsec βάσει δρομολόγησης παραδίδει στον πίνακα δρομολόγησης μια απόφαση που έπαιρναν παλιά οι επιλογείς πολιτικής. Στο Linux, το κομμάτι που το κάνει δυνατό είναι η διεπαφή XFRM: μια εικονική συσκευή της οποίας η κίνηση αντιστοιχίζεται με κατάσταση IPsec μέσω αναγνωριστικού διεπαφής αντί για επιλογέα. Η δημιουργία μίας απαιτεί μία μόνο εντολή και δεν αποδεικνύει τίποτα για το αν υπάρχει σήραγγα. Η συσκευή είναι ένα άγκιστρο ανάμεσα στη δρομολόγηση και την πολιτική ασφαλείας, και οι δύο πλευρές αυτού του αγκίστρου πρέπει να ρυθμιστούν πριν προστατευτεί οτιδήποτε.
Τι είναι η συσκευή και τι δεν είναι
Μια διεπαφή XFRM είναι μια λαβή δρομολόγησης. Τα πακέτα που δρομολογούνται σε αυτήν αντιστοιχίζονται με πολιτικές XFRM που αναφέρονται στο ίδιο αναγνωριστικό διεπαφής, και αν υπάρχουν πολιτική και κατάσταση, ενθυλακώνονται. Χωρίς αυτά, η διεπαφή υπάρχει, οι μετρητές μένουν ακίνητοι και η κίνηση πηγαίνει κάπου άχρηστα.
Αυτή είναι η πρώτη διαγνωστική διάσπαση. Μια διαδρομή μέσα στη συσκευή είναι γεγονός δρομολόγησης, μια εγκατεστημένη κατάσταση είναι γεγονός ασφαλείας, και ένας μετρητής που ανεβαίνει στη συσκευή δεν είναι κανένα από τα δύο. Όταν οι άνθρωποι λένε ότι η σήραγγα είναι ενεργή επειδή η διεπαφή δείχνει UP, περιγράφουν τις σημαίες ζεύξης μιας εικονικής συσκευής που δεν έχει δικό της ομότιμο. Η σημαία σημαίνει ότι η συσκευή δημιουργήθηκε και ενεργοποιήθηκε, τίποτα περισσότερο.
Ένα ακόμη όριο: το αναγνωριστικό διεπαφής δεν είναι όνομα. Δύο συσκευές με παρόμοια ονόματα και διαφορετικά αναγνωριστικά δεν μοιράζονται κατάσταση, και μια σύνδεση που ρυθμίστηκε με λάθος αναγνωριστικό εγκαθιστά κατάσταση που καμία διαδρομή δεν θα χρησιμοποιήσει ποτέ.
Χτίστε μία με τη σωστή σειρά
Ξεκινήστε με την εξωτερική συσκευή και έναν αριθμό που θα βάλετε και στη ρύθμιση του δαίμονα. Το παράδειγμα χρησιμοποιεί το eth0 ως εξωτερική διεπαφή και το 42 ως αναγνωριστικό, διευθύνσεις που πρέπει να αντικαταστήσετε με τις δικές σας.
Ανεβάστε τη συσκευή και μετά επιβεβαιώστε το αναγνωριστικό που κατέγραψε ο πυρήνας πριν αγγίξετε τη ρύθμιση VPN:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Τώρα ρυθμίστε τη σύνδεση στο strongSwan με το ίδιο αναγνωριστικό, αφού ο δαίμονας πρέπει να εγκαταστήσει πολιτικές και καταστάσεις που το αναφέρουν. Ορίστε τους τοπικούς και απομακρυσμένους επιλογείς κίνησης στο εύρος που σκοπεύετε να δρομολογήσετε και μετά δρομολογήστε αυτό το εύρος στη συσκευή. Η ρύθμιση του δαίμονα και ο πίνακας δρομολόγησης πρέπει να συμφωνούν και στο αναγνωριστικό και στους προορισμούς, και καμία δεν παρέχει την άλλη.
Κρατήστε το IKE και το ESP έξω από τη διαδρομή της σήραγγας
Μια προεπιλεγμένη διαδρομή που δείχνει στη συσκευή XFRM συλλαμβάνει τα ενθυλακωμένα πακέτα καθώς και την κίνηση που μεταφέρουν. Το αποτέλεσμα είναι βρόχος: η πύλη προσπαθεί να στείλει το δικό της ESP μέσα από τη σήραγγα που το ESP υποτίθεται ότι χτίζει.
Η λύση είναι μια πιο συγκεκριμένη διαδρομή για την εξωτερική διεύθυνση του ομοτίμου μέσω της φυσικής διεπαφής, που κερδίζει την προεπιλεγμένη επειδή ταιριάζει περισσότερα bit. Η δρομολόγηση βάσει σημάνσεων κάνει την ίδια δουλειά όταν πολλές σήραγγες μοιράζονται έναν πίνακα, και το strongSwan τεκμηριώνει και τις δύο προσεγγίσεις για αναπτύξεις βάσει δρομολόγησης.
Ό,τι κι αν διαλέξετε, επαληθεύστε ότι το εξωτερικό πακέτο βγαίνει μη ενθυλακωμένο. Γρήγορος έλεγχος είναι να κάνετε ping την εξωτερική διεύθυνση του ομοτίμου αφού ανέβει η σήραγγα· αν αυτό αποτύχει ενώ η διεπαφή είναι ενεργή, θεωρήστε πιθανότερη την παγίδευση παρά την προσβασιμότητα. Η ίδια λογική ισχύει για τη θύρα IKE, γιατί η κίνηση UDP του ίδιου του δαίμονα δεν πρέπει να δρομολογείται στη συσκευή που προσπαθεί να εγκαταστήσει.
Ελέγξτε τους μετρητές σε δύο σημεία πριν κατηγορήσετε την κρυπτογράφηση
Οι μετρητές διεπαφής και οι μετρητές κατάστασης μετρούν διαφορετικά στάδια. Τα πακέτα που δρομολογούνται στη συσκευή αυξάνουν τη συσκευή ακόμη και όταν δεν ταιριάζει καμία κατάσταση, ενώ οι μετρητές κατάστασης κινούνται μόνο για κίνηση που πράγματι ενθυλακώθηκε.
Διαβάστε και τα δύο και μετά διαβάστε την άποψη του δαίμονα για τη συσχέτιση παιδί:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasΜετρητές συσκευής που ανεβαίνουν με κενή έξοδο κατάστασης σημαίνουν ότι η δρομολόγηση δουλεύει και η πολιτική δεν ταιριάζει, συνήθως λάθος αναγνωριστικού ή επιλογέα. Μετρητές κατάστασης που ανεβαίνουν ενώ η απομακρυσμένη πλευρά δεν αναφέρει τίποτα σημαίνουν ότι τα πακέτα φεύγουν αλλά δεν φτάνουν ή αποτυγχάνουν την αυθεντικοποίηση, κάτι που δείχνει στη διαδρομή ή στη ρύθμιση του ομοτίμου. Ένα καταγεγραμμένο παιδί με μηδενική κίνηση είναι πρόβλημα επιλογέα στη μία άκρη, όχι σπασμένος κρυπταλγόριθμος.
Αποφασίστε ποιος εγκαθιστά τις διαδρομές
Δύο ιδιοκτήτες για έναν πίνακα δρομολόγησης είναι η συνήθης πηγή ταλάντωσης. Αν ο δαίμονας εγκαθιστά διαδρομές αυτόματα, ο διαχειριστής δικτύου σας δεν πρέπει να εγκαθιστά κι αυτός προεπιλεγμένη διαδρομή μέσω της ίδιας συσκευής, και μια χειροκίνητη διαδρομή που πρόσθεσε σενάριο εκκίνησης θα αφαιρεθεί την επόμενη φορά που ο δαίμονας θα αναδιαρθρώσει τη ρύθμιση.
Διαλέξτε έναν ιδιοκτήτη και γράψτε το. Όταν ο δαίμονας κατέχει τις διαδρομές, κρατήστε το σενάριο εκκίνησης έξω από τον πίνακα και αφήστε τον ορισμό της σύνδεσης να περιγράφει τους επιλογείς κίνησης. Όταν τις κατέχει ο διαχειριστής δικτύου, απενεργοποιήστε την αυτόματη εγκατάσταση και δεχτείτε ότι ο δαίμονας δεν θα επισκευάσει μια διαδρομή που λείπει κατά την επανασύνδεση.
Οι κανόνες προώθησης και τείχους προστασίας είναι ξεχωριστή απόφαση από πάνω, γιατί μια πύλη που περνά κίνηση άλλων κεντρικών υπολογιστών χρειάζεται και τα δύο. Το IPsec βάσει δρομολόγησης κάνει αυτή την κίνηση εύκολη να εκφραστεί με συνηθισμένα εργαλεία δρομολόγησης· δεν κάνει το επίπεδο πολιτικής προαιρετικό.