This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
start [2020/06/15 09:22] alex [AWMN BGP φίλτρο] |
start [2023/03/25 09:01] 10.2.19.13 [MikroTik terminal setup for SupperQuagga] |
||
---|---|---|---|
Line 57: | Line 57: | ||
Ένα από τα βασικά εργαλεία, | Ένα από τα βασικά εργαλεία, | ||
- | ===== broken | + | ===== MikroTik |
**[[https:// | **[[https:// | ||
Line 136: | Line 136: | ||
| | ||
το φίλτρο που έχει προταθεί σαν RFC, το οποίο μπορεί να χρησιμοποιηθεί από όλες τις Ελληνικές ασύρματες κοινότητες που χρησιμοποιούν BGP πάνω στο δίκτυο 10.0.0.0/8 και που καλό είναι να εφαρμόζεται από όλους τους κόμβους κορμού σε κάθε εισερχόμενη και εξερχόμενη peer BGP σύνδεση: | το φίλτρο που έχει προταθεί σαν RFC, το οποίο μπορεί να χρησιμοποιηθεί από όλες τις Ελληνικές ασύρματες κοινότητες που χρησιμοποιούν BGP πάνω στο δίκτυο 10.0.0.0/8 και που καλό είναι να εφαρμόζεται από όλους τους κόμβους κορμού σε κάθε εισερχόμενη και εξερχόμενη peer BGP σύνδεση: | ||
+ | ===== MikroTik v7 C-class BGP aggregate ===== | ||
- | ===== BGP log φίλτρο ===== | + | Στο MikroTik v7, το **C-class** |
- | Σε περίπτωση που δεν θέλουμε να γεμίζουν τα **logs** με **bgp** μυνήματα | + | |
- | /system logging set [find where topics=" | + | Για να ξεπεραστεί το συγκεκριμένο πρόβλημα, |
- | /system logging set [find where topics=" | + | |
- | ===== AWMN BGP φίλτρο | + | |
- | Ακολουθεί το προτεινόμενο φίλτρο καλής χρήσης & προστασίας | + | - Περνάμε ένα στατικό route του **C-class** δικτύου μας σαν |
+ | - Ενεργοποιούμε το **static** στο BGP, Output Redistribute | ||
+ | - Βεβαιώνουμε | ||
- | Ανοίγουμε ένα Terminal δίνουμε τις παρακάτω | + | Παράδειγμα: έστω πως το **C-class** δίκτυό μας είναι το: 10.30.30.0/ |
- | / | + | |
- | | + | εκτελούμε τα παρακάτω |
- | add action=accept chain=awmn prefix=10.0.0.0/ | + | |
- | add action=accept chain=awmn prefix=10.0.0.0/ | + | |
- | add action=discard chain=awmn | + | |
| | ||
- | Στην τοποθεσία Routing-->BGP-->Peers, | + | IP --> |
+ | |||
+ | Υπάρχουν δυο ειδών | ||
- | το παραπάνω φίλτρο καταπολεμά σε ένα | + | Το προτεινόμενο **AWMN** in/out φίλτρο μπαίνει **ΜΟΝΟ** |
- | **για | + | στις μεταξύ |
+ | |||
+ | οι σχετικές ρυθμίσεις από τερματικό/ | ||
+ | |||
+ | / | ||
+ | |||
+ | για | ||
+ | |||
+ | για παράδειγμα, | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | στις παραπάνω εντολές προσθέτουμε αναλόγως τον τύπο σύνδεσης: | ||
+ | |||
+ | role=ebgp | ||
+ | |||
+ | role=ibgp | ||
+ | |||
+ | επιπλέον πρέπει να ορίσουμε (στις παραπάνω εντολές), | ||
+ | |||
+ | remote.address=10.30.30.254/ | ||
+ | local.address=10.30.30.253 | ||
+ | |||
+ | σαν router id προτιμούμε (αν υπάρχει) την lan/ | ||
+ | |||
+ | id=10.30.30.1 | ||
+ | |||
+ | και η τελική εντολή: | ||
+ | |||
+ | / | ||
+ | |||
+ | *** * Προσοχή ** ! στο τελευταίο βήμα θα πρέπει πάντα να βάζουμε το δίκτυό μας με το **/24** στο τέλος, ανεξάρτητα με το πως το έχουμε σπάσει σε μικρότερα | ||
+ | |||
+ | Σε περιπτώσεις προβλημάτων ασυμμετρίας στο εσωτερικό ενός κόμβου, | ||
+ | |||
+ | nexthop-choice=force-self | ||
+ | |||
+ | // | ||
+ | |||
+ | ===== MikroTik terminal setup for SupperQuagga ===== | ||
+ | |||
+ | /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 | ||
+ | |||
+ | για **v7**: | ||
+ | |||
+ | / | ||
+ | |||
+ | / | ||
+ | |||
+ | Παράδειγμα: | ||
+ | |||
+ | **! ! !** --> | ||
+ | ==== MikroTik BGP log filter ==== | ||
+ | Σε περίπτωση που δεν θέλουμε να γεμίζουν τα **logs** με **bgp** μυνήματα από τη SupperQuagga, | ||
+ | |||
+ | /system logging set [find where topics=" | ||
+ | /system logging set [find where topics=" | ||
+ | ===== Quagga setup for SupperQuagga ===== | ||
neighbor 10.2.146.10 remote-as 22128 | neighbor 10.2.146.10 remote-as 22128 | ||
neighbor 10.2.146.10 ebgp-multihop | neighbor 10.2.146.10 ebgp-multihop | ||
Line 168: | Line 232: | ||
ip prefix-list awmn-null seq 20 deny any | ip prefix-list awmn-null seq 20 deny any | ||
| | ||
- | και **για bird:** | + | ===== Bird setup for SupperQuagga ===== |
protocol bgp { | protocol bgp { | ||
export filter awmn; | export filter awmn; | ||
Line 192: | Line 256: | ||
αν καταφέρουμε να χαρτογραφήσουμε πιο ορθά το BGP θα έχουμε και μια πιο έγκυρη εικόνα με τους πραγματικούς κόμβους ραχοκοκαλιάς του AWMN | αν καταφέρουμε να χαρτογραφήσουμε πιο ορθά το BGP θα έχουμε και μια πιο έγκυρη εικόνα με τους πραγματικούς κόμβους ραχοκοκαλιάς του AWMN | ||
- | * Μια πολύ ενδιαφέρουσα και χρήσιμη υπηρεσία, | + | * Μια πολύ ενδιαφέρουσα και χρήσιμη υπηρεσία, |
+ | ===== Μερικές οδηγίες χρήσης του εργαλείου ===== | ||
+ | |||
+ | μέσα από το γραφικό περιβάλλον της [[http:// | ||
+ | |||
+ | αυτό που παρατηρεί κάποιος εξετάζοντας το φαινόμενο των [[http:// | ||
+ | |||
+ | ένα ερώτημα προβληματισμός που εγείρεται είναι γιατί αυτοί οι τερματικοί κόμβοι να στέλνουν BGP στην δρομολόγηση και να μην λειτουργούν απλά με ένα static route. Αυτό εξάλλου είναι ορθά και εκτός προδιαγραφών AWMN (δηλαδή τερματικοί κόμβοι & BGP). | ||
+ | |||
+ | |||
+ | ===== eBGP & iBGP ===== | ||
+ | |||
+ | το **BGP** έχει δυο κατηγορίες: | ||
+ | |||
+ | το **eBGP** σημαίνει external **BGP** και είναι αυτό που συνδέουμε τον κόμβο μας με άλλους απομακρυσμένους κόμβους (τα **BB** λινκ που λέμε). σε αυτού του είδους τις συνδέσεις **και ΜΟΝΟ** περνάμε το προτεινόμενο **awmn BGP** φιλτρο. | ||
+ | |||
+ | το **iBGP** σημαίνει internal **BGP** και είναι αυτό που συνδέουμε δικούς μας εσωτερικούς **router** στον **ίδιο** κόμβο μεταξύ τους | ||
+ | |||
+ | δηλαδή για παράδειγμα, | ||
+ | |||
+ | σε αυτές τις εσωτερικές **iBGP** συνδέσεις ΔΕΝ θα πρέπει να βάζουμε **κανένα** φίλτρο, | ||
+ | |||
+ | επιπλέον, | ||
+ | |||
+ | ==== iBGP problem explained ==== | ||
+ | το πρόβλημα με το **iBGP** έχει να κάνει με το σπάσιμο του τοπικού **C-class** σε μικρότερα υποδίκτυα τα οποία χρησιμοποιούμε για τις **WAN** συνδέσεις (**BB** link). σε αυτές τις περιπτώσεις, | ||
+ | |||
+ | επιπλέον, | ||
+ | |||
+ | το **awmn BGP** φίλτρο το χρησιμοποιούμε **ΜΟΝΟ** σε **eBGP** συνδέσεις, | ||
+ | === iBGP troubleshoot === | ||
+ | ένας απλός & σίγουρος τρόπος για να εντοπίσουμε αν υπάρχει πρόβλημα σωστής **iBGP** επικοινωνίας σε έναν κόμβο που τρέχει πάνω από έναν **BGP** speaker είναι, να κάνουμε **ping** σε ένα **IP** ενός **/30** ή **/29** υποδικτύου που έχουμε κόψει από το δικό μας **C-class** για χρήση **wan/BB**, από τους άλλους τοπικούς **BGP** speakers του τοπικού μας δικτύου (αυτούς που **ΔΕΝ** έχουν σε **WAN** σύνδεση αυτό το **wan/BB** υποδίκτυο αλλά οφείλουν να το γνωρίζουν. αν το **ping** λειτουργεί, | ||
+ | ===== AWMN BGP filter ===== | ||
+ | |||
+ | Ακολουθεί το προτεινόμενο φίλτρο καλής χρήσης & προστασίας του **BGP** για το **AWMN** το οποίο επιβάλεται να έχουμε σε κάθε BGP με ασυρματική ζεύξη/ | ||
+ | |||
+ | Ανοίγουμε ένα Terminal δίνουμε τις παρακάτω εντολές: | ||
+ | /routing filter | ||
+ | add action=discard chain=awmn bgp-as-path-length=!0-28 | ||
+ | add action=accept chain=awmn prefix=10.0.0.0/ | ||
+ | add action=accept chain=awmn prefix=10.0.0.0/ | ||
+ | add action=discard chain=awmn | ||
+ | |||
+ | για **v7**: | ||
+ | |||
+ | / | ||
+ | / | ||
+ | |||
+ | Στην τοποθεσία Routing--> | ||
+ | |||
+ | Το παραπάνω φίλτρο αποκλείει τις μαύρες τρύπες που ακυρώνουν τον δυναμικό, | ||
- | ===== Σωστή χρήση | + | ===== AWMN NAT/ |
** * * * Προσοχή * * * ** στην χρήση του **NAT/ | ** * * * Προσοχή * * * ** στην χρήση του **NAT/ | ||
Line 213: | Line 327: | ||
Αν δεν υπάρχει η δυνατότητα να καθοριστούν συγκεκριμένα τα δίκτυα src=, τότε οι παραπάνω δυο γενικοί κανόνες, | Αν δεν υπάρχει η δυνατότητα να καθοριστούν συγκεκριμένα τα δίκτυα src=, τότε οι παραπάνω δυο γενικοί κανόνες, | ||
- | ===== Μερικές οδηγίες χρήσης του εργαλείου | + | ===== cloud.mikrotik.com DNS Storm ===== |
- | μέσα από το γραφικό περιβάλλον της [[http:// | + | Σε πολλές περιπτώσεις, MikroTik δρομολογητές με default |
- | αυτό που παρατηρεί κάποιος εξετάζοντας το φαινόμενο των [[http:// | + | 12: |
+ | 12: | ||
+ | 12: | ||
+ | 12: | ||
+ | 12: | ||
+ | 12: | ||
+ | |||
+ | Κάποιες προτεινόμενες λύσεις στο συγκεκριμένο πρόβλημα είναι οι ακόλουθες: | ||
+ | |||
+ | - Απενεργοποίηση [[https:// | ||
+ | - Απενεργοποίηση [[https:// | ||
+ | - Απενεργοποίηση [[https:// | ||
+ | - Απενεργοποίηση [[https:// | ||
+ | |||
+ | ===== Mikrotik DNS Setup ===== | ||
+ | |||
+ | /ip dns set allow-remote-requests=yes | ||
+ | |||
+ | Το παρακάτω, στέλνει **ΟΛΕΣ** τις **Internet** διευθύνσεις στους Internet servers & **ΟΛΕΣ** τις **AWMN** διευθύνσεις στον **wind.awmn** server | ||
+ | |||
+ | /ip dns set servers=8.8.8.8, | ||
+ | /ip dns static add forward-to=10.19.143.12 regexp=" | ||
+ | |||
+ | Προσθέτουμε τα ονόματα του κόμβου μας (για | ||
+ | |||
+ | /ip dns static add name=router.soleo.awmn address=10.38.128.5 | ||
+ | |||
+ | για τις wifi (BB link) συνδέσεις, | ||
+ | |||
+ | /ip dns static add name=gw-makofo.soleo.awmn address=10.38.128.249 | ||
+ | /ip dns static add name=gw-soleo.makofo.awmn address=10.38.128.250 | ||
+ | |||
+ | **Προσοχή**, | ||
+ | |||
+ | Αν θέλουμε να δώσουμε **επιπλέον** ονομασίες σε μια **IP**, ο σωστός & προτεινόμενος τρόπος είναι ο πιο κάτω: | ||
+ | |||
+ | /ip dns static add name=alias.soleo.awmn type=CNAME cname=router.soleo.awmn | ||
+ | |||
+ | με τον παραπάνω τρόπο, όταν δίνουμε (για επίλυση σε όνομα) μια **IP**, για παράδειγμα: | ||
+ | |||
+ | όλες οι επιπλέον ονομασίες ορισμένες σαν **CNAME** θα αντιστοιχούν στον **router.soleo.awmn** δηλαδή --> **10.38.128.5** | ||
+ | |||
+ | ===== Asymmetric routing & UDP ===== | ||
+ | |||
+ | η ανάπτυξη του **AWMN** δικτύου είναι βασισμένη σε κόμβους με πολλαπλές συνδέσεις, | ||
+ | |||
+ | There is nothing tinc can do here. Either make sure you don't do | ||
+ | asymetric routing, or change your firewall rules to not do stateful | ||
+ | filtering of TCP connections | ||
+ | |||
+ | ανατρέχοντας στις [[https:// | ||
+ | |||
+ | /ip firewall filter | ||
+ | add chain=input connection-state=invalid action=drop comment=" | ||
+ | add chain=input connection-state=established, | ||
+ | ** | ||
+ | //__Such a rule set must not be applied on routers with asymmetric routing, because asymmetrically routed packets may be considered invalid and dropped__// | ||
+ | |||
+ | οπότε αν θέλουμε το **DNS** που τρέχουμε να λειτουργεί | ||
+ | |||
+ | /ip firewall filter | ||
+ | del chain=input connection-state=established, | ||
+ | del chain=input connection-state=invalid action=drop comment=" | ||
+ | |||
+ | το παρακάτω παράδειγμα δείχνει καθαρά το πρόβλημα: | ||
+ | |||
+ | In BGP | ||
+ | 5 7413 8345 7430 9936 3298 | ||
+ | 5 7413 11087 7430 9936 3298 | ||
+ | |||
+ | ο κόμβος 7413 μπορεί να πάρει udp/dns αποκρίσεις & στην περίπτωση που ο κόμβος 3298 είχε stateful firewall, μια και η εισερχόμενη διαδρομή είναι ίδια με την εξερχόμενη (δηλαδή μέσα από | ||
+ | |||
+ | ο κόμβος 3298 όμως ΔΕΝ μπορεί να λάβει udp/dns αποκρίσεις διότι το stateful firewall του | ||
+ | |||
+ | 3298 9936 7430 8345 7413 | ||
+ | |||
+ | ενώ ο κόμβος 7413 την διαδρομή: | ||
+ | |||
+ | 7413 11087 7430 9936 3298 | ||
+ | |||
+ | ===== BGPmap Tips & Tricks ===== | ||
+ | |||
+ | ==== 3D map @ AWMN ==== | ||
+ | |||
+ | - πάμε στο http:// | ||
+ | - στο δεξί δεξί menu κάτω εκεί που λέει Search Node βάζουμε (παράδειγμα) virtual & πατάμε enter | ||
+ | - θα μας ανοίξει από κάτω (δεξιά) ένα menu, στο κάτω μέρος πατάμε το View node in 3D mode | ||
+ | - κάτω δεξιά πατάμε | ||
+ | - η ρόδα του ποντικιού, | ||
+ | - το αριστερό κουμπί του ποντικιού ελέγχει την οριζόντια πλοήγηση | ||
+ | - το αριστερό | ||
+ | |||
+ | //happy 3D flying// | ||
+ | |||
+ | ==== BGP Trace ==== | ||
+ | |||
+ | - στο δεξί παράθυρο (Control center), | ||
+ | - βάζουμε είτε με όνομα κόμβου είτε με αριθμό AS τους κόμβους που | ||
+ | - πατάμε την ένδειξη Show route | ||
+ | |||
+ | η παραπάνω διαδικασία: | ||
+ | |||
+ | - θα απαριθμήσει τους κόμβους από τους οποίους | ||
+ | - θα αποτυπώσει πάνω στον χάρτη με μπλε χρώμα τις παραπάνω διαδρομές | ||
+ | - στο δεξί μενού με την ένδειξη Possible Route(s), θα εμφανίσει την διαδρομή με όλα τα AS (κόμβους) | ||
+ | |||
+ | πατώντας σε κάθε AS κόμβο, η πλοήγηση μεταφέρεται αυτόματα στον συγκεκριμένο κόμβο για περαιτέρω εξέταση | ||
- | ένα ερώτημα προβληματισμός που εγείρεται είναι γιατί αυτοί οι τερματικοί κόμβοι να στέλνουν BGP στην δρομολόγηση και να μην λειτουργούν απλά με ένα static route. Αυτό εξάλλου είναι ορθά και εκτός προδιαγραφών AWMN (δηλαδή τερματικοί κόμβοι & BGP). |