English · Ελληνικά
Ένα floating static route κάνει failover μόνο όταν πέσει η θύρα — αλλά ένας νεκρός ISP συνήθως αφήνει τη θύρα σου χαρούμενα up. Το IP SLA το διορθώνει αυτό: ο router κάνει ping κάτι στο internet, και όταν σταματήσουν τα ping, αποσύρει το route. Η απάντηση της Cisco στο ακριβές πρόβλημα που λύνει το post μας για failover Starlink σε MikroTik.
Το post δρομολόγησης τελείωσε με μια ειλικρινή παγίδα: ένα floating static route κάνει failover μόνο όταν το κύριο route φεύγει από τον πίνακα, και το IOS αποσύρει ένα static όταν το interface του πέφτει down. Αλλά η πιο συνηθισμένη αστοχία WAN δεν είναι μια θύρα down — είναι μια ίνα που πεθαίνει τρεις δρόμους μακριά ενώ το ONT σου κρατάει το τοπικό link up/up. Ο router νομίζει ότι όλα είναι μια χαρά και δεν αγγίζει ποτέ το backup. Οι χρήστες δεν έχουν internet· ο router επιμένει ότι όλα είναι καλά.
Το IP SLA κλείνει εκείνο το κενό. Είναι μια ενσωματωμένη μηχανή probe: ο router κάνει συνεχώς ping σε έναν αξιόπιστο στόχο internet (ας πούμε 8.8.8.8) από το κύριο WAN. Ένα αντικείμενο track παρακολουθεί το probe, και το κύριο static route γίνεται εξαρτημένο από εκείνο το track. Τα ping σταματούν → το track πέφτει → αποσύρεται το route → εγκαθίσταται το floating backup — όλα σε δευτερόλεπτα, οδηγούμενα από πραγματική προσβασιμότητα αντί για κατάσταση link. Πρόσθεσε λίγη χορογραφία NAT ώστε οι μεταφράσεις να ακολουθούν το ενεργό WAN, και έχεις πραγματικό dual-WAN failover. Αυτό είναι το απευθείας ισοδύναμο σε Cisco του κόλπου recursive-route + netwatch από το writeup μας Starlink + MikroTik failover.
01
Όρισε τι σημαίνει «το internet είναι προσβάσιμο»: ένα επαναλαμβανόμενο ICMP echo προς σταθερό στόχο, σταλμένο από το κύριο WAN. Μετά προγραμμάτισέ το να τρέχει για πάντα.
# Probe 1: ping 8.8.8.8, με πηγή το κύριο interface WAN, # κάθε 2 δευτερόλεπτα, απέτυχε αν δεν έρθει απάντηση μέσα σε 1 δευτερόλεπτο (1000 ms). R1(config)# ip sla 1 R1(config-ip-sla)# icmp-echo 8.8.8.8 source-interface GigabitEthernet0/0 R1(config-ip-sla-echo)# frequency 2 R1(config-ip-sla-echo)# threshold 1000 R1(config-ip-sla-echo)# timeout 1000 R1(config-ip-sla-echo)# exit # Ξεκίνα το τώρα και μη σταματήσεις ποτέ R1(config)# ip sla schedule 1 life forever start-time now # Επιβεβαίωσε ότι πραγματικά κάνει probe (ασφαλές) R1# show ip sla statistics 1 IPSLA operation id: 1 Latest RTT: 14 milliseconds Latest operation return code: OK Number of successes: 428 Number of failures: 0
Δύο λεπτότητες. Πρώτο, διάλεξε έναν στόχο που είναι πάντα up και όχι η ίδια η πύλη του ISP σου — τα 8.8.8.8 ή 1.1.1.1 είναι οι τυπικές επιλογές· το probe στο πρώτο hop του ISP σου μπορεί να αναφέρει «υγιές» ενώ το internet πέρα από αυτό είναι νεκρό. Δεύτερο, σε έναν router με default route και από τα δύο WAN, πρέπει να καρφώσεις το probe στην κύρια διαδρομή αλλιώς το IOS μπορεί να στείλει το ping από το backup και να βλέπει πάντα επιτυχία. Το source-interface βοηθάει, αλλά η στιβαρή διόρθωση είναι ένα static /32 για τον στόχο probe από το κύριο next-hop (ip route 8.8.8.8 255.255.255.255 <primary-gw>) ώστε το probe να δοκιμάζει όντως το κύριο.
02
Ένα αντικείμενο track μεταφράζει το «το SLA περνάει/αποτυγχάνει» σε κατάσταση up/down στην οποία μπορούν να αντιδράσουν routes και HSRP. Πρόσθεσε καθυστερήσεις ώστε ένα μεμονωμένο τρεμόπαιγμα να μην κάνει flap όλη την άκρη.
R1(config)# track 1 ip sla 1 reachability R1(config-track)# delay down 5 up 15 R1(config-track)# exit # down 5 = περίμενε 5 δ αστοχίας πριν δηλώσεις DOWN (αγνόησε ένα χασομέρι) # up 15 = περίμενε 15 δ επιτυχίας πριν δηλώσεις UP ξανά # (μην ξαναγυρνάς σε ένα κύριο που κάνει flap και συνεχίζει να πέφτει) R1# show track 1 Track 1 IP SLA 1 reachability Reachability is Up 2 changes, last change 00:12:40 Delay up 15 secs, down 5 secs
03
Τώρα κάνε το κύριο default route εξαρτημένο από το track. Όταν αποτυγχάνει το probe, το tracked route τραβιέται από τον πίνακα και το floating backup — που περίμενε με χειρότερο AD — εγκαθίσταται αυτόματα.
# Κύριο default μέσω ίνας, αλλά ΜΟΝΟ όσο το track 1 είναι up R1(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1 track 1 # Backup default μέσω Starlink/LTE με AD 10 — μπαίνει όταν φεύγει το κύριο R1(config)# ip route 0.0.0.0 0.0.0.0 198.51.100.1 10 # Σταθερή κατάσταση — μόνο το tracked (AD 1) route είναι εγκατεστημένο: R1# show ip route static S* 0.0.0.0/0 [1/0] via 203.0.113.1 # Σκότωσε την ίνα upstream (η θύρα μένει up!). Μέσα σε ~5 δ: %TRACK-6-STATE: 1 ip sla 1 reachability Up -> Down R1# show ip route static S* 0.0.0.0/0 [10/0] via 198.51.100.1 ← ανέλαβε το backup
Το αντικείμενο track 1 που μόλις έχτισες δεν είναι ειδικό για route — είναι επαναχρησιμοποιήσιμο σήμα. Σε ένα edge με δύο router, τρόφοδοτήσέ το στο HSRP (standby 10 track 1 decrement 30, από το post FHRP) ώστε η πύλη να κάνει κι αυτή failover όταν πεθάνει το κύριο WAN, όχι μόνο όταν πεθάνει ο router. Ένα probe, ένα track, δύο καταναλωτές: το default route και η εκλογή πύλης. Αυτό είναι ολόκληρη η εφεδρική άκρη να αντιδρά σε μία μοναδική πηγή αλήθειας για την προσβασιμότητα internet.
04
Η παγίδα που πιάνει τους πάντες: η δρομολόγηση κάνει failover, αλλά οι υπάρχουσες μεταφράσεις NAT ακόμα δείχνουν το IP του νεκρού WAN, οπότε η κίνηση πεθαίνει ούτως ή άλλως. Το NAT πρέπει να κινείται με το route.
# Σήμανε και τα δύο interfaces WAN outside, το LAN inside (όπως στο post NAT) R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip nat outside R1(config)# interface GigabitEthernet0/1 R1(config-if)# ip nat outside # Ένα route-map ανά WAN: «κάνε NAT το LAN μόνο όταν η έξοδος είναι ΑΥΤΟ το interface» R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255 R1(config)# route-map WAN-FIBRE permit 10 R1(config-route-map)# match ip address 1 R1(config-route-map)# match interface GigabitEthernet0/0 R1(config-route-map)# exit R1(config)# route-map WAN-LTE permit 10 R1(config-route-map)# match ip address 1 R1(config-route-map)# match interface GigabitEthernet0/1 R1(config-route-map)# exit R1(config)# ip nat inside source route-map WAN-FIBRE interface GigabitEthernet0/0 overload R1(config)# ip nat inside source route-map WAN-LTE interface GigabitEthernet0/1 overload # Κάθε κανόνας πυροδοτεί μόνο όταν ο πίνακας δρομολόγησης στέλνει τη ροή από το WAN του.
Ακόμα και με route-map NAT, μεταφράσεις που δημιουργήθηκαν πριν το failover μένουν cached έναντι του παλιού WAN και παραμένουν μέχρι να λήξουν — οπότε το πρώτο λεπτό μετά ένα failover μπορεί να φαίνεται μισο-χαλασμένο. Στο failover θέλεις να τις καθαρίσεις: clear ip nat translation *. Αυτοματοποίησέ το με ένα applet EEM που παρακολουθεί το track και καθαρίζει το NAT σε αλλαγή state (μια φυσική χρήση του post EEM που έρχεται αργότερα σε αυτή τη σειρά). Χειροκίνητα, είναι η πρώτη εντολή να τρέξεις αν «έγινε το failover αλλά κάποια πράγματα ακόμα δεν δουλεύουν».
05
Το failover έχει τέσσερα κινούμενα μέρη — probe, track, route, NAT. Όταν φέρεται άσχημα, περπάτα τα με τη σειρά· το σπάσιμο είναι πάντα σε έναν συγκεκριμένο κρίκο της αλυσίδας.
| Εντολη | Ελεγχει |
|---|---|
| show ip sla statistics 1 | Τρέχει και πετυχαίνει το probe; Return code OK; |
| show ip sla configuration 1 | Στόχος, source, συχνότητα, timeout — κάνει probe το σωστό πράγμα με τον σωστό τρόπο; |
| show track 1 | Κατάσταση track και πόσες φορές έχει αλλάξει (ανιχνευτής flap). |
| show ip route static | Ποιο default είναι εγκατεστημένο τώρα — απόδειξη ποιος είναι ενεργός. |
| show ip nat translations | Χρησιμοποιούν οι μεταφράσεις τη διεύθυνση του ενεργού WAN; |
| show ip sla statistics 1 details | RTT ανά probe και η ακριβής αιτία αστοχίας. |
# Το probe αποτυγχάνει ενώ το internet είναι στην πραγματικότητα μια χαρά; R1# show ip sla statistics 1 # → διόρθωσε το source-interface / το καρφί /32 # Το probe είναι OK αλλά το track δεν πέφτει ποτέ σε αστοχία; R1# show track 1 # → έλεγξε ότι η διαδρομή εξόδου του probe είναι όντως το κύριο # Το track είναι down αλλά το route δεν αλλάζει; R1# show ip route static # → λείπει η λέξη-κλειδί "track 1" από το κύριο route # Το route άλλαξε αλλά η κίνηση ακόμα πεθαίνει; R1# show ip nat translations # → λείπει το route-map NAT, ή καθάρισε τον μπαγιάτικο πίνακα
06
Αυτό είναι το post όπου οι δύο πλατφόρμες ευθυγραμμίζονται πιο σφιχτά — το writeup μας για Starlink λύνει το πανομοιότυπο πρόβλημα με primitives RouterOS.
| MikroTik / RouterOS | Cisco IOS |
|---|---|
| /ip route check-gateway=ping | IP SLA icmp-echo + track reachability |
| Netwatch host + scripts up/down | Αντικείμενο track (+ EEM για παρενέργειες) |
| Recursive route μέσω probed /32 | Tracked static + το καρφί probe /32 |
| distance= στο backup route | Floating static (trailing AD) |
| Δύο κανόνες masquerade ανά out-interface | Route-map NAT ανά interface WAN |
| Το Netwatch καθαρίζει συνδέσεις στην αλλαγή | clear ip nat translation * μέσω EEM |
Απομακρυσμένα ακίνητα εδώ τρέχουν συχνά κύριο ίνα-ή-DSL με Starlink ως backup (ή το αντίστροφο). Το IP του Starlink αλλάζει και το link του προς το πιάτο μένει up ακόμα κι όταν η υπηρεσία είναι υποβαθμισμένη — ακριβώς το σενάριο που χάνει το failover βασισμένο σε link-state. Το failover οδηγούμενο από probe είναι το μόνο πράγμα που αντιδρά σε αυτό που πραγματικά βιώνει ο επισκέπτης: «φτάνω το internet», όχι «είναι μπηγμένο ένα καλώδιο». Χτίζουμε το ίδιο pattern σε όποια πλατφόρμα είναι ήδη στο site.
Συμπερασματα
/32 ώστε «επιτυχία» να σημαίνει ότι το primary πραγματικά δουλεύει.delay down/up ώστε ένα στιγμιαίο blip να μη ρίξει το edge σε flap, και ένα primary που κάνει flap να μη σε τραβάει ξανά πίσω σε αυτό.ip route 0.0.0.0 0.0.0.0 <gw> track 1 συν ένα floating backup σε χειρότερο AD. Το probe αποτυγχάνει → το primary αποσύρεται → το backup εγκαθίσταται.clear ip nat translation *, ιδανικά μέσω EEM) αλλιώς το πρώτο λεπτό φαίνεται σπασμένο.Μια πράσινη λυχνία link σού λέει ότι το καλώδιο είναι εντάξει, όχι ότι είναι το internet. Χτίζω dual-WAN failover σε Cisco και MikroTik που παρακολουθεί πραγματική προσβασιμότητα, με NAT που ακολουθεί όποιο path είναι πραγματικά ενεργό — μετά το δοκιμάζω σκοτώνοντας ο ίδιος το πρωτεύον link.
Κλεισε μια Discovery Call →