iPhone Always On VPN: δύο σήραγγες μπορούν να μοιράζονται μία εικονική IP
Οι σήραγγες Always On ανά διεπαφή δεν είναι αποτυχημένο rekey. Συγκρίνετε τα δύο SA στον διακομιστή και αποφασίστε αν μία ταυτότητα μπορεί να κρατά δύο εσωτερικές διευθύνσεις.
Σε ένα iPhone υπό επιτήρηση με διαχειριζόμενο προφίλ Always On, το τηλέφωνο κρατά σήραγγα για κάθε ενεργή διεπαφή IP, ώστε το δίκτυο κινητής και το Wi-Fi να έχουν από μία. Ο διακομιστής έπειτα εμφανίζει δύο συσχετίσεις ασφαλείας IKE για μία συσκευή, συχνά με κοινή εικονική διεύθυνση, και η πρώτη παρόρμηση είναι να το πεις βρόχο rekey και να αρχίσεις να αλλάζεις χρονόμετρα. Αυτή η παρόρμηση είναι συνήθως λάθος. Δουλέψτε τα βήματα παρακάτω με τη σειρά που εμφανίζονται τα στοιχεία στον διακομιστή, και αφήστε τις ρυθμίσεις του τηλεφώνου ήσυχες ώσπου ο διακομιστής να σας πει ποια περίπτωση έχετε.
Ξεκινήστε με τις δύο γραμμές που έχει ήδη ο διακομιστής
Καταγράψτε τις συσχετίσεις με swanctl --list-sas και διαβάστε τέσσερα πεδία και στις δύο εγγραφές: την απομακρυσμένη διεύθυνση, την πιστοποιημένη ταυτότητα, την εκχωρημένη εικονική IP και τον χρόνο δημιουργίας. Δύο διαφορετικές εξωτερικές διευθύνσεις με μία ταυτότητα και μία εικονική IP είναι το σχήμα που ξεκίνησε αυτή την ερώτηση, και αξίζει να το σημειώσετε πριν από οποιαδήποτε αλλαγή. Έπειτα ελέγξτε τις θυγατρικές συσχετίσεις που συνδέονται με την καθεμία, γιατί οι επιλογείς κίνησης αποφασίζουν αν μια αναζήτηση προορισμού θα μπορούσε ποτέ να ξεχωρίσει τις δύο σήραγγες. Ένα ζεύγος που εμφανίζεται και εξαφανίζεται σε δευτερόλεπτα είναι άλλο ζώο από ένα ζεύγος που και τα δύο ζουν για ώρες.
Ταξινομήστε τη λίστα κατά χρόνο δημιουργίας πριν βγάλετε συμπέρασμα. Η γειτνίαση στην έξοδο δεν σημαίνει τίποτα, και μια πινακοποιημένη λίστα προσκαλεί ακριβώς αυτό το λάθος.
Αποφασίστε ποια επικάλυψη κοιτάτε
Το rekey του IKEv2 και η επαναπιστοποίηση make-before-break δημιουργούν σκόπιμα σύντομη επικάλυψη, εγκαθιστώντας τη νέα συσχέτιση πριν διαγραφεί η παλιά. Οι χρονικές σφραγίδες λύνουν την υπόθεση, γιατί ένα παλιό SA που εξαφανίζεται ένα ή δύο δευτερόλεπτα αφού εμφανιστεί το νέο είναι ανανέωση που κάνει τη δουλειά της. Οι ανεξάρτητες σήραγγες ανά διεπαφή δεν μοιάζουν ποτέ έτσι, αφού η καθεμία επιμένει όσο η διεπαφή της είναι ενεργή, και η διαγραφή της μίας δεν προκύπτει από τη δημιουργία της άλλης.
Η διαχειριζόμενη συμπεριφορά Always On της Apple είναι ανά διεπαφή, γι' αυτό μια συσκευή υπό επιτήρηση μπορεί νόμιμα να φαίνεται πιο πολυάσχολη από ένα προφίλ ρυθμισμένο με το χέρι. Ο διακόπτης αυτόματης σύνδεσης μιας εφαρμογής παρόχου δεν σημαίνει το ίδιο, ούτε ένας συνηθισμένος κανόνας on-demand. Η επισκόπηση ανάπτυξης της Apple περιγράφει το μοντέλο ανά διεπαφή· συγκρίνετε τις δύο γραμμές σας με αυτήν πριν υποθέσετε βρόχο. Και τα δύο σχήματα αντλούν από την ίδια δεξαμενή του διακομιστή, άρα η επικάλυψη είναι το μόνο πρώιμο σήμα σας.
Δείτε γιατί μία εικονική διεύθυνση για δύο σήραγγες χαλάει τις απαντήσεις
Μια απάντηση προς το τηλέφωνο διευθύνεται στην εσωτερική διεύθυνση, και ο πυρήνας επιλέγει εξερχόμενη σήραγγα με βάση τον προορισμό και την πολιτική, όχι τη διεπαφή που χρησιμοποίησε το τηλέφωνο. Δύο ταυτόχρονες συσχετίσεις που κρατούν την ίδια εικονική IP με συμπίπτουσες πολιτικές αφήνουν την απόφαση δρομολόγησης χωρίς τρόπο να πει σε ποια συνεδρία ανήκει μια απάντηση. Μερικές απαντήσεις παίρνουν λάθος σήραγγα, και το τηλέφωνο δείχνει σύνδεση που δουλεύει προς μία κατεύθυνση ή πεθαίνει όταν ανέβει το Wi-Fi. Δύο έξοδοι εντολών αποδεικνύουν την κατάσταση: swanctl --list-sas δείχνει την ίδια εικονική IP και στα δύο SA, και ip xfrm policy δείχνει δύο πανομοιότυπους επιλογείς.
Αυτό το ζεύγος εξόδων είναι και αυτό που επικολλάτε στο αρχείο αλλαγής. Κανένα μόνο του δεν είναι πειστικό, γιατί καθένα μπορεί να φαίνεται εύλογο χωριστά.
Πρόκειται για διευθυνσιοδότηση και πολιτική στην πλευρά του διακομιστή, όχι κακή συμπεριφορά του τηλεφώνου, και καμία ρύθμιση πελάτη δεν χωρίζει δύο πανομοιότυπες εσωτερικές διευθύνσεις. Η δεξαμενή έδωσε την ίδια τιμή δύο φορές και ο εγκαταστάτης πολιτικής την αποδέχτηκε. Διαβάστε το αποτέλεσμα από την πλευρά του διακομιστή πριν κατηγορήσετε τον πελάτη.
Αλλάξτε τη δεξαμενή ή το μοντέλο ταυτοχρονίας, όχι το χρονόμετρο rekey
Στη διαμόρφωση swanctl, η μοναδικότητα είναι ρητή πολιτική στη σύνδεση: το unique = replace αφαιρεί παλαιότερη σύνδεση όταν εγκαθίσταται νέα, και το unique = keep απορρίπτει τον νεοφερμένο. Και οι δύο τιμές δρουν όταν στήνεται μια σύνδεση, όχι στα θυγατρικά SA μέσα της.
connections {
ios-alwayson {
unique = replace
}
}
Καμία τιμή δεν είναι ουδέτερη για πελάτη ανά διεπαφή. Το keep επαναφέρει μια τακτοποιημένη οθόνη κατάστασης αρνούμενο τη δεύτερη σήραγγα και σπάει τον διαχειριζόμενο σχεδιασμό, ενώ το replace γκρεμίζει την παλαιότερη σήραγγα και είναι ο ίδιος συμβιβασμός προς την άλλη κατεύθυνση. Αν χρειάζονται πραγματικά και οι δύο σήραγγες, το backend της δεξαμενής πρέπει να εκδίδει διαφορετικές μισθώσεις για μία ταυτότητα, και το κλειδί μίσθωσής του πρέπει να ξεχωρίζει τα αιτήματα. Ένας στατικός πίνακας ταυτότητας-προς-διεύθυνση θα επιστρέψει πρόθυμα την ίδια διεύθυνση δύο φορές και θα αναπαράγει το αρχικό πρόβλημα με περισσότερη διαμόρφωση. Ελέγξτε πώς το backend παράγει κλειδιά μισθώσεων πριν προσθέσετε δεύτερη στατική αντιστοίχιση.
Δοκιμάστε τις μεταβάσεις που πραγματικά διανέμετε
Βγείτε από την εμβέλεια του Wi-Fi με ενεργή συνεδρία, μετά μπείτε ξανά, και ελέγξτε ότι οι απαντήσεις φτάνουν και προς τις δύο κατευθύνσεις. Κάντε το δύο φορές, γιατί στη δεύτερη μετάβαση εμφανίζεται συνήθως μια παρωχημένη πολιτική. Δοκιμάστε με υπηρεσία που απαντά στη σύνδεση που ανοίξατε, και επαναλάβετε την έξοδο ενώ η σήραγγα μεταφέρει κίνηση αντί να μένει αδρανής. Ένα τηλέφωνο που μπορεί να στέλνει αλλά όχι να λαμβάνει φαίνεται υγιές σε αρχείο χειραψίας και χαλασμένο σε πρόγραμμα περιήγησης.
Μια οθόνη κατάστασης περιορισμένη σε μία γραμμή δεν είναι απόδειξη σχεδιασμού που δουλεύει, μόνο απόδειξη ότι μία σήραγγα έφυγε. Και οι δύο κατευθύνσεις πρέπει να δουλεύουν πριν περάσει μια μετάβαση. Καταγράψτε τι παρατηρήσατε, μαζί με τις δύο εξόδους του ελέγχου επικάλυψης, ώστε ο επόμενος μηχανικός να συγκρίνει αντί να επαναλάβει τη βόλτα.