L2TP, GRE ή IPsec: ποιο επίπεδο πρέπει να μεταφέρει τη συνεδρία;
Το L2TP μεταφέρει συνεδρίες PPP, το GRE δρομολογημένα πακέτα, το IPsec προστατεύει την επιλεγμένη κίνηση. Αναθέστε μία εργασία σε κάθε επίπεδο και επαληθεύστε το καθένα χωριστά.
Δύο ερωτήματα μπλέκονται όποτε τα L2TP, GRE και IPsec καταλήγουν στην ίδια σημείωση σχεδίασης: ποια συνεδρία μεταφέρω και ποιο επίπεδο την προστατεύει; Αν το πρώτο απαντηθεί λάθος, όλα τα επόμενα παραμένουν εσωτερικά συνεπή ενώ λύνεται το λάθος πρόβλημα — μια δρομολογημένη επικάλυψη χτίζεται εκεί όπου οι χρήστες έπρεπε να καλούν, ή ένας συγκεντρωτής κλήσης αντικαθιστά μια πύλη site-to-site. Το φύλλο εργασίας παρακάτω επιβάλλει αυτή τη διάκριση πριν συνδεθεί κανείς σε μια συσκευή. Συμπληρώστε το με σειρά και κάθε γραμμή γίνεται κάτι που μπορείτε να δοκιμάσετε μόνο του.
Ξεκινήστε από τη συνεδρία, όχι από τη λίστα πρωτοκόλλων
Ένας απομακρυσμένος χρήστης με συνεδρία PPP και μια δρομολογημένη επικάλυψη ανάμεσα σε δύο πύλες είναι διαφορετικές σχέσεις δικτύου, ακόμη και όταν και οι δύο καταλήγουν τυλιγμένες σε IPsec. Η πρώτη τερματίζει έναν σύνδεσμο ανά χρήστη και απαιτεί εκχώρηση διευθύνσεων, έλεγχο ταυτότητας προσώπου ή συσκευής και μια πολιτική που ονομάζει ποια εσωτερικά δίκτυα μπορεί να προσεγγίσει αυτός ο χρήστης. Η δεύτερη προωθεί πακέτα ανάμεσα σε τοποθεσίες στις οποίες κανείς δεν καλεί.
Γράψτε μία πρόταση που ονομάζει ποια από τις δύο χτίζετε και μετά διαβάστε την σαν να ήσασταν το άτομο που πρέπει να τη λειτουργήσει. Αν η πρόταση χρειάζεται τη λέξη «και», χτίζετε και τις δύο, και το φύλλο χρειάζεται δύο στήλες αντί για μία στήλη συμβιβασμού που εξυπηρετεί καθεμία μισά. Αν αναφέρει χρήστη αλλά καμία πισίνα διευθύνσεων, ή πρόθεμα αλλά καμία πολιτική προώθησης, η πρόταση παραμένει ελλιπής. Η διατύπωση ακούγεται γραφειοκρατική, αλλά είναι το φθηνότερο σημείο για να πιάσετε μια σχεδίαση που αλλιώς θα την ανακαλύψει ένα δελτίο βοήθειας.
Δώστε σε κάθε επίπεδο ακριβώς μία εργασία
Το L2TPv2 μεταφέρει συνεδρίες PPP ανάμεσα στα δύο άκρα του. Το PPP εκτελεί τη διαπραγμάτευση συνδέσμου και, όταν αυτή διαπραγματεύεται, τον έλεγχο ταυτότητας χρήστη· το L2TP δεν προσθέτει καμία κρυπτογραφία, οπότε ένας γυμνός δαίμονας L2TP δεν υλοποιεί κανένα μέρος της σχέσης ασφάλειας IPsec και ανήκει μόνο μέσα σε σύνδεσμο που ήδη εμπιστεύεστε.
Το GRE είναι μια ενθυλάκωση ανάμεσα σε δύο διευθύνσεις. Μεταφέρει πακέτα επιπέδου δικτύου πάνω από μια λογική επικάλυψη και, από μόνο του, δεν προσφέρει ούτε εμπιστευτικότητα ούτε πιστοποιημένη ταυτότητα ομοτίμου. Αυτό δεν είναι ελάττωμα: η κεφαλίδα σχεδιάστηκε απλή ώστε να παραμένει φθηνή στην επεξεργασία σε υλικό προώθησης. Η συνέπεια είναι ότι το GRE απαντά στο «πώς μετακινώ αυτό το πακέτο ανάμεσα σε δύο διευθύνσεις» και σε τίποτε άλλο — ακριβώς η ερώτηση που πρέπει να του κάνετε.
Αυτό αφήνει το IPsec ως το επίπεδο που επιλέγει κίνηση, ελέγχει την ταυτότητα των ομοτίμων και κρυπτογραφεί ό,τι του ζητήθηκε να προστατεύσει. Ποια κίνηση προστατεύει είναι απόφαση διαμόρφωσης που πρέπει να ταιριάζει με την ενθυλάκωση που παράγουν πραγματικά τα άκρα, γιατί μια πολιτική γραμμένη για την εξωτερική διεύθυνση του GRE συμπεριφέρεται διαφορετικά από μία γραμμένη για τα εσωτερικά προθέματα. Η προδιαγραφή GRE κρατά το ωφέλιμο φορτίο, την κεφαλίδα GRE και το εξωτερικό πρωτόκολλο παράδοσης ορατά χωριστά, και η πολιτική σας χρειάζεται τον ίδιο διαχωρισμό.
| Layer | Its one job | What it never does |
|---|---|---|
| PPP | Link negotiation, optional user authentication, address assignment | Protect traffic between gateways |
| L2TPv2 | Carry the PPP session between two endpoints | Encrypt or authenticate peers |
| GRE | Encapsulate network-layer packets between two addresses | Hide or authenticate the payload |
| IPsec | Authenticate peers and encrypt selected traffic | Carry a dial-in user session by itself |
Γράψτε τη διαδρομή του πακέτου πριν από τη διαμόρφωση
Πάρτε ένα πακέτο και απαριθμήστε κάθε κεφαλίδα που προστίθεται, με τη σειρά που προστίθεται, ονομάζοντας τη συσκευή που την προσθέτει. Για χρήστη κλήσης είναι συνήθως PPP μέσα σε L2TP μέσα σε IPsec· για επικάλυψη τοποθεσιών, το εσωτερικό πακέτο IP μέσα σε GRE μέσα σε IPsec. Αν δύο συσκευές προσθέτουν την ίδια κεφαλίδα, έχετε βρόχο ή διπλό τούνελ, και καμία επεξεργασία πολιτικής δεν το διορθώνει.
Η ίδια λίστα καθορίζει το MTU, γιατί το χρησιμοποιήσιμο εσωτερικό μέγεθος είναι το μετρημένο MTU διαδρομής μείον τις κεφαλίδες που μόλις απαριθμήσατε και τίποτε άλλο. Μην αντιγράψετε αριθμό από ανάρτηση φόρουμ: προσθέστε το κόστος εξωτερικού IP, UDP και ESP, μετά GRE ή L2TP, μετά PPP όπου ισχύει, και αφαιρέστε το από το MTU διαδρομής που μετρήσατε πραγματικά. Συμπτώματα που εμφανίζονται μόνο σε μεγάλες μεταφορές, ή συνεδρίες που εγκαθίστανται και μετά πεθαίνουν στην πρώτη μεγάλη απάντηση, συνήθως ανάγονται στο ότι αυτή η πρόσθεση έγινε με εικασίες.
Ελέγξτε κάθε επίπεδο χωριστά, από έξω προς τα μέσα
Εκτελέστε τους ελέγχους με σειρά και σταματήστε στον πρώτο που αποτυγχάνει. Κάθε γραμμή απαντά σε διαφορετική ερώτηση, οπότε μια αποτυχία δείχνει μια στήλη του φύλλου αντί να πει ότι το τούνελ είναι χαλασμένο.
ip xfrm state # is the IPsec SA up?
ip -s link show gre1 # does the overlay interface carry packets?
ip route get 10.20.0.5 # does the inner prefix route where you think?
ss -lun | grep -E "1701|4500" # are the L2TP and NAT-T listeners bound?
Σε ένα κουτί Cisco το αντίστοιχο εξαρτάται από τον ρόλο, και η ακριβής σύνταξη εξαρτάται από την πλατφόρμα και την έκδοση: show crypto session για τους ομοτίμους IPsec, μετρητές διεπαφής για τη διεπαφή GRE ή τούνελ, και η επαλήθευση VPDN ή PPP για τον ρόλο κλήσης. Ένα σύνολο εντολών που τερματίζει PPP δεν αποδεικνύει τίποτε για υποστήριξη GRE, και μια λειτουργική διεπαφή GRE δεν αποδεικνύει τίποτε για την υπηρεσία PPP, οπότε επαληθεύστε τον ρόλο που ρυθμίσατε πραγματικά και όχι αυτόν του διαγράμματος.
Καταγράψτε κάθε έξοδο δίπλα στη γραμμή του φύλλου στην οποία ανήκει. Σημειώσεις που λαμβάνονται όσο το σφάλμα είναι ενεργό αξίζουν περισσότερο από μια τοπολογία που ξανασχεδιάζεται μετά από μνήμης.
Τακτοποιήστε την αποσυναρμολόγηση και μετά επαληθεύστε ξανά
Η αποσυναρμολόγηση εκτελείται αντίστροφα για έναν λόγο: βγάλτε την προστατευμένη κίνηση από την πολιτική IPsec πριν αφαιρέσετε την ενθυλάκωση για την οποία γράφτηκε, αλλιώς η πολιτική συνεχίζει να δείχνει σε διεπαφή που δεν υπάρχει πια και η επόμενη φόρτωση διαμόρφωσης αποτυγχάνει κάπου που φαίνεται άσχετο. Στο Linux αυτό σημαίνει διαγραφή των εγγραφών κατάστασης και πολιτικής πριν από τη διεπαφή τούνελ· σε δρομολογητή, αφαίρεση της εγγραφής crypto map ή profile πριν από το τούνελ.
Μετά την ανοικοδόμηση, επαναλάβετε τις τέσσερις παρατηρήσεις αποδοχής μία κάθε φορά: εξωτερική προσβασιμότητα, εγκατεστημένη συσχέτιση IPsec, εγκατεστημένη συνεδρία PPP όπου η σχεδίαση περιλαμβάνει μία, και εσωτερική προώθηση σε πραγματική διεύθυνση προορισμού. Ένα πράσινο φως δεν είναι απόδειξη για τα άλλα τρία, και αυτό το κενό είναι η αστοχία που επιβιώνει περισσότερο στην παραγωγή — ένα τούνελ που είναι πάνω, κρυπτογραφημένο και δεν προωθεί τίποτε επειδή η εσωτερική διαδρομή δεν προστέθηκε ποτέ.
Κρατήστε το συμπληρωμένο φύλλο δίπλα στη διαμόρφωση της συσκευής. Κάθε στήλη που δεν μπορείτε να συμπληρώσετε είναι ένα επίπεδο χωρίς ανατεθειμένη εργασία, και ένα επίπεδο χωρίς ανατεθειμένη εργασία είναι συνήθως ένα επίπεδο που δεν θα έπρεπε να είναι στη στοίβα.