Πίσω στο blog

English  ·  Ελληνικά

Cisco / IOS  ·  Tutorial  ·  Ιουλιος 2026

Cisco IOS
Dual-WAN Failover με IP SLA

Ένα floating static route κάνει failover μόνο όταν πέσει η θύρα — αλλά ένας νεκρός ISP συνήθως αφήνει τη θύρα σου χαρούμενα up. Το IP SLA το διορθώνει αυτό: ο router κάνει ping κάτι στο internet, και όταν σταματήσουν τα ping, αποσύρει το route. Η απάντηση της Cisco στο ακριβές πρόβλημα που λύνει το post μας για failover Starlink σε MikroTik.

Cisco IOS IP SLA Failover Dual WAN Track NAT Starlink

R1 edge IP SLA ping 8.8.8.8 ΙΝΑ — κύριο (track UP) STARLINK / LTE — floating backup Internet 8.8.8.8 Το probe σταματάει να απαντάει → το track πάει DOWN → αποσύρεται το κύριο route → εγκαθίσταται το backup. Όχι «είναι μπηγμένο το καλώδιο».

Το 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

Το Probe — IP SLA

Όρισε τι σημαίνει «το internet είναι προσβάσιμο»: ένα επαναλαμβανόμενο ICMP echo προς σταθερό στόχο, σταλμένο από το κύριο WAN. Μετά προγραμμάτισέ το να τρέχει για πάντα.

IOS — ενα probe ICMP απο το κυριο 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
⚠ Παγιδα — Κανε Probe σε Στοχο που Δεν Κουνιεται, και Καρφωσε τη Διαδρομη του

Δύο λεπτότητες. Πρώτο, διάλεξε έναν στόχο που είναι πάντα 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 — Μετατρεψε ενα Probe σε Σημα

Ένα αντικείμενο track μεταφράζει το «το SLA περνάει/αποτυγχάνει» σε κατάσταση up/down στην οποία μπορούν να αντιδράσουν routes και HSRP. Πρόσθεσε καθυστερήσεις ώστε ένα μεμονωμένο τρεμόπαιγμα να μην κάνει flap όλη την άκρη.

IOS — κανε track το SLA, με καθυστερησεις anti-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

Δεσε το Route με το Track

Τώρα κάνε το κύριο default route εξαρτημένο από το track. Όταν αποτυγχάνει το probe, το tracked route τραβιέται από τον πίνακα και το floating backup — που περίμενε με χειρότερο AD — εγκαθίσταται αυτόματα.

IOS — tracked κυριο + floating backup default routes
# Κύριο 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
💡 Pro Tip — Το Ιδιο Track Οδηγει και το HSRP

Το αντικείμενο track 1 που μόλις έχτισες δεν είναι ειδικό για route — είναι επαναχρησιμοποιήσιμο σήμα. Σε ένα edge με δύο router, τρόφοδοτήσέ το στο HSRP (standby 10 track 1 decrement 30, από το post FHRP) ώστε η πύλη να κάνει κι αυτή failover όταν πεθάνει το κύριο WAN, όχι μόνο όταν πεθάνει ο router. Ένα probe, ένα track, δύο καταναλωτές: το default route και η εκλογή πύλης. Αυτό είναι ολόκληρη η εφεδρική άκρη να αντιδρά σε μία μοναδική πηγή αλήθειας για την προσβασιμότητα internet.

04

Κανε το NAT να Ακολουθει το Ενεργο WAN

Η παγίδα που πιάνει τους πάντες: η δρομολόγηση κάνει failover, αλλά οι υπάρχουσες μεταφράσεις NAT ακόμα δείχνουν το IP του νεκρού WAN, οπότε η κίνηση πεθαίνει ούτως ή άλλως. Το NAT πρέπει να κινείται με το route.

IOS — route-map NAT ωστε το PAT να χρησιμοποιει οποιο WAN ειναι ενεργο
# Σήμανε και τα δύο 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 του.
⚠ Παγιδα — Καθαρισε τις Μπαγιατικες Μεταφρασεις τη Στιγμη του Failover

Ακόμα και με 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 detailsRTT ανά probe και η ακριβής αιτία αστοχίας.
IOS — το δεντρο αποφασεων για «το failover δεν δουλευει»
# Το 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

