Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
start [2022/05/26 13:00] alex [MikroTik v7 C-class BGP aggregate] |
start [2023/12/09 14:08] (current) 10.2.19.13 [AWMN BGP filter] |
Υπάρχουν δυο ειδών **BGP** συνδέσεις. Η σύνδεση με απομακρυσμένο κόμβο λέγεται **eBGP**. Η σύνδεση με εσωτερικό router στο Local Area Network (LAN) λέγεται **iBGP**. | Υπάρχουν δυο ειδών **BGP** συνδέσεις. Η σύνδεση με απομακρυσμένο κόμβο λέγεται **eBGP**. Η σύνδεση με εσωτερικό router στο Local Area Network (LAN) λέγεται **iBGP**. |
| |
Αναλόγως, οι αντίστοιχες εντολές από τερματικό/ssh είναι: | Το προτεινόμενο **AWMN** in/out φίλτρο μπαίνει **ΜΟΝΟ** στις **eBGP** --> στις εξωτερικές δηλαδή συνδέσεις/λινκ του κόμβου. |
| |
| στις μεταξύ **iBGP** εσωτερικές συνδέσεις (LAN) του κόμβου, δεν περνάμε **ΚΑΝΕΝΑ** φίλτρο. |
| |
| οι σχετικές ρυθμίσεις από τερματικό/ssh είναι: |
| |
/routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s numbers=0 | /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s numbers=0 |
/routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s numbers=4 | /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s numbers=4 |
| |
στις παραπάνω εντολές προσθέτουμε τον τύπο σύνδεσης: | στις παραπάνω εντολές προσθέτουμε αναλόγως τον τύπο σύνδεσης: |
| |
role=ebgp | role=ebgp |
*** * Προσοχή ** ! στο τελευταίο βήμα θα πρέπει πάντα να βάζουμε το δίκτυό μας με το **/24** στο τέλος, ανεξάρτητα με το πως το έχουμε σπάσει σε μικρότερα | *** * Προσοχή ** ! στο τελευταίο βήμα θα πρέπει πάντα να βάζουμε το δίκτυό μας με το **/24** στο τέλος, ανεξάρτητα με το πως το έχουμε σπάσει σε μικρότερα |
| |
Τέλος, το **AWMN** in/out φίλτρο μπαίνει **ΜΟΝΟ** στο BGP με τις εξωτερικές συνδέσεις/λινκ (**eBGP**). στις εσωτερικές συνδέσεις (LAN) του κόμβου (**iBGP**) στις **BGP** συνδέσεις μεταξύ τους δεν περνάμε ΚΑΝΕΝΑ φίλτρο. | Σε περιπτώσεις προβλημάτων ασυμμετρίας στο εσωτερικό ενός κόμβου, βοηθάει στο μεταξύ **iBGP** τοπικών router, να ενεργοποιηθεί η επιλογή: |
| |
Πολλές φορές, στο **iBGP** μεταξύ τοπικών router, βοηθάει να ενεργοποιηθεί η επιλογή: | |
| |
nexthop-choice=force-self | nexthop-choice=force-self |
===== MikroTik terminal setup for SupperQuagga ===== | ===== MikroTik terminal setup for SupperQuagga ===== |
| |
/routing bgp peer add remote-as=22128 remote-address=10.2.146.10 multihop=yes passive=yes name=spq | /routing bgp peer add remote-as=22128 remote-address=10.2.146.10 multihop=yes passive=yes name=spq hold-time=180s keepalive-time=60s |
| |
/routing bgp peer print | /routing bgp peer print |
| |
Παράδειγμα: κόμβος 3298, δίκτυο 10.2.19.0/24. as=3298 local.address=10.2.19.65 | Παράδειγμα: κόμβος 3298, δίκτυο 10.2.19.0/24. as=3298 local.address=10.2.19.65 |
| |
| **! ! !** --> σαν **router id** προτιμούμε (αν υπάρχει) την lan/ethernet IP του router |
==== MikroTik BGP log filter ==== | ==== MikroTik BGP log filter ==== |
Σε περίπτωση που δεν θέλουμε να γεμίζουν τα **logs** με **bgp** μυνήματα από τη SupperQuagga, οι παρακάτω εντολές φιλτράρουν τα συγκεκριμένα μυνήματα από τα log | Σε περίπτωση που δεν θέλουμε να γεμίζουν τα **logs** με **bgp** μυνήματα από τη SupperQuagga, οι παρακάτω εντολές φιλτράρουν τα συγκεκριμένα μυνήματα από τα log |
σε αυτές τις εσωτερικές **iBGP** συνδέσεις ΔΕΝ θα πρέπει να βάζουμε **κανένα** φίλτρο, ούτε το **awmn BGP** φίλτρο | σε αυτές τις εσωτερικές **iBGP** συνδέσεις ΔΕΝ θα πρέπει να βάζουμε **κανένα** φίλτρο, ούτε το **awmn BGP** φίλτρο |
| |
επιπλέον, καλό είναι να ενεργοποιούμε στο **BGP** την επιλογή **Redistribute connected** | επιπλέον, καλό είναι να ενεργοποιούμε στο **BGP** την επιλογή **Redistribute connected** & **client-to-client-reflection** |
| |
==== iBGP problem explained ==== | ==== iBGP problem explained ==== |
το πρόβλημα με το **iBGP** έχει να κάνει με το σπάσιμο του τοπικού **C-class** σε μικρότερα υποδίκτυα τα οποία χρησιμοποιούμε για τις **WAN** συνδέσεις (**BB** link). σε αυτές τις περιπτώσεις, όταν έχουμε πάνω από εναν κεντρικό **BGP** speaker στον κόμβο (**LAN**), συνήθως οι άλλοι **BGP** routers αγνοούν την ύπαρξη του τοπικού **wan/BB** υποδικτύου. παλιά, αυτό αντιμετωπίζονταν με την παράλληλη χρήση ενός **IGP** routing όπως το **OSPF**, **RIP** ή & **static** routes. πλέον, οι σύγχρονες **BGP** εκδόσεις, έχουν την δυνατότητα να ανακοινώνουν αυτά τα εσωτερικά υποδίκτυα, αρκεί να μην φιλτράρεται η συγκεκριμένη πληροφορία. οπότε σε αυτές τις περιπτώσεις, δεν θα πρέπει να εισάγουμε **κανένα** φίλτρο μεταξύ των τοπικών **BGP** συνδέσεων στο **LAN** ενός κόμβου. | το πρόβλημα με το **iBGP** έχει να κάνει με το σπάσιμο του τοπικού **C-class** σε μικρότερα υποδίκτυα τα οποία χρησιμοποιούμε για τις **WAN** συνδέσεις (**BB** link). σε αυτές τις περιπτώσεις, όταν έχουμε πάνω από εναν κεντρικό **BGP** speaker στον κόμβο (**LAN**), συνήθως οι άλλοι **BGP** routers αγνοούν την ύπαρξη του τοπικού **wan/BB** υποδικτύου. παλιά, αυτό αντιμετωπίζονταν με την παράλληλη χρήση ενός **IGP** routing όπως το **OSPF**, **RIP** ή & **static** routes. πλέον, οι σύγχρονες **BGP** εκδόσεις, έχουν την δυνατότητα να ανακοινώνουν αυτά τα εσωτερικά υποδίκτυα, αρκεί να μην φιλτράρεται η συγκεκριμένη πληροφορία. οπότε σε αυτές τις περιπτώσεις, δεν θα πρέπει να εισάγουμε **κανένα** φίλτρο μεταξύ των τοπικών **BGP** συνδέσεων στο **LAN** ενός κόμβου. |
| |
| επιπλέον, στους **router** πάνω στο **LAN** μεταξύ τους, ορίζουμε το **next-hop** σαν **force-self** & ΟΧΙ **default** |
| |
το **awmn BGP** φίλτρο το χρησιμοποιούμε **ΜΟΝΟ** σε **eBGP** συνδέσεις, αυτές με άλλους απομακρυσμένους κόμβους, ώστε να μην ανακοινώνουμε στο γενικό **BGP** υποδίκτυα μικρότερα του **C-class**, και γενικά να θωρακίζουμε/φιλτράρουμε την πληροφορία του **BGP** από λανθασμένες ρυθμίσεις ή κακόβουλες ενέργειες. | το **awmn BGP** φίλτρο το χρησιμοποιούμε **ΜΟΝΟ** σε **eBGP** συνδέσεις, αυτές με άλλους απομακρυσμένους κόμβους, ώστε να μην ανακοινώνουμε στο γενικό **BGP** υποδίκτυα μικρότερα του **C-class**, και γενικά να θωρακίζουμε/φιλτράρουμε την πληροφορία του **BGP** από λανθασμένες ρυθμίσεις ή κακόβουλες ενέργειες. |
/routing filter rule add chain=awmn rule="if (dst in 10.0.0.0/8 && dst-len==24 && bgp-path-len<27) { accept; }" | /routing filter rule add chain=awmn rule="if (dst in 10.0.0.0/8 && dst-len==24 && bgp-path-len<27) { accept; }" |
/routing filter rule add chain=awmn rule="if (dst in 10.0.0.0/15 && dst-len==32 && bgp-path-len<27) { accept; }" | /routing filter rule add chain=awmn rule="if (dst in 10.0.0.0/15 && dst-len==32 && bgp-path-len<27) { accept; }" |
| |
| * **Ενημέρωση 9 Δεκέμβρη 2023** * |
| |
| * * * {!} * * * Οι παραπάνω αρχικοί κανόνες δεν δείχνουν να δουλεύουν για την **v7** . Οι παρακάτω **ενημερωμένοι** κανόνες δοκιμάστηκαν και λειτουργούν. θα πρέπει να γίνει ένας διαχωρισμός σε δυο κανόνες, **awmn-in** & **awmn-out**. Επιπλέον αφαιρούμε το φίλτρο **anycast**, μια υπηρεσία που ήταν πειραματική στις μέρες του 2005-2009 ενώ ποτέ δεν δούλεψε ικανοποιητικά. Σήμερα, εν έτει 2023, η αποδοχή της στα φίλτρα αποτελεί κενό ασφάλειας, οπότε και αφαιρείται. |
| |
| /routing filter rule add chain=awmn-in rule="if (dst in 10.0.0.0/8 && dst-len==24 && bgp-path-len<27) { accept; }" |
| /routing filter rule add chain=awmn-out rule="if (dst in 10.0.0.0/8 && dst-len==24) { accept; }" |
| |
Στην τοποθεσία Routing-->BGP-->Peers, σε κάθε **ασυρματική** σύνδεση, **όχι** με τους τοπικούς μας άλλους router, επιλέγουμε για φίλτρο IN και OUT την επιλογή awmn. | Στην τοποθεσία Routing-->BGP-->Peers, σε κάθε **ασυρματική** σύνδεση, **όχι** με τους τοπικούς μας άλλους router, επιλέγουμε για φίλτρο IN και OUT την επιλογή awmn. |