English · Ελληνικά
Ένας router ξέρει μόνο τα δίκτυα πάνω στα δικά του interfaces — όλα τα υπόλοιπα πρέπει να διδαχθούν ή να μαθευτούν. Διάβασε τον πίνακα δρομολόγησης σαν ντόπιος, γράψε static και default routes, χτίσε failover με floating statics, μετά άφησε το single-area OSPF να συντηρεί τον χάρτη για σένα.
Από το κουτί, ένας router ξέρει ακριβώς τα subnet που είναι ρυθμισμένα στα δικά του interfaces — τις connected διαδρομές — και τίποτα άλλο. Κάθε άλλος προορισμός χρειάζεται διαδρομή από μία από δύο πηγές: εσένα (static routes — ακριβείς, σιωπηλές, και χαζές: δεν παρατηρούν ποτέ μια νεκρή διαδρομή) ή ένα πρωτόκολλο δρομολόγησης (OSPF — οι router ανταλλάσσουν τοπολογία και επανυπολογίζουν γύρω από αστοχίες μόνοι τους).
Τα μικρά sites ζουν ευτυχισμένα με statics. Τη στιγμή που έχεις τρεις router ή μια εφεδρική διαδρομή, δώσε τον χάρτη στο OSPF και κράτα statics για τις άκρες — το default route προς τον ISP, και ένα floating static ως το failover της τελευταίας ελπίδας. Αυτό το post χτίζει ακριβώς αυτή την πρόοδο, και διδάσκει τη μία δεξιότητα από κάτω από όλα: να διαβάζεις το show ip route και να ξέρεις γιατί είναι εκεί κάθε γραμμή.
01
Ό,τι θα κάνει ποτέ ο router με ένα πακέτο είναι γραμμένο στο show ip route. Μάθε τους κωδικούς, το ζεύγος [AD/metric], και το longest-prefix-wins, και ο πίνακας σταματά να είναι θόρυβος.
R1# show ip route Codes: L - local, C - connected, S - static, O - OSPF, * - candidate default Gateway of last resort is 203.0.113.1 to network 0.0.0.0 S* 0.0.0.0/0 [1/0] via 203.0.113.1 ↑ το default route — «ό,τι δεν ξέρω πηγαίνει στον ISP» C 192.168.10.0/24 is directly connected, GigabitEthernet0/1 ↑ connected — αυτό το subnet ζει στο δικό μου interface L 192.168.10.1/32 is directly connected, GigabitEthernet0/1 ↑ local — η δική μου διεύθυνση σε αυτό το interface (πάντα /32) S 10.20.0.0/16 [1/0] via 192.168.90.2 ↑ static — αυτό το έγραψε άνθρωπος· [AD 1 / metric 0] O 10.30.1.0/24 [110/2] via 192.168.90.2, 00:41:07, GigabitEthernet0/2 ↑ OSPF — μαθημένο αυτόματα· [AD 110 / cost 2], ηλικία, interface εξόδου
Το ζεύγος σε αγκύλες είναι το κλειδί: [administrative distance / metric]. Το AD κατατάσσει την πηγή της διαδρομής (connected 0, static 1, OSPF 110 — χαμηλότερο σημαίνει πιο αξιόπιστο). Το metric κατατάσσει διαδρομές μέσα σε ένα πρωτόκολλο. Και πριν από τα δύο αυτά, το μεγαλύτερο prefix κερδίζει πάντα: ένα πακέτο προς 10.30.1.7 παίρνει το /24 route παραπάνω, ποτέ το /16, ποτέ το default. Η επιλογή διαδρομής είναι αυτές οι τρεις ερωτήσεις, με αυτή τη σειρά — ακριβώς όπως στο διάγραμμα.
02
Ένα static route είναι μία γραμμή: προορισμός, μάσκα, και πού να το στείλεις. Το πιο σημαντικό static σε κάθε δίκτυο είναι το default route — η τελευταία ελπίδα του πακέτου.
# «Για να φτάσω το branch LAN 10.20.0.0/16, δώσε τα πακέτα στο 192.168.90.2» R1(config)# ip route 10.20.0.0 255.255.0.0 192.168.90.2 # ΣΗΜΕΙΩΣΗ: πραγματική subnet mask αυτή τη φορά — τα statics χρησιμοποιούν masks, τα ACL wildcards. # Το default route — το 0.0.0.0/0 ταιριάζει με ό,τι δεν ξέρεις καλύτερα R1(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1 # Ένα host route (/32) — κάρφωσε έναν προορισμό σε συγκεκριμένη διαδρομή R1(config)# ip route 10.99.0.5 255.255.255.255 192.168.90.6 # Αφαίρεσε οποιοδήποτε με "no" + ακριβώς την ίδια γραμμή R1(config)# no ip route 10.99.0.5 255.255.255.255 192.168.90.6
Το IOS σε αφήνει να γράψεις ip route 10.20.0.0 255.255.0.0 GigabitEthernet0/2 — χωρίς next-hop, μόνο ένα interface εξόδου. Σε point-to-point links αυτό είναι εντάξει· σε Ethernet είναι παγίδα. Ο router τότε πρέπει να κάνει ARP για κάθε host προορισμού μέσα από αυτό το interface, φουσκώνοντας τον πίνακα ARP και σπάζοντας εντελώς αν ο γείτονας έχει το proxy-ARP κλειστό. Σε Ethernet, δίνε πάντα τη διεύθυνση IP next-hop.
Ένα κλασικό αδιέξοδο: προσθέτεις τη διαδρομή προς το branch, τα ping ακόμα αποτυγχάνουν — επειδή ο router του branch δεν έχει διαδρομή πίσω. Κάθε διαδρομή χρειάζεται route και στα δύο άκρα (ή ένα default που το καλύπτει). Όταν ένα static route «δεν δουλεύει», έλεγξε πρώτα τη διαδρομή επιστροφής· είναι ο ένοχος πιο συχνά από το route που μόλις έγραψες.
03
Δώσε σε μια backup διαδρομή χειρότερο administrative distance και μένει έξω από τον πίνακα μέχρι να πεθάνει η κύρια. Αυτό είναι το κλασικό two-WAN failover σε ένα edge Cisco — το ίδιο πρόβλημα που λύνει το post μας για Starlink failover σε MikroTik.
# Κύριο default route μέσω ίνας (AD 1 — κανονικό static) R1(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1 # Backup default μέσω LTE με AD 10 — "floating": εγκαθίσταται μόνο # όταν εξαφανιστεί η κύρια διαδρομή R1(config)# ip route 0.0.0.0 0.0.0.0 198.51.100.1 10 # Όσο η ίνα είναι up, μόνο η διαδρομή AD-1 είναι στον πίνακα: R1# show ip route static S* 0.0.0.0/0 [1/0] via 203.0.113.1 # Βγάλε την ίνα → interface down → η διαδρομή AD-1 αποσύρεται → η AD-10 αναλαμβάνει.
Η διαδρομή AD-1 αποσύρεται όταν το next-hop της γίνει απρόσιτο — κάτι που το IOS ανιχνεύει με το interface να πέφτει. Αν η ίνα σου πεθάνει upstream αλλά η τοπική θύρα μένει up/up (πολύ συνηθισμένο με ONT ή media converter στη μέση), η κύρια διαδρομή δεν φεύγει ποτέ από τον πίνακα και το backup δεν εγκαθίσταται ποτέ. Η διόρθωση είναι να δέσεις το static σε έναν έλεγχο προσβασιμότητας: ένα IP SLA ping με αντικείμενο track (ip route 0.0.0.0 0.0.0.0 203.0.113.1 track 1). Αυτό είναι το αντίστοιχο Cisco του κόλπου netwatch/recursive-route του MikroTik από το writeup μας για Starlink failover — αξίζει δικό του post.
04
Πέρα από δύο-τρεις router, τα statics γίνονται φόρος συντήρησης χωρίς failover. Οι router OSPF συστήνονται, ανταλλάσσουν την τοπολογία, και επανυπολογίζουν όταν πεθαίνουν links. Τα μικρά δίκτυα χρειάζονται ακριβώς μία area: 0.
R1(config)# router ospf 1 # Το "1" είναι ένα τοπικό process ID — ΔΕΝ χρειάζεται να ταιριάζει ανάμεσα σε router. R1(config-router)# router-id 1.1.1.1 # Ρητό router-id: σταθερή ταυτότητα σε κάθε πίνακα γειτόνων και debug. # Ποια interfaces μπαίνουν στο OSPF — ταιριάζουν με network + WILDCARD (όπως τα ACL): R1(config-router)# network 192.168.90.0 0.0.0.3 area 0 # το /30 link προς R2 R1(config-router)# network 192.168.10.0 0.0.0.255 area 0 # το LAN που διαφημίζουμε # Μη στέλνεις hellos εκεί που δεν ζει κανένας router (ασφάλεια + θόρυβος): R1(config-router)# passive-interface default R1(config-router)# no passive-interface GigabitEthernet0/2 # μόνο το link προς R2 # Μπόνους edge router: δώσε το default route σε όλους μέσω OSPF R1(config-router)# default-information originate R1(config-router)# end
Ρύθμισε την καθρεφτισμένη εικόνα στο R2 (δικό του router-id, δική του δήλωση LAN network, ίδιο area 0), και μέσα σε δευτερόλεπτα οι δύο είναι γείτονες και ο καθένας μαθαίνει το LAN του άλλου. Πρόσθεσε έναν τρίτο router αργότερα και κανείς δεν γράφει route — ο χάρτης ενημερώνεται μόνος του. Δύο λεπτομέρειες αξίζει να τις καρφώσεις: η δήλωση network χρησιμοποιεί wildcard masks (η συνήθεια από τα ACL πληρώνει), και δεν διαφημίζει τόσο ένα δίκτυο όσο ενεργοποιεί το OSPF σε κάθε interface του οποίου η διεύθυνση ταιριάζει — το πραγματικό prefix του interface είναι αυτό που διαφημίζεται.
05
Τρεις εντολές λένε όλη την ιστορία: είμαστε γείτονες, τι έμαθα, και τι κάνει το OSPF στα interfaces μου.
# 1. Γείτονες — FULL σημαίνει ότι η σχέση δουλεύει R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/DR 00:00:36 192.168.90.2 GigabitEthernet0/2 # 2. Τι έβαλε το OSPF στον πίνακα δρομολόγησης R1# show ip route ospf O 10.30.1.0/24 [110/2] via 192.168.90.2, 00:04:11, GigabitEthernet0/2 O*E2 0.0.0.0/0 [110/1] via 192.168.90.2 ← το originated default # 3. Ποια interfaces τρέχουν OSPF, το cost και το state τους R1# show ip ospf interface brief Interface PID Area IP Address/Mask Cost State Nbrs F/C Gi0/2 1 0 192.168.90.1/30 1 P2P 1/1 Gi0/1 1 0 192.168.10.1/24 1 DR 0/0
Η adjacency του OSPF είναι σχολαστική επίτηδες. Όταν το show ip ospf neighbor είναι άδειο: (1) μπορούν καν οι router να κάνουν ping μεταξύ τους· (2) μήπως το passive-interface default έκανε σιωπηλό το link που θα έπρεπε να μιλάει (η αιτία #1 αυτοτραυματισμού — κάνε του no passive-interface)· (3) ταιριάζουν τα hello/dead timers και οι subnet masks και στα δύο άκρα του link (ασύμφωνη mask = καμία adjacency, και φαίνεται μια χαρά μεμονωμένα)· (4) είναι και οι δύο πλευρές στην ίδια area. Ένας γείτονας κολλημένος να ταλαντεύεται σε EXSTART/EXCHANGE είναι δικό του θηρίο: αυτό είναι σχεδόν πάντα ασυμφωνία MTU — ευθυγράμμισε τα MTU αλλιώς η ανταλλαγή database δεν ολοκληρώνεται ποτέ.
06
Δεν είναι θρησκευτικό ερώτημα. Μέτρησε τους router σου και τις εφεδρικές διαδρομές σου.
| Κατασταση | Χρησιμοποιησε |
|---|---|
| Ένας router + ISP | Ένα default static. Το OSPF δεν θα πρόσθετε τίποτα. |
| Δύο router, ένα link | Τα statics είναι εντάξει· είναι εντάξει και το OSPF και αυτο-τεκμηριώνεται. |
| 3+ router, ή οποιαδήποτε εφεδρική διαδρομή | OSPF area 0. Το static spaghetti με failover είναι εκεί που φυτρώνουν οι διακοπές. |
| Dual WAN σε ένα edge | Floating static + IP SLA tracking (ή άφησε και τα δύο defaults στο OSPF αν το μιλάνε οι ISP). |
| Διαδρομή που δεν πρέπει ποτέ να κινηθεί | Ένα /32 ή συγκεκριμένο static — το AD 1 νικά το OSPF 110, σκόπιμα. |
07
Ίδιες έννοιες, ίδια μαθηματικά, διαφορετική ορθογραφία. Το distance του RouterOS = το administrative distance του IOS.
| MikroTik / RouterOS | Cisco IOS |
|---|---|
| /ip route add dst-address=0.0.0.0/0 gateway=… | ip route 0.0.0.0 0.0.0.0 <next-hop> |
| distance=10 σε backup route | Floating static: trailing AD (… 198.51.100.1 10) |
| check-gateway=ping / netwatch | IP SLA + track object στο static |
| /routing ospf instance + area area=backbone | router ospf 1 + area 0 |
| /routing ospf interface-template networks=… | network <net> <wildcard> area 0 |
| passive=yes σε template | passive-interface |
| /ip route print | show ip route |
Συμπερασματα
ip route 0.0.0.0 0.0.0.0 <ISP>. Σε Ethernet, δείχνε πάντα τα statics σε ένα next-hop IP, όχι σε interface εξόδου.passive-interface default με εξαιρέσεις, και default-information originate στην άκρη.Σχεδιάζω δρομολόγηση που κάνει failover χωρίς κανείς να αγγίξει πληκτρολόγιο — backbones OSPF, tracked failover σε Starlink ή LTE ως backup διαδρομή, καθαρή τεκμηρίωση — σε Cisco, MikroTik, ή συνδυασμό. Μετά το δοκιμάζω βγάζοντας μόνος μου το κύριο link.
Κλεισε μια Discovery Call →