English · Ελληνικά
Το site-to-site VPN δουλεύει μια χαρά για δύο γραφεία. Δοκίμασέ το για τριάντα κλάδους και έχεις χτίσει στο χέρι ένα πλήρες mesh από tunnels που κανείς δεν μπορεί να συντηρήσει. Το DMVPN είναι η απάντηση: ρύθμισε τον hub μία φορά, πρόσθεσε spokes χωρίς να τον αγγίξεις ποτέ, και άφησε τα spokes να χτίζουν απευθείας tunnels μεταξύ τους κατά παραγγελία. Αυτό είναι το κλιμακούμενο WAN, εξηγημένο χωρίς τη μυστικοπάθεια.
Το πρόβλημα που λύνει το DMVPN είναι συνδυαστικό. Τα κλασικά site-to-site tunnels είναι ένα-ανά-ζευγάρι· ένα πλήρες mesh N sites χρειάζεται N(N-1)/2 tunnels, και κάθε νέος κλάδος σημαίνει επεξεργασία κάθε υπάρχοντος router. Το DMVPN το συμπτύσσει σε ένα multipoint tunnel interface ανά router. Στέκεται σε τρία πόδια: mGRE (ένα μοναδικό interface GRE που φτάνει πολλά endpoints), NHRP (ένα μητρώο «επίλυσης next-hop» όπου τα spokes εγγράφονται στον hub και ψάχνουν το ένα το άλλο), και IPsec (ένα profile προστασίας tunnel που τα κρυπτογραφεί όλα).
Πρόσθεσε ένα spoke και εγγράφεται στον hub — ο hub χρειάζεται μηδέν αλλαγές. Και με το Phase 3, όταν μιλάνε δύο spokes, το NHRP επιλύει ένα απευθείας spoke-προς-spoke tunnel ώστε η κίνησή τους να μη κάνει hairpin μέσα από τον hub. Είναι το φυσικό επόμενο βήμα μετά το VPN δύο sites, και το αντίστοιχό του σε RouterOS — το RouterOS δεν έχει DMVPN — καλύπτεται στο MikroTik hub-and-spoke.
01
Ένα multipoint GRE tunnel, ένα δίκτυο NHRP για να εγγράφονται τα spokes, και προστασία tunnel. Ο hub δέχεται δυναμικές εγγραφές, οπότε δεν τον επεξεργάζεσαι ποτέ ξανά καθώς έρχονται και φεύγουν κλάδοι.
HUB(config)# interface Tunnel0 HUB(config-if)# ip address 172.16.0.1 255.255.255.0 # το subnet DMVPN HUB(config-if)# tunnel source GigabitEthernet0/0 # το δημόσιο interface του HUB(config-if)# tunnel mode gre multipoint # mGRE — πολλά endpoints HUB(config-if)# ip nhrp network-id 1 HUB(config-if)# ip nhrp map multicast dynamic # άσε τα spokes να εγγραφούν HUB(config-if)# ip nhrp redirect # Phase 3: ενεργοποίησε spoke-to-spoke HUB(config-if)# tunnel protection ipsec profile DMVPN-PROF # Δρομολόγηση πάνω από το tunnel (OSPF εδώ). Σε hub, ο τύπος δικτύου έχει σημασία: HUB(config-if)# ip ospf network broadcast
02
Κάθε spoke παίρνει σχεδόν πανομοιότυπο block, συν ένα static NHRP map προς τον hub (τον «next-hop server» του). Αντίγραψέ το σε κάθε κλάδο, αλλάζοντας μόνο το IP του tunnel.
SPOKE(config)# interface Tunnel0 SPOKE(config-if)# ip address 172.16.0.11 255.255.255.0 SPOKE(config-if)# tunnel source GigabitEthernet0/0 SPOKE(config-if)# tunnel mode gre multipoint SPOKE(config-if)# ip nhrp network-id 1 # Το IP tunnel του hub + πραγματικό δημόσιο IP, και εγγράψου σε αυτό: SPOKE(config-if)# ip nhrp nhs 172.16.0.1 nbma 203.0.113.1 multicast SPOKE(config-if)# ip nhrp shortcut # Phase 3: δέξου redirects SPOKE(config-if)# tunnel protection ipsec profile DMVPN-PROF
Το DMVPN έχει δύο επίπεδα διευθύνσεων και το να τα μπερδέψεις είναι το κλασικό λάθος. Η διεύθυνση NBMA είναι το πραγματικό δημόσιο IP στο οποίο στέλνεται το πακέτο· η διεύθυνση tunnel (172.16.x) είναι το overlay πάνω στο οποίο τρέχει το πρωτόκολλο δρομολόγησης. Όλη η δουλειά του NHRP είναι να αντιστοιχίζει tunnel→NBMA. Η παγίδα δρομολόγησης: στον hub, μην αφήσεις το OSPF να κάνει summarise τα routes των spoke ή να αλλάξει next-hops — τα spokes χρειάζονται το IP tunnel του άλλου spoke ως next-hop για να δουλέψουν τα shortcuts του Phase-3. Σε σχέδια point-to-multipoint, πρόσεξε τους τύπους δικτύου OSPF (broadcast στον hub, και ταιριαστό στα spokes) αλλιώς κάνουν flap οι adjacencies.
03
By default η κίνηση spoke-προς-spoke ανεβαίνει στον hub και κατεβαίνει ξανά — ένα hairpin. Το Phase 3 (redirect στον hub, shortcut στα spokes) κάνει το NHRP να επιλύει ένα προσωρινό απευθείας tunnel ώστε ο κλάδος A να φτάνει τον κλάδο B χωρίς τον hub στη διαδρομή.
# Πριν από κάθε κίνηση: υπάρχει μόνο το tunnel του hub. SPOKE-A# show dmvpn 1 172.16.0.1 203.0.113.1 UP static # μόνο hub # Κάνε ping το LAN του spoke B μία φορά -> ο hub κάνει redirect -> το NHRP επιλύει το B απευθείας: SPOKE-A# ping 10.20.0.1 source 10.10.0.1 SPOKE-A# show dmvpn 1 172.16.0.1 203.0.113.1 UP static 1 172.16.0.12 198.51.100.2 UP dynamic # απευθείας στο spoke B!
04
Τρία επίπεδα να επιβεβαιώσεις, με τη σειρά: εγγραφές NHRP, τα SA IPsec που τις προστατεύουν, και τις adjacencies δρομολόγησης πάνω από το tunnel.
HUB# show ip nhrp # έχουν εγγραφεί όλα τα spokes; maps tunnel->NBMA HUB# show dmvpn detail # καταστάσεις peer, crypto, uptime HUB# show crypto ipsec sa | inc peer|pkts # SA up, encaps ανεβαίνουν HUB# show ip ospf neighbor # όλα τα spokes FULL στο tunnel
| Συμπτωμα | Πού να κοιτάξεις |
|---|---|
| Το spoke δεν εγγράφεται ποτέ | Λάθος NHS/NBMA, ή ασυμφωνία network-id. debug nhrp. |
| Εγγράφηκε αλλά καμία κρυπτογράφηση | Ασυμφωνία profile/proposal IPsec — ίδιο με το build δύο sites. |
| Ο hub δουλεύει, καθόλου spoke-to-spoke | Λείπει redirect (hub) / shortcut (spoke), ή next-hop ξαναγραμμένο από τη δρομολόγηση. |
| Η adjacency OSPF κάνει flap | Ασύμφωνοι τύποι δικτύου πάνω από το tunnel mGRE. |
Συμπερασματα
Το να προσθέσεις ένα νέο site σε ένα WAN δεν πρέπει να σημαίνει να αγγίξεις το config του hub. Σχεδιάζω DMVPN και hub-and-spoke overlays σε Cisco και MikroTik όπου ένα νέο spoke είναι σχεδόν copy-paste, τα spokes μπορούν να μιλάνε απευθείας μεταξύ τους, και η δρομολόγηση προσαρμόζεται μόνη της.
Κλεισε μια Discovery Call →