Πίσω στο blog

English  ·  Ελληνικά

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

Cisco IOS
Policy-Based Routing

Ο πίνακας δρομολόγησης προωθεί με βάση τον προορισμό — αυτή είναι όλη του η δουλειά. Αλλά μερικές φορές χρειάζεσαι να δρομολογήσεις με βάση ποιος το έστειλε, όχι πού πάει: το VLAN guest από τον φθηνό ISP, το προσωπικό από τον καλό· το VoIP από το link χαμηλού latency. Το Policy-Based Routing παρακάμπτει τον πίνακα δρομολόγησης για κίνηση που διαλέγεις εσύ. Ο δίδυμος της προσέγγισης routing-rules-and-mangle του MikroTik.

Cisco IOS PBR Policy Routing Route-Map Dual-WAN

Η κανονική δρομολόγηση βασίζεται στον προορισμό και είναι ίδια για όλους: ένα πακέτο προς 8.8.8.8 παίρνει την ίδια διαδρομή είτε ήρθε από το laptop του CEO είτε από την τηλεόραση του λόμπι. Το Policy-Based Routing (PBR) σπάει αυτή τη συμμετρία — σου αφήνει να ταιριάξεις κίνηση με βάση source, πρωτόκολλο, port, ή μέγεθος και να ορίσεις διαφορετικό next-hop πριν ψηφίσει ο πίνακας δρομολόγησης. Έτσι υλοποιείς το «οι guests φεύγουν μέσω του backup ISP ώστε να μην αγγίζουν ποτέ το ακριβό μετρημένο link», ή «στείλε αυτό το ένα subnet μέσα από το VPN και όλα τα υπόλοιπα κανονικά».

Το PBR είναι ένα route-map εφαρμοσμένο inbound σε ένα interface: οι προτάσεις match διαλέγουν την κίνηση (συνήθως μέσω ενός ACL), οι προτάσεις set διαλέγουν το next-hop. Τρέχει στον router που δέχεται την κίνηση, πριν από το lookup στο FIB. Αυτό συνδυάζεται φυσικά με το edge dual-ISP και το post IP SLA failover, και το αντίστοιχό του σε RouterOS είναι τα routing rules & mangle.

Προαπαιτουμενα

01

Ταιριαξε την Κινηση, Ορισε το Next-Hop

Ταξινόμησε με ένα ACL, μετά ένα route-map που ορίζει το next-hop για τα ταιριάσματα και πέφτει σε κανονική δρομολόγηση για όλα τα υπόλοιπα. Εφάρμοσέ το inbound στο interface όπου φτάνει αυτή η κίνηση.

IOS — στειλε το subnet guest απο τον ISP-B, ολοι οι υπολοιποι κανονικα
# 1. Ταξινόμησε: ποια κίνηση παίρνει ειδική μεταχείριση;
R1(config)# ip access-list extended GUEST-OUT
R1(config-ext-nacl)# permit ip 10.10.20.0 0.0.0.255 any

# 2. Η πολιτική: ταίριασε το ACL, όρισε το next-hop του ISP-B.
R1(config)# route-map PBR-GUEST permit 10
R1(config-route-map)# match ip address GUEST-OUT
R1(config-route-map)# set ip next-hop 203.0.113.9     # πύλη ISP-B
# Μια πρόταση permit χωρίς set = «δρομολόγησέ τα κανονικά» (ρητό passthrough).
R1(config)# route-map PBR-GUEST permit 20

# 3. Εφάρμοσέ το INBOUND στο interface όπου φτάνει η κίνηση guest.
R1(config)# interface Vlan20
R1(config-if)# ip policy route-map PBR-GUEST
⚠ Παγιδα — Inbound στο Interface Εισοδου, Οχι στην Εξοδο

Το PBR εφαρμόζεται με ip policy στο interface όπου η κίνηση μπαίνει στον router, όχι εκεί που φεύγει. Οι καινούργιοι μηχανικοί αντανακλαστικά το βάζουν στο interface WAN και δεν συμβαίνει τίποτα. Πρόσεξε επίσης την κατεύθυνση: το route-map επηρεάζει μόνο την κίνηση διέλευσης που φτάνει σε αυτό το interface — για κίνηση που παράγει ο ίδιος ο router (pings, διαχείριση), χρειάζεσαι ξεχωριστά το ip local policy route-map. Ταίριασε το interface με το πού εμφανίζεται η ενδιαφέρουσα κίνηση.

02

set next-hop vs set interface vs default — η Σειρα Εχει Σημασια

Υπάρχουν αρκετά ρήματα set και διαφέρουν στο πότε νικούν τον πίνακα δρομολόγησης. Διάλεξε το λάθος και το PBR είτε παρακάμπτει υπερβολικά επιθετικά είτε καθόλου.

