English · Ελληνικά
Μπορείς να έχεις δύο από όλα — δύο switch, δύο uplinks, δύο ISP — και ακόμα να χάσεις ολόκληρο το site όταν πεθάνει ένας router, επειδή κάθε host δείχνει σε μία μοναδική default πύλη. Το HSRP και το VRRP δίνουν σε αυτή την πύλη έναν παλμό: ένα virtual IP που κάνει failover ανάμεσα σε δύο router σε ένα δευτερόλεπτο, αόρατα.
Ένας host έχει ακριβώς μία default πύλη, και είναι μοναδικό σημείο αστοχίας. Χτίσε ένα υπέροχα εφεδρικό δίκτυο — διπλά switch, συνενωμένα uplinks (δες STP & EtherChannel), ακόμα και διπλοί ISP (δες Routing & OSPF) — και ακόμα όλα περνάνε μέσα από ένα IP πύλης καρφωμένο σε κάθε DHCP scope. Εκείνος ο router κάνει reboot και ολόκληρο το subnet σκοτεινιάζει μέχρι κάποιος να ξανακατευθύνει εκατοντάδες συσκευές. Απαράδεκτο.
Ένα First-Hop Redundancy Protocol το διορθώνει επινοώντας ένα virtual IP και ένα virtual MAC που επιπλέουν ανάμεσα σε δύο (ή περισσότερους) router. Οι hosts δείχνουν στο virtual IP για πάντα· από πίσω ένας router είναι active και απαντάει γι' αυτό ενώ ο άλλος περιμένει, ακούγοντας τον παλμό του active router. Όταν ο παλμός σταματήσει, ο standby αναλαμβάνει το virtual IP και MAC σε περίπου ένα δευτερόλεπτο — καμία επανεκμάθηση ARP, καμία επαναρύθμιση host, συνήθως ούτε ένα χαμένο ping. Η έκδοση της Cisco είναι το HSRP· το ισοδύναμο ανοιχτού προτύπου είναι το VRRP. Αυτό το post χτίζει και τα δύο, προσθέτει interface tracking ώστε ένα νεκρό uplink να ενεργοποιεί κι αυτό failover, και καλύπτει τη συμπεριφορά preempt που ξαφνιάζει τους πάντες.
show και την ιδέα ισοπαλίας priority01
Δύο router, ένα virtual IP, ένας αριθμός group. Το υψηλότερο priority γίνεται active· το άλλο περιμένει. Οι hosts χρησιμοποιούν το virtual IP ως πύλη τους και δεν ξέρουν ποτέ ποιος φυσικός router απαντάει.
# ── R1 — ο επιδιωκόμενος active router ── R1(config)# interface vlan 10 R1(config-if)# ip address 192.168.10.2 255.255.255.0 # το ΠΡΑΓΜΑΤΙΚΟ ip του R1 R1(config-if)# standby version 2 # v2: καλύτεροι timers, IPv6 R1(config-if)# standby 10 ip 192.168.10.1 # group 10, VIRTUAL ip .1 R1(config-if)# standby 10 priority 110 # υψηλότερο = προτιμώμενο active R1(config-if)# standby 10 preempt # διεκδίκησε ξανά active όταν επανέλθει R1(config-if)# standby 10 name VLAN10-GW # ── R2 — ο standby (καθρέφτης, χαμηλότερο priority, δικό του πραγματικό IP) ── R2(config-if)# ip address 192.168.10.3 255.255.255.0 R2(config-if)# standby version 2 R2(config-if)# standby 10 ip 192.168.10.1 # ΙΔΙΟ virtual ip + group R2(config-if)# standby 10 priority 90 R2(config-if)# standby 10 preempt # Κάθε host στο VLAN 10 χρησιμοποιεί το 192.168.10.1 ως default πύλη.
Ένα συχνό λάθος αρχάριου είναι να βάλεις το standby ip στη δική του διεύθυνση interface του R1. Το virtual IP πρέπει να είναι μια τρίτη, αχρησιμοποίητη διεύθυνση στο subnet (εδώ .1), ξεχωριστή από το .2 του R1 και το .3 του R2. Όλο το νόημα είναι ότι το .1 ανήκει στην ομάδα, όχι σε μια συσκευή — γι' αυτό μπορεί να κινείται. Επίσης: και οι δύο router πρέπει να χρησιμοποιούν τον ίδιο αριθμό group και έκδοση, αλλιώς σχηματίζουν δύο ξεχωριστές ομάδες και οι δύο νομίζουν ότι είναι active (θα δεις συμπτώματα διπλής-πύλης).
02
Μία εντολή σου λέει ποιος είναι active, ποια είναι το virtual IP και MAC, και αν είναι ρυθμισμένο το preempt. Μετά βγάλε ένα καλώδιο και δες τον standby να αναλαμβάνει.
R1# show standby brief P indicates configured to preempt. Interface Grp Pri P State Active Standby Virtual IP Vl10 10 110 P Active local 192.168.10.3 192.168.10.1 R1# show standby vlan 10 Vlan10 - Group 10 (version 2) State is Active Virtual IP address is 192.168.10.1 Active virtual MAC address is 0000.0c9f.f00a (v2 group 10 = ...f00a) Hello time 3 sec, hold time 10 sec Preemption enabled # Βγάλε το uplink του R1 / κάνε shut το interface του — το R2 προάγεται μέσα στο holdtime: %HSRP-5-STATECHANGE: Vlan10 Grp 10 state Standby -> Active # Οι hosts συνεχίζουν να κάνουν ping την πύλη σε όλη τη διάρκεια — το VIP + virtual MAC μετακινήθηκαν.
Τα default HSRP hellos είναι 3 δ με holdtime 10 δ — οπότε μια σιωπηλή αστοχία μπορεί να σκοτεινιάσει το subnet μέχρι δέκα δευτερόλεπτα. Το standby 10 timers msec 250 msec 800 κόβει το failover σε κάτω από ένα δευτερόλεπτο. Μην πας παράλογα χαμηλά: πολύ επιθετικοί timers προκαλούν ψευδή failover κάτω από φόρτο CPU ή σύντομη συμφόρηση, που είναι χειρότερο από ένα λίγο πιο αργό. Το sub-second είναι αρκετό· συνδύασέ το με tracking (επόμενη ενότητα) ώστε το failover να ενεργοποιείται από το πραγματικό πρόβλημα, όχι ένα χαμένο hello.
03
Το HSRP by default κάνει failover μόνο αν ο active router πεθάνει εντελώς. Αλλά η συνηθισμένη αστοχία είναι πιο λεπτή: ο router είναι μια χαρά, το UPLINK του είναι down. Το tracking κάνει το HSRP να παρακολουθεί το uplink και να παραμερίζει όταν είναι σπασμένη η διαδρομή — όχι η συσκευή.
# Στο R1: αν πέσει το interface WAN/uplink, ρίξε το priority κατά 30 R1(config)# track 1 interface GigabitEthernet0/0 line-protocol R1(config)# interface vlan 10 R1(config-if)# standby 10 track 1 decrement 30 # Μαθηματικά: το R1 ξεκινά στο 110. Το uplink πεθαίνει → 110 - 30 = 80, που είναι κάτω # από το 90 του R2. Με preempt στο R2, το R2 αναλαμβάνει. Το uplink επιστρέφει → το R1 πίσω στο # 110 → το R1 κάνει preempt και διεκδικεί ξανά το active. Το failover ακολουθεί τη ΔΙΑΔΡΟΜΗ, όχι # μόνο το σασί. R1# show track 1 Track 1 Interface GigabitEthernet0/0 line-protocol Line protocol is Up Tracked by: HSRP Vlan10 10
Το decrement πρέπει να είναι αρκετά μεγάλο ώστε να ρίξει τον active router κάτω από το priority του standby. Αν το R1 είναι 110 και το R2 105, ένα decrement 30 πάει το R1 στο 80 — καλό, κερδίζει το R2. Αλλά αν είχες αφήσει και τα δύο κοντά στο default (100), ένα μικρό decrement μπορεί να μην περάσει το όριο και το failover σιωπηλά να μη συμβεί ποτέ. Κάνε την αριθμητική: active_priority − decrement < standby_priority. Και το line-protocol παρακολουθεί up/down· για να κάνεις failover όταν η απέναντι άκρη είναι απρόσιτη-αλλά-up, παρακολούθησε αντ' αυτού ένα αντικείμενο IP SLA — που είναι ακριβώς το επόμενο post σε αυτή τη σειρά.
04
Με μία ομάδα HSRP, ο standby router δεν προωθεί τίποτα μέχρι μια αστοχία — ακριβό hardware να κάθεται αδρανές. Δύο ομάδες με αντεστραμμένα priorities κάνουν κάθε router active για τα μισά VLAN, οπότε δουλεύουν και οι δύο και ο ένας καλύπτει τον άλλο.
# VLAN 10 → R1 active (priority 110), R2 standby # VLAN 20 → R2 active (priority 110), R1 standby R1(config)# interface vlan 20 R1(config-if)# standby 20 ip 192.168.20.1 R1(config-if)# standby 20 priority 90 # το R1 είναι STANDBY για το VLAN 20 R1(config-if)# standby 20 preempt R2(config)# interface vlan 20 R2(config-if)# standby 20 ip 192.168.20.1 R2(config-if)# standby 20 priority 110 # το R2 είναι ACTIVE για το VLAN 20 R2(config-if)# standby 20 preempt # Δείξε τις πύλες των μισών DHCP scopes σου στο active VLAN κάθε router. # Και οι δύο συσκευές προωθούν σε σταθερή κατάσταση· καθεμία καλύπτει και τα δύο αν πεθάνει ο peer της.
05
Το VRRP κάνει την ίδια δουλειά με το HSRP με τυποποιημένο syntax, οπότε συνεργάζεται με μη-Cisco εξοπλισμό. Αν το περιβάλλον σου είναι μεικτού κατασκευαστή, στρέψου στο VRRP· αν είναι όλο Cisco, το HSRP είναι εξίσου καλό.
R1(config)# interface vlan 10 R1(config-if)# vrrp 10 ip 192.168.10.1 # virtual ip R1(config-if)# vrrp 10 priority 110 R1(config-if)# vrrp 10 description VLAN10-GW # ΣΗΜΕΙΩΣΗ: στο VRRP, το preempt είναι ΑΝΟΙΧΤΟ by default (το HSRP το απαιτεί ρητά). R1# show vrrp brief Interface Grp Pri Time Own Pre State Master addr Group addr Vl10 10 110 3218 Y Master 192.168.10.2 192.168.10.1
| HSRP | VRRP | |
|---|---|---|
| Προέλευση | Ιδιόκτητο της Cisco | Ανοιχτό πρότυπο IETF |
| Όροι | Active / Standby | Master / Backup |
| Preempt default | Κλειστό (πρέπει να ενεργοποιηθεί) | Ανοιχτό |
| Virtual MAC | 0000.0c9f.fXXX (v2) | 0000.5e00.01XX |
| Χρησιμοποίησέ το όταν | Κατάστημα όλο-Cisco | Μεικτός κατασκευαστής |
06
Τα περισσότερα tickets FHRP είναι ένα από τρία πράγματα: και οι δύο router νομίζουν ότι είναι active, το failover δεν ενεργοποιείται, ή κάνει flap. Αυτές οι εντολές απομονώνουν και τα τρία.
| Εντολη | Απανταει |
|---|---|
| show standby brief | State, priority, preempt, active/standby peers, virtual IP — η μία γραμμή. |
| show standby vlan 10 | Timers, virtual MAC, tracking, και ιστορικό αλλαγών state. |
| show track | Παρακολουθούμενα αντικείμενα και το state up/down τους. |
| show vrrp brief | Το ισοδύναμο VRRP του standby brief. |
| debug standby terse | Ζωντανές μεταβάσεις state όταν κυνηγάς ένα flap (κλείσ' το μετά). |
Αν το show standby αναφέρει και τους δύο router active, δεν ακούνε τα hellos ο ένας του άλλου. Συνηθισμένες αιτίες: ασυμφωνία αριθμού group ή έκδοσης (R1 group 10 v2, R2 group 10 v1 — διαφορετικά πρωτόκολλα στο καλώδιο)· το VLAN/SVI είναι down στη μία πλευρά· ή το trunk ανάμεσά τους δεν κουβαλάει αυτό το VLAN (πίσω στη λίστα allowed-VLAN από το post του trunking). Δύο "active" router απαντάνε και οι δύο για το virtual MAC → διαλείπουσα, τρελαντική συνδεσιμότητα. Επιβεβαίωσε το ίδιο group + έκδοση και ότι τα δύο SVI όντως φτάνουν το ένα το άλλο πριν αγγίξεις οτιδήποτε άλλο.
07
Το RouterOS μιλάει VRRP φυσικά, οπότε η αντιστοίχιση είναι καθαρή — οι έννοιες αντιστοιχίζονται μία-προς-μία.
| MikroTik / RouterOS | Cisco IOS |
|---|---|
| /interface vrrp add vrid=10 | vrrp 10 … (ή standby 10 για HSRP) |
| priority=110 | standby 10 priority 110 |
| Το interface VRRP κρατάει το virtual IP | Virtual IP μέσω standby/vrrp … ip |
| Netwatch/script χαμηλώνει το priority σε αστοχία | αντικείμενο track + decrement |
| preemption-mode=yes | standby 10 preempt (HSRP) / default στο VRRP |
Το FHRP είναι το τελευταίο κομμάτι μιας ιστορίας τριών επιπέδων που έχει χτίσει αυτή η σειρά: το EtherChannel κρατάει τα links ανοιχτά, το STP κρατάει την τοπολογία L2 χωρίς βρόχους, το OSPF ξαναδρομολογεί γύρω από νεκρές διαδρομές — και το HSRP/VRRP κρατάει ζωντανή την πύλη ώστε οι hosts να μη νοιάζονται ποτέ ότι συνέβη οτιδήποτε από αυτά. Ένα δίκτυο είναι εφεδρικό όσο το λιγότερο εφεδρικό του hop, και για τα περισσότερα sites το ξεχασμένο hop είναι η default πύλη.
Συμπερασματα
preempt ρητά ορισμένο (το VRRP το έχει ανοιχτό by default) αλλιώς ένας ανακτημένος primary μένει standby.Σχεδιάζω εφεδρικές πύλες με HSRP ή VRRP, σωστό interface tracking, και load sharing και στους δύο router — για επιχειρήσεις που γνήσια δεν αντέχουν ένα subnet να σκοτεινιάσει. Μετά το δοκιμάζω με τον μόνο ειλικρινή τρόπο: βγάζοντας το ρεύμα από τον primary.
Κλεισε μια Discovery Call →