English · Ελληνικά
Το RouterOS 7 ξανάχτισε ολόκληρη τη μηχανή routing, και το config OSPF δεν μοιάζει καθόλου με τους οδηγούς ROS6 που ακόμα βουλώνουν τα αποτελέσματα αναζήτησης. Αυτό το post διδάσκει το νέο μοντέλο — instance, area, interface-template — σε τοπολογία τριών routers με μια ανατροπή: ο ένας από τους routers είναι Cisco. Γιατί το OSPF είναι πρότυπο, και η απόδειξη είναι να βλέπεις ένα hEX και ένα 2911 να γίνονται neighbors.
Τα static routes σταματούν να κλιμακώνουν τη στιγμή που υπάρχουν δύο paths — το έχεις νιώσει αν έχτισες τις redundant τοπολογίες αυτής της σειράς. Το OSPF είναι η πρότυπη απάντηση: κάθε router περιγράφει τα links του, όλοι κάνουν flood τις περιγραφές, και κάθε router υπολογίζει μόνο του τα συντομότερα paths. Ένα link πεθαίνει → νέος υπολογισμός → η κίνηση κάνει reroute, χωρίς κανέναν άνθρωπο να εμπλέκεται. Το lab multi-area της Cisco καλύπτει τη θεωρία του πρωτοκόλλου σε βάθος· αυτό το post αφορά την υλοποίηση του RouterOS 7 — και το να αποδείξουμε ότι οι δύο vendors συνεργάζονται, γιατί τα περισσότερα πραγματικά ελληνικά δίκτυα SMB είναι ακριβώς αυτό το μείγμα.
Το μοντέλο του ROS7 παίρνει τρία αντικείμενα εκεί που η Cisco παίρνει ένα: ένα instance (η διεργασία — εκεί ζει το router-id), μια area (δεμένη στο instance), και interface-templates (ποια interfaces/networks μπαίνουν σε ποια area, με ρυθμίσεις ανά interface όπως cost και passive). Είναι πιο εκτενές από το network … area 0 — και πιο ρητό, κάτι που θα εκτιμήσεις την πρώτη φορά που θα διαβάσεις το config κάποιου άλλου.
01
Ένα τρίγωνο από /30, ένα LAN ανά router, router-ID σε στιλ loopback. Ίδια πειθαρχία με κάθε lab αυτής της σειράς: πρώτα ο πίνακας, μετά το πληκτρολόγιο.
| Στοιχειο | Τιμη |
|---|---|
| MT-1 ↔ MT-2 | 10.0.12.0/30 (MT-1 .1, MT-2 .2) — ether1 και στις δύο πλευρές |
| MT-1 ↔ CSC-1 | 10.0.13.0/30 (MT-1 .1, CSC-1 .2) — ether2 / Gi0/0 |
| MT-2 ↔ CSC-1 | 10.0.23.0/30 (MT-2 .1, CSC-1 .2) — ether2 / Gi0/1 |
| LAN | MT-1: 10.1.0.0/24 · MT-2: 10.2.0.0/24 · CSC-1: 10.3.0.0/24 |
| Router-ID | 1.1.1.1 / 2.2.2.2 / 3.3.3.3 — ρύθμισέ τα ρητά, ποτέ auto-derived |
| WAN | Μόνο MT-1 — static default προς τον ISP, redistributed στο OSPF |
Και οι δύο vendors θα διαλέξουν αυτόματα router-id από μια διεύθυνση interface αν δεν ορίσεις ένα — και εκείνο το ID αλλάζει σιωπηλά όταν αλλάζει το addressing, κάτι που κάνει reset τις adjacencies και μπερδεύει τη βάση LSA στο διάβασμα («ποιος είναι ο 10.0.23.1;»). Ένα ρητό, αξέχαστο ID ανά box (1.1.1.1, 2.2.2.2…) κοστίζει μία γραμμή και κάνει κάθε print/show για την υπόλοιπη ζωή του δικτύου ευανάγνωστο. Στο MikroTik ζει στο instance· στη Cisco, κάτω από το router ospf.
02
Τρία αντικείμενα, με σειρά. Το interface-template είναι εκεί που το ROS7 διαφέρει περισσότερο και από το ROS6 και από τη Cisco — ταιριάζει interfaces Ή networks, και κουβαλά τις ρυθμίσεις ανά link.
# 1. Το instance — η ίδια η διεργασία routing [admin@MT-1] > /routing/ospf/instance add name=default version=2 router-id=1.1.1.1 # 2. Η περιοχή backbone, δεμένη στο instance [admin@MT-1] > /routing/ospf/area add name=backbone area-id=0.0.0.0 instance=default # 3. Interface templates — τα /30 μιλάνε OSPF, το LAN ανακοινώνεται αλλά passive [admin@MT-1] > /routing/ospf/interface-template add area=backbone interfaces=ether1 networks=10.0.12.0/30 type=ptp [admin@MT-1] > /routing/ospf/interface-template add area=backbone interfaces=ether2 networks=10.0.13.0/30 type=ptp [admin@MT-1] > /routing/ospf/interface-template add area=backbone interfaces=bridge-lan networks=10.1.0.0/24 passive # Η adjacency με το MT-2 ανεβαίνει σε δευτερόλεπτα: [admin@MT-1] > /routing/ospf/neighbor print 0 instance=default area=backbone address=10.0.12.2 router-id=2.2.2.2 state=Full state-changes=2 # Και το LAN του MT-2 εμφανίζεται με κωδικό routing-table «Do» (dynamic ospf): [admin@MT-1] > /ip/route print where dst-address=10.2.0.0/24 DST-ADDRESS GATEWAY DISTANCE Do 10.2.0.0/24 10.0.12.2 110
Σε ένα /30 ανάμεσα σε δύο routers, βάλε type=ptp (και ip ospf network point-to-point στην πλευρά Cisco). Ο default τύπος broadcast δουλεύει, αλλά τρέχει μια άσκοπη εκλογή DR σε ένα link δύο routers, προσθέτει ένα LSA type-2, και — η παγίδα interop — ο τύπος network πρέπει να ταιριάζει και στις δύο άκρες αλλιώς η adjacency κολλάει σε ExStart/Exchange. Οι τύποι network που δεν ταιριάζουν είναι η αιτία #1 για το «το MikroTik και η Cisco βλέπονται αλλά ποτέ δεν φτάνουν Full».
03
Στάνταρ IOS OSPF από το part 7 της σειράς Cisco. Η μόνη απαίτηση είναι συμφωνία: area, χρονόμετρα hello/dead, τύπος network, MTU. Μετά ένα 2911 και ένα RB5009 σφίγγουν χέρια σαν να μην είναι τίποτα.
CSC-1(config)# router ospf 1 CSC-1(config-router)# router-id 3.3.3.3 CSC-1(config-router)# passive-interface GigabitEthernet0/2 ← το LAN CSC-1(config-router)# network 10.0.13.0 0.0.0.3 area 0 CSC-1(config-router)# network 10.0.23.0 0.0.0.3 area 0 CSC-1(config-router)# network 10.3.0.0 0.0.0.255 area 0 CSC-1(config)# interface range GigabitEthernet0/0 - 1 CSC-1(config-if-range)# ip ospf network point-to-point # Η Cisco βλέπει δύο neighbors MikroTik… CSC-1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 1.1.1.1 0 FULL/ - 00:00:36 10.0.13.1 GigabitEthernet0/0 2.2.2.2 0 FULL/ - 00:00:34 10.0.23.1 GigabitEthernet0/1 # …και το MikroTik κάνει route προς το LAN της Cisco, μαθευμένο μέσω OSPF: [admin@MT-2] > /ip/route print where dst-address=10.3.0.0/24 Do 10.3.0.0/24 10.0.23.2 110 ← σύνορο vendor, αόρατο στο πρωτόκολλο
Εκείνο το FULL/ - είναι όλο το επιχείρημα για routing βασισμένο σε πρότυπα: το πρωτόκολλο δεν ξέρει ούτε νοιάζεται ότι η μία άκρη κοστίζει €1.200 και τρέχει IOS ενώ η άλλη κοστίζει €60 και τρέχει RouterOS. Ίδια πακέτα, ίδια state machine. Όταν το δίκτυο ενός πελάτη μεγαλώνει ένα site τη φορά με όποιο hardware είχε νόημα εκείνη τη χρονιά, το OSPF είναι αυτό που κάνει το μπάλωμα να συμπεριφέρεται σαν σύστημα.
04
Το MT-1 κατέχει το internet, άρα το MT-1 κάνει originate το default — υπό όρους. Μετά ευθυγράμμισε τα μαθηματικά cost ανάμεσα σε vendors και κόψε ένα link για να δεις το τρίγωνο να δικαιολογεί την ύπαρξή του.
# Το δικό του default του MT-1 είναι ένα static προς τον ISP (με probe check-gateway, # όπως στο post Starlink failover). Το OSPF το διαφημίζει μόνο όσο υπάρχει: [admin@MT-1] > /routing/ospf/instance set default originate-default=if-installed # Το MT-2 και το CSC-1 τώρα έχουν και τα δύο ένα default μέσω του τριγώνου: CSC-1# show ip route | include 0.0.0.0/0 O*E2 0.0.0.0/0 [110/1] via 10.0.13.1, 00:00:22, GigabitEthernet0/0 # Ευθυγράμμιση cost: τα interface-templates του RouterOS κάνουν default σε cost=1 ανεξάρτητα # από την ταχύτητα — βάλε costs ρητά ώστε και οι δύο vendors να συμφωνούν τι σημαίνει «μακριά»: [admin@MT-1] > /routing/ospf/interface-template set [find interfaces=ether1] cost=10 # …και στη Cisco: interface Gi0/0 → ip ospf cost 10. Ίδιος αριθμός, ίδιο link.
Ξεκίνα συνεχές ping από ένα PC στο LAN του MT-2 προς ένα στο LAN του CSC-1 — σε steady state, διασχίζει το άμεσο link MT-2↔CSC-1. Τώρα απενεργοποίησε εκείνο το link (/interface/ethernet disable ether2 στο MT-2). Δύο-τρία pings πέφτουν, μετά η κίνηση ξαναεμφανίζεται — μέσω MT-1, τον μακρύ δρόμο γύρω από το τρίγωνο. Το /routing/ospf/neighbor print δείχνει τον χαμένο neighbor· το traceroute δείχνει το επιπλέον hop. Ξανα-ενεργοποίησε και επιστρέφει. Αυτό είναι ένα δίκτυο μεικτού vendor που επουλώνεται μόνο του σε δευτερόλεπτα — με το originate-default=if-installed να διασφαλίζει ότι ακόμα και το path προς το internet κάνει failover τίμια αν πεθάνει το WAN του MT-1.
Αυτό το τρίγωνο συνθέτει απευθείας με παλιότερα posts: τρέξε OSPF πάνω από tunnels WireGuard ή GRE (part 9, Cisco lab 26) και απομακρυσμένα sites μπαίνουν στην ίδια area 0· τρόφοδότησε το default του MT-1 από το setup Starlink failover και το failover WAN διαδίδεται αυτόματα σε κάθε router. Το dynamic routing είναι το επίπεδο που κάνει όλα τα άλλα κόλπα redundancy να συνθέτουν αντί να τσακώνονται.
05
Αν έμαθες OSPF σε RouterOS 6 — ή αναβαθμίζεις έναν router που το τρέχει — το syntax δεν είναι το μόνο που άλλαξε.
| Συνηθεια ROS6 | Πραγματικοτητα ROS7 |
|---|---|
| /routing ospf network add | Έφυγε. Τα networks ζουν τώρα σε interface-templates. |
| router-id στο default /routing ospf instance | Ακόμα instance, αλλά πρέπει να δημιουργήσεις το instance — κανένα σιωπηρό default. |
| redistribute-static=as-type-1 | redistribute=static στο instance (+ φίλτρα out-select αν χρειάζεσαι έλεγχο ανά route). |
| passive στην εγγραφή interface | flag passive στο interface-template. |
| φίλτρα distribute-in | Ξαναγραμμένα routing filters — νέο syntax κανόνων (if/then), έλεγξε κάθε config filter με το χέρι. |
| Αναβάθμιση επί τόπου και ελπίδα | Το ROS7 προσπαθεί να μετατρέψει το config OSPF στην αναβάθμιση· πολύπλοκα configs βγαίνουν σπασμένα. Export, αναβάθμιση, επαλήθευση γραμμή προς γραμμή — με ένα backup εκτός box πρώτα. |
| Επαληθευση (RouterOS) | Αντιστοιχο (Cisco) |
|---|---|
| /routing/ospf/neighbor print | show ip ospf neighbor |
| /routing/ospf/interface print | show ip ospf interface brief |
| /routing/ospf/lsa print | show ip ospf database |
| /ip/route print where routing-table=main | show ip route ospf |
| /routing/stats/step print | (στατιστικά SPF run — debug ip ospf spf, περίπου) |
Βασικα Συμπερασματα
Σχεδιάζω routed δίκτυα μεικτού vendor όπου το OSPF επουλώνεται γύρω από μια αστοχία μόνο του, το failover WAN διαδίδεται σε κάθε router που χρειάζεται να ξέρει, και η τεκμηρίωση πραγματικά κατονομάζει σε τι χρησιμεύει κάθε area και link.
Κλεισε μια Discovery Call →