Προταση setΣυμπεριφορα
set ip next-hop XΕπίβαλε το next-hop X — παρακάμπτει τον πίνακα δρομολόγησης. Γίνεται blackhole αν το X είναι down.
set ip next-hop verify-availabilityΤο ίδιο, αλλά παράλειψέ το αν το X είναι απρόσιτο (χρησιμοποιεί CDP/tracking) — πιο ασφαλές.
set interface Tunnel0Επίβαλε έξοδο από ένα interface (καλό για point-to-point / tunnels).
set ip default next-hop XΧρησιμοποίησε το X μόνο αν ο πίνακας δρομολόγησης δεν έχει συγκεκριμένη διαδρομή — ένα απαλό σπρώξιμο.
💡 Pro Tip — Συνδυασε το PBR με Tracking για Failover

Ένα γυμνό set ip next-hop κάνει blackhole την ταιριασμένη κίνηση τη στιγμή που πεθαίνει εκείνο το next-hop — το PBR δεν συμβουλεύεται την προσβασιμότητα by default. Συνδύασέ το με ένα track IP SLA και set ip next-hop verify-availability <nh> <seq> track <n> ώστε η πολιτική να παραμερίζει όταν η διαδρομή είναι down και το πακέτο να πέφτει στην κανονική δρομολόγηση (ή την επόμενη πρόταση set). Το policy routing χωρίς έλεγχο υγείας είναι μια αυτοπροκαλούμενη διακοπή που περιμένει να χρειαστεί το backup link.

03

Περα απο το Source — Ταιριαξε ο,τι Θελεις

Η δύναμη του PBR είναι ότι το match μπορεί να είναι οτιδήποτε εκφράζει ένα ACL — πρωτόκολλο, port, DSCP, ακόμα και μήκος πακέτου. Έτσι δρομολογείς με βάση την εφαρμογή, όχι μόνο το subnet.

IOS — δρομολογησε το VoIP απο το link χαμηλου latency, τον ογκο απο το αλλο
# Ταίριασε με DSCP (VoIP σημαδεμένο EF) ή port, μετά στρέψε στο καλό link.
R1(config)# ip access-list extended VOICE
R1(config-ext-nacl)# permit ip any any dscp ef
R1(config)# route-map PBR-APP permit 10
R1(config-route-map)# match ip address VOICE
R1(config-route-map)# set ip next-hop verify-availability 198.51.100.1 1 track 1
# το match ip address με ένα ACL μήκους, ή το match length, είναι επίσης έγκυρο —
# π.χ. στείλε μεγάλα backups από το μετρημένο link, κράτα το interactive στην ίνα.

04

Επαληθευσε οτι το PBR Πραγματικα Δρα Ασφαλες να το Τρεξεις

Οι αστοχίες PBR είναι σιωπηλές — η κίνηση απλώς δρομολογείται κανονικά. Επιβεβαίωσε ότι η πολιτική είναι προσαρτημένη, ταιριάζει, και οι μετρητές της ανεβαίνουν.

IOS — αποδειξε οτι η πολιτικη χτυπιεται
R1# show ip policy                    # ποια interfaces έχουν route-map
R1# show route-map PBR-GUEST           # "policy routing matches: N packets"
# Ιχνηλάτησε την απόφαση για μια συγκεκριμένη ροή:
R1# debug ip policy                    # (προσεκτικά, σε lab / χαμηλή κίνηση)
# Από έναν host guest, ένα traceroute τώρα θα πρέπει να βγαίνει από την πύλη του ISP-B.

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

  1. Το PBR δρομολογεί με βάση source/εφαρμογή, όχι προορισμό — παρακάμπτει τον πίνακα δρομολόγησης για κίνηση που ταιριάζεις. Το εργαλείο για το «αυτό το subnet φεύγει με διαφορετικό τρόπο».
  2. Είναι ένα route-map εφαρμοσμένο inbound στο interface εισόδου με ip policy — όχι στην έξοδο, και κίνηση που παράγει ο ίδιος ο router χρειάζεται ip local policy.
  3. Διάλεξε το σωστό set: το next-hop παρακάμπτει τον πίνακα (και κάνει blackhole αν είναι down)· το default next-hop γεμίζει μόνο ένα κενό· το verify-availability προσθέτει έλεγχο ασφαλείας.
  4. Συνδύαζε πάντα με tracking — το γυμνό PBR δεν έχει έλεγχο υγείας και θα κάνει blackhole την ταιριασμένη κίνηση όταν πεθάνει το next-hop.
  5. Ταίριαξε ο,τιδήποτε μπορεί να εκφράσει ένα ACL — source, port, DSCP, μήκος — για να δρομολογείς με βάση την εφαρμογή.
  6. Οι αστοχίες είναι σιωπηλές — επαλήθευσε με show ip policy και τους μετρητές match του route-map.

Θελεις κινηση guest και backups εξω απο το καλο σου link αυτοματα;

Δεν χρειάζεται όλη η κίνηση το ίδιο link, και μια νεκρή διαδρομή δεν πρέπει ποτέ να γίνεται σιωπηλά μαύρη τρύπα. Σχεδιάζω edges dual-WAN με policy routing σε Cisco και MikroTik που βάζουν τη σωστή κίνηση στο σωστό link, με ελέγχους υγείας να παρακολουθούν και τα δύο.

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