Γιατί το BGP πάνω από VPN δεν ελέγχει τη διαδρομή του υποστρώματος σας
Το BGP πάνω από VPN ανταλλάσσει προσβασιμότητα και εφαρμόζει πολιτική δρομολόγησης, αλλά το υπόστρωμα εξακολουθεί να επιλέγει την εξωτερική διαδρομή. Τι ελέγχει πραγματικά η συνεδρία.
Δύο τοποθεσίες κάνουν peering BGP μέσω σήραγγας IPsec, μαθαίνουν τα πρόθεμα της άλλης και το διάγραμμα μετονομάζεται σε έλεγχο διαδρομής. Αυτή η ετικέτα είναι το σημείο όπου αρχίζει η σύγχυση. Η συνεδρία ανταλλάσσει πράγματι προσβασιμότητα και εφαρμόζει πολιτική, αλλά δεν έχει λόγο για το ποιος πάροχος, καλώδιο ή δρομολογητής μεταφέρει τα κρυπτογραφημένα πακέτα. Έχω δει ομάδα να ξαναχτίζει μια σήραγγα που δούλευε, επειδή περίμενε ότι μια αλλαγή διαδρομής BGP θα μετακινούσε την κίνηση σε άλλη διαδρομή οπτικών ινών που η συνεδρία δεν θα μπορούσε ποτέ να επηρεάσει.
Τι υποθέτουν οι άνθρωποι ότι αγοράζει μια συνεδρία
Το μεγαλύτερο μέρος της προσδοκίας προέρχεται από το πώς φαίνεται μια αλλαγή διαδρομής σε ένα εργαστήριο. Διαφημίζετε ένα πρόθεμα μέσω της σήραγγας, η απομακρυσμένη πλευρά το εγκαθιστά και η κίνηση μετακινείται. Η ίδια αλληλουχία συμβαίνει σε δρομολογητή που έχει πράγματι μοχλούς μηχανικής κίνησης, οπότε τα δύο συγχέονται. Στο εργαστήριο και οι δύο τοποθεσίες μοιράζονται συνήθως έναν σύνδεσμο πρόσβασης, και γι' αυτό ακριβώς η διαφορά δεν εμφανίζεται ποτέ εκεί.
Το BGP είναι πρωτόκολλο προσβασιμότητας. Λέει σε έναν peer ότι μπορείτε να παραδώσετε πακέτα για ένα πρόθεμα και επιτρέπει σε κάθε πλευρά να κατατάξει τις προσφορές που λαμβάνει. Αυτό είναι πραγματικά χρήσιμο μέσω σήραγγας: τα πρόθεμα εμφανίζονται και εξαφανίζονται καθώς οι τοποθεσίες έρχονται και φεύγουν, και μπορείτε να απορρίψετε μια περιοχή χωρίς να γράψετε στατική διαδρομή σε κάθε συσκευή άκρης. Αυτό που δεν κάνει είναι να θέσει τους δρομολογητές ενός παρόχου υπό τον έλεγχό σας.
Το υπόστρωμα μεταφέρει την εξωτερική κεφαλίδα. Το άκρο της σήραγγας στέλνει κρυπτογραφημένα πακέτα σε μια διεύθυνση peer, και το δίκτυο μεταξύ των δύο διευθύνσεων τα προωθεί χρησιμοποιώντας όποιες διαδρομές εγκατέστησαν οι φορείς του. Τίποτα στη συνεδρία BGP δεν αλλάζει αυτή την απόφαση, εκτός αν ο ίδιος πάροχος εκθέτει υποστηριζόμενη υπηρεσία που το κάνει.
Τι μεταφέρει πραγματικά η συνεδρία
Ο ομιλητής BGP ανοίγει σύνδεση TCP στη θύρα 179 του peer του, χρησιμοποιώντας τις μορφές μηνυμάτων και τα χαρακτηριστικά διαδρομής που ορίζονται στο RFC 4271. Όταν η διεύθυνση peer βρίσκεται μέσα στη σήραγγα, η σήραγγα πρέπει να είναι ενεργή και η διεύθυνση προσβάσιμη πριν η συνεδρία μπορέσει καν να ξεκινήσει. Μια ολοκληρωμένη ανταλλαγή IKE δεν είναι γείτονας BGP. Οι υλοποιήσεις IPsec που βασίζονται σε διαδρομές περνούν κίνηση μόνο όταν υπάρχει αντίστοιχη διαδρομή σήραγγας, και αυτή που βασίζεται σε πολιτική χρειάζεται τη διεύθυνση peer μέσα στον προστατευμένο επιλογέα. Αν το κάνετε αντίστροφα, παράγεται η κλασική κατάσταση όπου η σήραγγα είναι πράσινη και η συνεδρία κάθεται αδρανής.
Μόλις η συνεδρία είναι ενεργή, η πολιτική αποφασίζει τι τη διασχίζει. Λίστες προθεμάτων, φίλτρα AS-path, ένα ανώτατο όριο μέγιστου αριθμού προθεμάτων και μια ρητή απόφαση για προεπιλεγμένες διαδρομές είναι το ελάχιστο, και ισχύουν και στις δύο κατευθύνσεις. Ένας peer που δέχεται ό,τι λαμβάνει μπορεί να σας δώσει μια προεπιλεγμένη διαδρομή που αντικαθιστά σιωπηλά την τοπική πρόσβαση στο διαδίκτυο. Οι δύο κατευθύνσεις χρειάζονται ξεχωριστές λίστες, γιατί αυτό που δέχεστε από έναν peer και αυτό που του διαφημίζετε είναι διαφορετικές αποφάσεις.
router bgp 65010
neighbor 10.255.0.2 remote-as 65020
address-family ipv4 unicast
neighbor 10.255.0.2 prefix-list SITE-B-IN in
neighbor 10.255.0.2 prefix-list SITE-B-OUT out
neighbor 10.255.0.2 maximum-prefix 50
Έπειτα δαγκώνει το MTU. Η ενθυλάκωση μικραίνει το ωφέλιμο φορτίο, οπότε μια μεγάλη ενημέρωση μπορεί να κολλήσει μια συνεδρία που φαίνεται απόλυτα εδραιωμένη: ο peer μένει ενεργός, τα πρόθεμα δεν φτάνουν ποτέ και τίποτα προφανές δεν καταγράφεται στο αρχείο. Περιορίστε το TCP MSS στη διεπαφή της σήραγγας ή ορίστε MTU σήραγγας με χώρο για το πρόσθετο φορτίο, πριν κατηγορήσετε τα φίλτρα.
Πού πηγαίνουν ακόμα τα εξωτερικά πακέτα
Τα κρυπτογραφημένα πακέτα από τη μία τοποθεσία στην άλλη φεύγουν μέσα από ό,τι επιλέγει ο τοπικός δρομολογητής για τη δημόσια διεύθυνση του peer. Αν και οι δύο τοποθεσίες αγοράζουν διέλευση από τον ίδιο πάροχο, διασχίζουν την ίδια μητροπολιτική εγκατάσταση ή η μία πλευρά βρίσκεται πίσω από NAT φορέα, η σήραγγα επιβιώνει από βλάβη παρόχου μόνο κατά τύχη. Το μέτρημα εικονιδίων σήραγγας σε εργαλείο παρακολούθησης δεν σας λέει τίποτα γι' αυτό.
Η επιλογή διαδρομής και η εγκατάσταση προώθησης είναι επίσης ξεχωριστά γεγονότα. Ένα πρόθεμα μπορεί να κάθεται στον πίνακα BGP ως το καλύτερο και να λείπει ακόμα από τον πίνακα προώθησης, επειδή το επόμενο άλμα δεν επιλύεται ή κερδίζει μια πιο συγκεκριμένη διαδρομή. Όταν κάποιος αναφέρει ότι το BGP έμαθε το πρόθεμα αλλά η κίνηση δεν ρέει, η χρήσιμη ερώτηση είναι αν είναι εγκατεστημένο και σε ποιο επόμενο άλμα δείχνει.
Η ειλικρινής απάντηση για μια ανασκόπηση σχεδίασης είναι μια λίστα κοινών εξαρτήσεων: κύκλωμα πρόσβασης, πάροχος ανάντη, εγκατάσταση και κάθε συσκευή με κατάσταση στη διαδρομή επιστροφής. Μια συνεδρία μέσω της σήραγγας δεν μπορεί να αφαιρέσει μια εξάρτηση πάνω στην οποία δεν κάθεται.
Τρεις αποφάσεις που αξίζει να ξεχωρίσετε
Όταν μια σχεδίαση τα μπερδεύει, κάθε συζήτηση διακοπής γυρίζει σε κύκλους. Κρατήστε τα ξεχωριστά στο χαρτί πρώτα και μετά αντιστοιχίστε το καθένα στη συσκευή που πραγματικά το επιβάλλει.
| Decision | Who controls it | Typical failure |
|---|---|---|
| Which prefixes may cross the relationship? | Both sides, through prefix and AS-path policy you configure deliberately | A default route accepted by mistake, or a vague aggregate |
| Which overlay next hop wins? | Local BGP selection plus next-hop resolution on your own routers | Prefix learned, never installed in the forwarding table |
| Where do the encrypted packets travel? | The underlay operators, unless a supported service adds real control | Path diversity that was never there |
Κάθε γραμμή έχει διαφορετικό ιδιοκτήτη. Η πρώτη είναι διαπραγμάτευση, η δεύτερη είναι διαμόρφωση στις δικές σας συσκευές, η τρίτη είναι κυρίως δίκτυο κάποιου άλλου. Ένα αίτημα αλλαγής που ονομάζει τη γραμμή που αγγίζει εγκρίνεται πολύ ευκολότερα από ένα που λέει πρόβλημα BGP.
Τρόποι αστοχίας για τους οποίους αξίζει να σχεδιάσετε
Η αποδοχή της συνοπτικής διαδρομής ενός peer είναι η πιο συνηθισμένη αυτοπροκαλούμενη πληγή. Κάποιος διαφημίζει ένα σύντομο άθροισμα για να απλοποιήσει την ανταλλαγή, η απομακρυσμένη πλευρά το δέχεται και η κίνηση για περιοχές που δεν βρίσκονται πίσω από τη σήραγγα ακολουθεί τη σήραγγα και πεθαίνει. Φιλτράρετε στα ακριβή αναμενόμενα πρόθεμα ή χρησιμοποιήστε λίστα προθεμάτων με τα σωστά όρια, και μην δέχεστε ποτέ γυμνό άθροισμα επειδή κάνει τη συνεδρία να φαίνεται τακτική.
Ο χρόνος απόσυρσης είναι ο δεύτερος. Η ανίχνευση εξαρτάται από χρονομέτρηση συγκράτησης, από BFD αν το ενεργοποιήσατε, από την ανίχνευση νεκρού peer της σήραγγας και από το πόσο γρήγορα σταματά να διαφημίζει η απομακρυσμένη πλευρά. Οι υπάρχουσες συνεδρίες είναι ξεχωριστό πρόβλημα: μια νέα διαδρομή μπορεί να αποκαταστήσει νέες συνδέσεις ενώ οι εδραιωμένες συνεδρίες TCP συνεχίζουν να χρησιμοποιούν παρωχημένες διευθύνσεις, και τα τείχη προστασίας με κατάσταση ή το NAT στη διαδρομή μπορεί να κρατούν εγγραφές που δεν ταιριάζουν πια. Βάλτε την ανάκαμψη της εφαρμογής στα κριτήρια αποδοχής αντί να υποθέτετε ότι μια αλλαγή διαδρομής τα τακτοποιεί όλα.
Η τρίτη είναι η ασυμμετρία της διαδρομής επιστροφής. Η κίνηση μπορεί να φτάνει μέσω της σήραγγας και να επιστρέφει μέσω ζεύξης παρόχου που δεν προοριζόταν ποτέ να τη μεταφέρει, κάτι που εμφανίζεται ως μονόδρομος ήχος, αποτυχημένες χειραψίες ή τείχος προστασίας που απορρίπτει απαντήσεις. Ελέγξτε και τις δύο κατευθύνσεις ξεχωριστά.
Τι να γράψετε στο συμβόλαιο και πώς να το επαληθεύσετε
Ζητήστε γραπτώς τα επιτρεπόμενα πρόθεμα: ποιος έχει την εξουσία να παράγει κάθε περιοχή, αν επιτρέπεται προεπιλεγμένη διαδρομή και ποιες οικογένειες διευθύνσεων υποστηρίζει η υπηρεσία σήραγγας. Το RFC 8212 έκανε τη ρητή πολιτική εισαγωγής και εξαγωγής την προσδοκία για το eBGP σε υλοποιήσεις που το ακολουθούν, οπότε ένας peer που ακόμα βασίζεται σε σιωπηρή συμπεριφορά αποδοχής των πάντων αξίζει ερώτηση.
Έπειτα επαληθεύστε από τη συσκευή και όχι από το διάγραμμα. Χρήσιμες εντολές σε δρομολογητές τύπου FRR:
show bgp summary
show bgp ipv4 unicast 10.10.0.0/16
show bgp ipv4 unicast neighbors 10.255.0.2 advertised-routes
show ip route 10.10.0.0/16
Προσθέστε δύο παρατηρήσεις που δεν μπορεί να σας δώσει ο πίνακας δρομολόγησης. Καταγράψτε στην εξωτερική διεπαφή για να επιβεβαιώσετε ποια διεύθυνση στοχεύουν πραγματικά τα ενθυλακωμένα πακέτα, για παράδειγμα tcpdump -ni eth0 udp port 51820 για σήραγγα WireGuard, ή φίλτρο ESP για IPsec. Έπειτα ιχνηλατήστε προς τη δημόσια διεύθυνση του peer και συγκρίνετε τα άλματα με ίχνος μέσα στη σήραγγα· αν και τα δύο ακολουθούν την ίδια αλυσίδα παρόχου, η πλεονασματικότητά σας ζει στην πολιτική δρομολόγησης και όχι στο δίκτυο.
Τέλος, δοκιμάστε μια απόσυρση σκόπιμα. Κατεβάστε τη σήραγγα σε παράθυρο συντήρησης, καταγράψτε πόσο καιρό παραμένει εγκατεστημένο το πρόθεμα, τι συμβαίνει στις υπάρχουσες συνεδρίες και αν η απομακρυσμένη πλευρά πέφτει σε διαδρομή που θα αποδεχόσασταν πραγματικά. Αυτή η άσκηση λέει περισσότερα για τη σχεδίαση από οποιοδήποτε διάγραμμα.
Μια διαδρομή δεν είναι εξουσιοδότηση. Τα πρόθεμα που συμφωνείτε να ανταλλάσσετε δεν λένε τίποτα για το ποιοι χρήστες μπορούν να φτάσουν σε ποια υπηρεσία πίσω από τη σήραγγα, οπότε κρατήστε τον έλεγχο ταυτότητας, τις επιτρεπόμενες υπηρεσίες και τα τείχη προστασίας των υπολογιστών ακριβώς εκεί που ήταν. Ένας προσβάσιμος peer επίσης δεν είναι άδεια για απεριόριστη διέλευση ή για παραγωγή αυθαίρετων διευθύνσεων, και αυτού του είδους η εξουσία ανήκει στο συμβόλαιο ως εμπορικό ζήτημα, όχι σε μια γραμμή πολιτικής BGP.
- Ονομάστε τα πρόθεμα που κάθε πλευρά μπορεί να παράγει και εκείνα που δεν πρέπει ποτέ να δεχτεί.
- Περιορίστε το MSS στη σήραγγα και επιβεβαιώστε ότι οι μεγάλες ενημερώσεις φτάνουν πραγματικά.
- Απαριθμήστε τις κοινές εξαρτήσεις του υποστρώματος, όχι τον αριθμό των σηράγγων.
- Χρονομετρήστε μια πραγματική απόσυρση και σημειώστε τι κάνει η εφαρμογή.