MikroTik ↔ Cisco — Ιδιο Failover, Δυο Διαλεκτοι

Αυτό είναι το post όπου οι δύο πλατφόρμες ευθυγραμμίζονται πιο σφιχτά — το writeup μας για Starlink λύνει το πανομοιότυπο πρόβλημα με primitives RouterOS.

MikroTik / RouterOSCisco IOS
/ip route check-gateway=pingIP SLA icmp-echo + track reachability
Netwatch host + scripts up/downΑντικείμενο track (+ EEM για παρενέργειες)
Recursive route μέσω probed /32Tracked static + το καρφί probe /32
distance= στο backup routeFloating static (trailing AD)
Δύο κανόνες masquerade ανά out-interfaceRoute-map NAT ανά interface WAN
Το Netwatch καθαρίζει συνδέσεις στην αλλαγήclear ip nat translation * μέσω EEM
💡 Γιατι Στρεφομαστε σε Αυτο σε Κρητικα Sites

Απομακρυσμένα ακίνητα εδώ τρέχουν συχνά κύριο ίνα-ή-DSL με Starlink ως backup (ή το αντίστροφο). Το IP του Starlink αλλάζει και το link του προς το πιάτο μένει up ακόμα κι όταν η υπηρεσία είναι υποβαθμισμένη — ακριβώς το σενάριο που χάνει το failover βασισμένο σε link-state. Το failover οδηγούμενο από probe είναι το μόνο πράγμα που αντιδρά σε αυτό που πραγματικά βιώνει ο επισκέπτης: «φτάνω το internet», όχι «είναι μπηγμένο ένα καλώδιο». Χτίζουμε το ίδιο pattern σε όποια πλατφόρμα είναι ήδη στο site.

Συμπερασματα

  1. Το failover βασισμένο σε link-state χάνει τη συνηθισμένη αποτυχία. Ένας νεκρός ISP συνήθως αφήνει το port σου up· μόνο ένα ενεργό probe προσβασιμότητας το προσέχει. Το IP SLA είναι αυτό το probe.
  2. Κάνε probe έναν σταθερό, μακρινό στόχο και κάρφωσε το path του. 8.8.8.8/1.1.1.1, όχι το gateway του ISP σου· ανάγκασε το probe να βγει από το primary με ένα static /32 ώστε «επιτυχία» να σημαίνει ότι το primary πραγματικά δουλεύει.
  3. Ένα track object μετατρέπει το probe σε επαναχρησιμοποιήσιμο σήμα. Πρόσθεσε delay down/up ώστε ένα στιγμιαίο blip να μη ρίξει το edge σε flap, και ένα primary που κάνει flap να μη σε τραβάει ξανά πίσω σε αυτό.
  4. Κάνε τη route του primary υπό όρους: ip route 0.0.0.0 0.0.0.0 <gw> track 1 συν ένα floating backup σε χειρότερο AD. Το probe αποτυγχάνει → το primary αποσύρεται → το backup εγκαθίσταται.
  5. Το NAT πρέπει να ακολουθεί τη route. Route-map NAT ανά WAN, και κάνε flush τις μπαγιάτικες μεταφράσεις στο failover (clear ip nat translation *, ιδανικά μέσω EEM) αλλιώς το πρώτο λεπτό φαίνεται σπασμένο.
  6. Ένα track μπορεί να οδηγήσει και το routing ΚΑΙ το HSRP. Το ίδιο σήμα προσβασιμότητας κάνει failover και στη default route και στο gateway — όλο το edge να αντιδρά σε μία αλήθεια.
  7. Είναι το δίδυμο σε Cisco του MikroTik Starlink failover μας. Ίδιο πρόβλημα, ίδια λογική· κάνε probe την προσβασιμότητα, όχι το link state.

Τρεχεις ινα + Starlink για ενα site στην Κρητη;

Μια πράσινη λυχνία link σού λέει ότι το καλώδιο είναι εντάξει, όχι ότι είναι το internet. Χτίζω dual-WAN failover σε Cisco και MikroTik που παρακολουθεί πραγματική προσβασιμότητα, με NAT που ακολουθεί όποιο path είναι πραγματικά ενεργό — μετά το δοκιμάζω σκοτώνοντας ο ίδιος το πρωτεύον link.

Κλεισε μια Discovery Call →