User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2020/12/27 19:26]
alex [MikroTik terminal setup for SupperQuagga]
start [2023/12/09 14:08] (current)
10.2.19.13 [AWMN BGP filter]
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 =====
 +
 +Στο MikroTik v7, το **C-class** ενός κόμβου **ΔΕΝ** ανακοινώνεται αυτόματα, όταν το έχουμε χωρίσει σε μικρότερα **subnets**. Η σχετική αναφορά της Mikrotik βρίσκεται [[https://help.mikrotik.com/docs/display/ROS/Moving+from+ROSv6+to+v7+with+examples#MovingfromROSv6tov7withexamples-Networks|εδώ]].
 +
 +Για να ξεπεραστεί το συγκεκριμένο πρόβλημα, θα πρέπει να ακολουθηθούν τα παρακάτω βήματα:
 +
 +  - Περνάμε ένα στατικό route του **C-class** δικτύου μας σαν **blackhole**
 +  - Ενεργοποιούμε το **static** στο BGP, Output Redistribute
 +  - Βεβαιώνουμε πως είναι ενεργοποιημένα, στα εξωτερικά **ΜΟΝΟ** λινκ (**eBGP**), σε in/out το προτεινόμενο **AWMN** φίλτρο
 +
 +Παράδειγμα: έστω πως το **C-class** δίκτυό μας είναι το: 10.30.30.0/24
 +
 +εκτελούμε τα παρακάτω βήματα:
 +
 +  Routing --> BGP --> για κάθε νέα BGP σύνδεση ενεργοποιούμε στο Output Redistribute το static
 +  
 +  IP --> Routes --> προσθέτουμε το --> Dst. Address 10.30.30.0/24 & ενεργοποιούμε ΜΟΝΟ το Blackhole
 +  
 +Υπάρχουν δυο ειδών **BGP** συνδέσεις. Η σύνδεση με απομακρυσμένο κόμβο λέγεται **eBGP**. Η σύνδεση με εσωτερικό router στο Local Area Network (LAN) λέγεται **iBGP**.
 +
 +Το προτεινόμενο **AWMN** in/out φίλτρο μπαίνει **ΜΟΝΟ** στις **eBGP** --> στις εξωτερικές δηλαδή συνδέσεις/λινκ του κόμβου. 
 +
 +στις μεταξύ **iBGP** εσωτερικές συνδέσεις (LAN) του κόμβου, δεν περνάμε **ΚΑΝΕΝΑ** φίλτρο. 
 +
 +οι σχετικές ρυθμίσεις από τερματικό/ssh είναι:
 +
 +  /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s numbers=0
 +  
 +για κάθε **BGP** σύνδεση, θα πρέπει να ορίσουμε τα παραπάνω αλλάζοντας το numbers=
 +
 +για παράδειγμα, αν έχουμε ένα router με **πέντε** (**5**) BGP συνδέσεις, θα πρέπει να δώσουμε την εντολή στην παρακάτω μορφή:
 +
 +  /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=1
 +  /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s  numbers=2
 +  /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s  numbers=3
 +  /routing/bgp/connection/set output.redistribute=static,bgp hold-time=30s keepalive-time=10s  numbers=4
 +  
 +στις παραπάνω εντολές προσθέτουμε αναλόγως τον τύπο σύνδεσης:
 +
 +  role=ebgp
 +
 +  role=ibgp
 +
 +επιπλέον πρέπει να ορίσουμε (στις παραπάνω εντολές), για κάθε σύνδεση, τα σχετικά παρακάτω πεδία: 
 +
 +  remote.address=10.30.30.254/32
 +  local.address=10.30.30.253
 +
 +σαν router id προτιμούμε (αν υπάρχει) την lan/ethernet IP του router:  
 +  
 +  id=10.30.30.1
 +    
 +και η τελική εντολή:
 +  
 +    /ip/route/add blackhole dst-address=10.30.30.0/24
 +
 + *** * Προσοχή ** ! στο τελευταίο βήμα θα πρέπει πάντα να βάζουμε το δίκτυό μας με το **/24** στο τέλος, ανεξάρτητα με το πως το έχουμε σπάσει σε μικρότερα
 +
 +Σε περιπτώσεις προβλημάτων ασυμμετρίας στο εσωτερικό ενός κόμβου, βοηθάει στο μεταξύ **iBGP** τοπικών router, να ενεργοποιηθεί η επιλογή:
 +
 +  nexthop-choice=force-self
 +
 +//Ευχαριστώ τον Δημήτρη (**dgi**) για την πρόσβαση σε MikroTik v7 για τις σχετικές δοκιμές//
 +
 ===== 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 instance=awmn 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
      
 +για **v7**:
 +
 +    /routing/bgp/connection add remote.as=22128 as=local_awmn_AS local.address=local_lan_ethernet_ip local.role=ebgp remote.address=10.2.146.10 multihop=yes listen=yes name=spq
 +    
 +    /routing/bgp/connection/print
 +  
 +Παράδειγμα: κόμβος 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
Line 182: Line 256:
 αν καταφέρουμε να χαρτογραφήσουμε πιο ορθά το BGP θα έχουμε και μια πιο έγκυρη εικόνα με τους πραγματικούς κόμβους ραχοκοκαλιάς του AWMN αν καταφέρουμε να χαρτογραφήσουμε πιο ορθά το BGP θα έχουμε και μια πιο έγκυρη εικόνα με τους πραγματικούς κόμβους ραχοκοκαλιάς του AWMN
  
-  * Μια πολύ ενδιαφέρουσα και χρήσιμη υπηρεσία, που βασίζεται στα δεδομένα της Supper Quagga, ζωντανής   απεικόνισης και χαρτογράφησης όλων των Πανελλαδικών Ασύρματων κοινοτήτων που έχουν διασυνδεθεί μεταξύ τους είναι το [[http://bgpmap.awmn.net/|BGPmap]] που με πολύ όρεξη και ώρες εργασίας έφτιαξε συντηρεί ναι αναπτύσσει ο κόμβος #9895 geolos τον οποίο ευχαριστώ θερμά για την υποστήριξη και προσφορά του στην κοινότητά μας+  * Μια πολύ ενδιαφέρουσα και χρήσιμη υπηρεσία, που βασίζεται στα δεδομένα της Supper Quagga, ζωντανής   απεικόνισης και χαρτογράφησης όλων των Πανελλαδικών Ασύρματων κοινοτήτων που έχουν διασυνδεθεί μεταξύ τους είναι το [[http://bgpmap.ozo.com/|BGPmap]] που με πολύ όρεξη και ώρες εργασίας έφτιαξε συντηρεί ναι αναπτύσσει ο κόμβος #9895 geolos τον οποίο ευχαριστώ θερμά για την υποστήριξη και προσφορά του στην κοινότητά μας
 ===== Μερικές οδηγίες χρήσης του εργαλείου ===== ===== Μερικές οδηγίες χρήσης του εργαλείου =====
  
Line 204: Line 278:
 σε αυτές τις εσωτερικές **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** από λανθασμένες ρυθμίσεις ή κακόβουλες ενέργειες.
Line 222: Line 298:
   add action=accept chain=awmn prefix=10.0.0.0/15 prefix-length=32   add action=accept chain=awmn prefix=10.0.0.0/15 prefix-length=32
   add action=discard chain=awmn   add action=discard chain=awmn
 +  
 +για **v7**: 
 +
 +   /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; }"
 +   
 +* **Ενημέρωση 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.
Line 266: Line 354:
 ===== Mikrotik DNS Setup ===== ===== Mikrotik DNS Setup =====
  
-  /ip dns +  /ip dns set allow-remote-requests=yes 
-  set allow-remote-requests=yes+ 
 +Το παρακάτω, στέλνει **ΟΛΕΣ** τις **Internet** διευθύνσεις στους Internet servers & **ΟΛΕΣ** τις **AWMN** διευθύνσεις στον **wind.awmn** server 
 + 
 +  /ip dns set servers=8.8.8.8,8.8.4.4,1.1.1.1 
 +  /ip dns static add forward-to=10.19.143.12 regexp=".*\\.awmn\$" 
 + 
 +Προσθέτουμε τα ονόματα του κόμβου μας (για παράδειγμα, κόμβος soleo 10.38.128.0/24) ως εξής:
      
-  /ip dns static +  /ip dns static add name=router.soleo.awmn address=10.38.128.5 
-  add address=10.38.128.5 name=ixp4xx.soleo.awmn+   
-  add address=10.38.128.249 name=gw-makofo.soleo.awmn +για τις wifi (BB link) συνδέσεις, ακολουθούμε το παρακάτω πρότυπο (**gw-**όνομα-απέναντι-κόμβου)): 
-  add address=10.38.128.250 name=gw-soleo.makofo.awmn+   
 +  /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** address σε όνομα ( name= ) ώστε να γίνεται σωστά η επίλυση της **IP** σε όνομα προκειμένου να **ΜΗΝ** δημιουργείται πρόβλημα στις περισσότερες εφαρμογές που πλέον το απαιτούν για λόγους ασφαλείας 
 + 
 +Αν θέλουμε να δώσουμε **επιπλέον** ονομασίες σε μια **IP**, ο σωστός & προτεινόμενος τρόπος είναι ο πιο κάτω: 
 + 
 +  /ip dns static add name=alias.soleo.awmn type=CNAME cname=router.soleo.awmn 
 +   
 +με τον παραπάνω τρόπο, όταν δίνουμε (για επίλυση σε όνομα) μια **IP**, για παράδειγμα: **10.38.128.5**, η απάντηση θα είναι **ΠΑΝΤΑ** μια & μοναδική (όπως απαιτείται κατά τα πρότυπα) --> **router.soleo.awmn** 
 + 
 +όλες οι επιπλέον ονομασίες ορισμένες σαν **CNAME** θα αντιστοιχούν στον **router.soleo.awmn** δηλαδή --> **10.38.128.5**
      
 ===== Asymmetric routing & UDP ===== ===== Asymmetric routing & UDP =====
Line 339: Line 445:
  
 πατώντας σε κάθε AS κόμβο, η πλοήγηση μεταφέρεται αυτόματα στον συγκεκριμένο κόμβο για περαιτέρω εξέταση πατώντας σε κάθε AS κόμβο, η πλοήγηση μεταφέρεται αυτόματα στον συγκεκριμένο κόμβο για περαιτέρω εξέταση
 +
start.1609097203.txt.gz · Last modified: 2020/12/27 19:26 by alex