English · Ελληνικά
Το internet θα κουβαλήσει ευχαρίστως πακέτα ανάμεσα στα sites σου — απλώς αρνείται να ξέρει τίποτα για τα ιδιωτικά LAN σου. Αυτό το lab χτίζει την κλασική απάντηση: GRE tunnels που κάνουν τρεις routers να νομίζουν ότι μοιράζονται ένα καλώδιο, OSPF που τρέχει πάνω από αυτά τα tunnels σαν να ήταν φυσικά, και IPsec τυλιγμένο απ' έξω ώστε ο ISP να βλέπει μόνο θόρυβο ESP. Όλα δουλεύουν σε Packet Tracer.
Το Part 13 έχτισε ένα μοντέρνο tunnel IKEv2 ανάμεσα σε δύο γραφεία. Αυτό το lab κλιμακώνει την ιδέα σε ένα πραγματικό hub-and-spoke WAN — και προσθέτει το συστατικό που αλλάζει τα πάντα: ένα routing protocol πάνω από τα tunnels. Το plain IPsec κουβαλά πακέτα ανάμεσα σε subnets που απαριθμείς με το χέρι· το GRE σου δίνει ένα εικονικό interface, και ό,τι έχει interface μπορεί να τρέξει OSPF. Πρόσθεσε ένα subnet υποκαταστήματος και κανείς δεν πειράζει crypto ACLs — το OSPF απλώς το μαθαίνει.
Το μυστικό όπλο του lab είναι το ISP cloud στη μέση: τρεις routers που ξέρουν μόνο τα δημόσια /30. Το πρώτο σου end-to-end ping πρέπει να αποτύχει — το internet δεν κάνει route RFC1918 — και αυτή η αποτυχία είναι το μάθημα πάνω στο οποίο χτίζεται όλο το υπόλοιπο. Μετά το GRE περνά λαθραία την ιδιωτική κίνηση μέσα σε δημόσιους φακέλους, και το IPsec κάνει τους φακέλους αδιαφανείς. Κάθε εντολή εδώ είναι συμβατή με Packet Tracer 8.x (crypto maps, όχι τα VTI profiles του part 13 — θα το επισημάνουμε).
01
Ο router(s) ISP παίρνει τα δημόσια /30 και τίποτα άλλο — ποτέ κανένα route προς οποιοδήποτε δίκτυο 192.168. Απόδειξε ότι το πρόβλημα υπάρχει πριν το λύσεις.
# Router ISP — τρία πόδια, τρία δημόσια /30. Κανένα static. Κανένα OSPF. Τίποτα. ISP(config)# interface GigabitEthernet0/0 ISP(config-if)# ip address 198.51.100.1 255.255.255.252 ← προς HQ ISP(config)# interface GigabitEthernet0/1 ISP(config-if)# ip address 203.0.113.1 255.255.255.252 ← προς BR1 ISP(config)# interface GigabitEthernet0/2 ISP(config-if)# ip address 192.0.2.1 255.255.255.252 ← προς BR2 # Κάθε site: διεύθυνση WAN + ένα default προς τον ISP (όπως κάθε router πελάτη) HQ(config)# interface GigabitEthernet0/0 HQ(config-if)# ip address 198.51.100.2 255.255.255.252 HQ(config)# ip route 0.0.0.0 0.0.0.0 198.51.100.1 # Η στιγμή της αλήθειας — το δημόσιο δουλεύει, το ιδιωτικό δεν μπορεί: HQ# ping 203.0.113.2 ← το δημόσιο WAN του BR1 !!!!! Success rate is 100 percent HQ# ping 192.168.20.1 ← το LAN του BR1 ..... Success rate is 0 percent ← σωστά! Ο ISP δεν έχει route και θα έριχνε RFC1918 έτσι κι αλλιώς
Τα περισσότερα labs VPN κλέβουν με ένα crossover καλώδιο ανάμεσα στους δύο routers, και οι μαθητές φεύγουν χωρίς να έχουν δει ποτέ τον πραγματικό περιορισμό: το underlay κάνει route μόνο ό,τι ξέρει. Με ένα πραγματικό cloud στη μέση, κάθε μετέπειτα αστοχία διαγιγνώσκεται σωστά — «είναι πρόβλημα underlay (μπορούν τα άκρα του tunnel να επικοινωνήσουν μεταξύ τους;) ή πρόβλημα overlay (είναι χαλασμένο το tunnel/OSPF;)». Αυτή η ερώτηση δύο επιπέδων είναι όλο το μοντέλο troubleshooting για VPN, SD-WAN, και κάθε τεχνολογία overlay που θα αγγίξεις ποτέ.
02
Ένα tunnel interface έχει source (το δικό μου public IP), destination (το δικό σου public IP), και τη δική του ιδιωτική διεύθυνση. Πακέτα που μπαίνουν σε αυτό τυλίγονται σε έναν δημόσιο φάκελο που ο ISP μπορεί να κάνει route.
HQ(config)# interface Tunnel10 HQ(config-if)# ip address 172.16.0.1 255.255.255.252 HQ(config-if)# tunnel source GigabitEthernet0/0 HQ(config-if)# tunnel destination 203.0.113.2 HQ(config-if)# ip mtu 1400 HQ(config-if)# ip tcp adjust-mss 1360 BR1(config)# interface Tunnel10 BR1(config-if)# ip address 172.16.0.2 255.255.255.252 BR1(config-if)# tunnel source GigabitEthernet0/0 BR1(config-if)# tunnel destination 198.51.100.2 BR1(config-if)# ip mtu 1400 BR1(config-if)# ip tcp adjust-mss 1360 # Το εικονικό καλώδιο είναι up — κάνε ping μέσα από αυτό: HQ# ping 172.16.0.2 !!!!! Success rate is 100 percent # Ο ISP κουβάλησε αυτό το ping — ως unicast ανάμεσα σε δύο ΔΗΜΟΣΙΕΣ διευθύνσεις, # με το ιδιωτικό πακέτο κρυμμένο μέσα. Αυτό είναι όλο το κόλπο του GRE.
Το GRE κλέβει 24 bytes και το IPsec θα πάρει ~58 ακόμα· ένα πακέτο πλήρους μεγέθους 1500 bytes δεν χωράει πια και είτε κατακερματίζεται είτε — με DF set, που το βάζει κάθε σύγχρονο TCP — ρίχνεται σιωπηλά. Το κλασικό σύμπτωμα: το ping δουλεύει, το SSH δουλεύει, αλλά οι σελίδες HTTPS κρεμάνε και τα αντίγραφα αρχείων κολλάνε στο 0%. Τα μικρά πακέτα χωράνε, τα πλήρη segments όχι. Το ip mtu 1400 + ip tcp adjust-mss 1360 σε κάθε tunnel interface, και στα δύο άκρα αποτρέπει όλη αυτή την κατηγορία συμπτωμάτων. Όταν κάποιο overlay «δουλεύει αλλά τα μεγάλα πράγματα κρεμάνε», το MTU είναι ένοχο μέχρι αποδείξεως του εναντίου.
03
Να το κέρδος από την επιλογή του GRE: τα tunnels είναι interfaces, οπότε το OSPF τρέχει πάνω τους όπως πάνω σε οποιοδήποτε καλώδιο. Τα υποκαταστήματα μαθαίνουν τα subnets το ένα του άλλου χωρίς καμία απαρίθμηση.
HQ(config)# router ospf 1 HQ(config-router)# router-id 10.10.10.10 HQ(config-router)# passive-interface GigabitEthernet0/1 ← το LAN HQ(config-router)# network 172.16.0.0 0.0.0.7 area 0 ← και τα δύο tunnels HQ(config-router)# network 192.168.10.0 0.0.0.255 area 0 BR1(config)# router ospf 1 BR1(config-router)# router-id 20.20.20.20 BR1(config-router)# passive-interface GigabitEthernet0/1 BR1(config-router)# network 172.16.0.0 0.0.0.3 area 0 BR1(config-router)# network 192.168.20.0 0.0.0.255 area 0 # ΠΟΤΕ μη βάλεις τα /30 του WAN ή το default route μέσα στο OSPF εδώ — # το underlay πρέπει να παραμείνει αδαές για το overlay (δες την παγίδα παρακάτω). BR1# show ip route ospf O 192.168.10.0/24 [110/1001] via 172.16.0.1, 00:01:12, Tunnel10 O 192.168.30.0/24 [110/2001] via 172.16.0.1, 00:01:02, Tunnel10 ← LAN του BR2, μέσω του hub BR1# ping 192.168.30.1 source 192.168.20.1 !!!!! ← branch-to-branch, hairpinned μέσω HQ. Όλο το WAN δουλεύει.
Αν το OSPF μάθει ποτέ ένα route προς τον ίδιο τον προορισμό του tunnel (το δημόσιο 203.0.113.2 του BR1) μέσα από το ίδιο το tunnel, ο router προσπαθεί να παραδώσει τους φακέλους του tunnel μέσα στο tunnel — και το IOS ρίχνει το interface με %TUN-5-RECURDOWN: Tunnel10 temporarily disabled due to recursive routing. Το tunnel φλαπάρει για πάντα: down → το route αποσύρεται → up → το route ξαναμαθαίνεται → down. Ο κανόνας που το αποτρέπει: τα άκρα του tunnel φτάνονται μόνο μέσω του underlay (το static default), και τα prefixes του underlay δεν μπαίνουν ποτέ στο routing protocol του overlay. Αν δεις ποτέ RECURDOWN, διαφήμισες κάτι που δεν έπρεπε.
04
Το GRE είναι ένας διάφανος φάκελος — ο ISP μπορεί να διαβάσει κάθε πακέτο LAN μέσα του. Ένα IPsec transform σε transport mode κρυπτογραφεί ακριβώς το stream GRE ανάμεσα σε κάθε ζεύγος δημόσιων άκρων.
# Phase 1 — πανομοιότυπη policy και στα δύο άκρα HQ(config)# crypto isakmp policy 10 HQ(config-isakmp)# encryption aes 256 HQ(config-isakmp)# hash sha HQ(config-isakmp)# authentication pre-share HQ(config-isakmp)# group 5 HQ(config)# crypto isakmp key N0ctis-Lab-Key address 203.0.113.2 # Phase 2 — transport mode: προστατεύουμε μόνο το GRE router-to-router HQ(config)# crypto ipsec transform-set TS-GRE esp-aes 256 esp-sha-hmac HQ(cfg-crypto-trans)# mode transport # Ενδιαφέρουσα κίνηση = το ίδιο το stream GRE (protocol 47) HQ(config)# ip access-list extended VPN-BR1 HQ(config-ext-nacl)# permit gre host 198.51.100.2 host 203.0.113.2 HQ(config)# crypto map CMAP 10 ipsec-isakmp HQ(config-crypto-map)# set peer 203.0.113.2 HQ(config-crypto-map)# set transform-set TS-GRE HQ(config-crypto-map)# match address VPN-BR1 # (map entry 20 = το ίδιο για BR2, μετά εφάρμοσέ το μία φορά:) HQ(config)# interface GigabitEthernet0/0 HQ(config-if)# crypto map CMAP # Καθρέφτισε τα πάντα στο BR1 (peer/ACL αντεστραμμένα), μετά επαλήθευσε ότι κινούνται οι μετρητές: HQ# show crypto ipsec sa | include pkts #pkts encaps: 214, #pkts encrypt: 214 #pkts decaps: 209, #pkts decrypt: 209 ← OSPF hellos κρυπτογραφούνται, ζωντανά
Σε πραγματικό IOS/IOS-XE θα παρέκαμπτες εντελώς τα crypto maps: θα έχτιζες ένα crypto ipsec profile και θα έβαζες tunnel protection ipsec profile X κατευθείαν στο tunnel interface — η προσέγγιση του part-13, επεκταμένη ανά tunnel. Το Packet Tracer δεν υποστηρίζει tunnel protection, οπότε αυτό το lab χρησιμοποιεί το παλιότερο pattern crypto-map-που-ταιριάζει-GRE, που είναι επίσης ακριβώς αυτό που θα βρεις σε χιλιάδες routers παραγωγής που επιβιώνουν ακόμα. Το να μάθεις και τα δύο ιδιώματα σημαίνει ότι μπορείς να διαβάζεις παλιά configs και να γράφεις μοντέρνα. (Σε PT, θυμήσου ότι το 2911 χρειάζεται το security license: license boot module c2900 technology-package securityk9, accept, save, reload.)
05
Κάθε αστοχία σε ένα κρυπτογραφημένο overlay βρίσκεται σε ένα από τέσσερα επίπεδα: προσβασιμότητα underlay, crypto, tunnel, routing. Τέσταρέ τα με αυτή τη σειρά, πάντα.
| Εντολη | Επιπεδο που αποδεικνυει |
|---|---|
| ping <public IP peer> | 1 — Underlay: μπορούν καν τα άκρα να επικοινωνήσουν μεταξύ τους; |
| show crypto isakmp sa | 2 — Phase 1 up; Η κατάσταση πρέπει να είναι QM_IDLE / ACTIVE. |
| show crypto ipsec sa | 2 — Phase 2: οι μετρητές encaps/decaps πρέπει και οι δύο να ανεβαίνουν. |
| show interface Tunnel10 | 3 — Tunnel up/up; (up/down = source/destination απρόσιτο) |
| show ip ospf neighbor | 4 — Routing overlay: FULL σε κάθε tunnel. |
| show ip route ospf | 4 — Τα απομακρυσμένα LAN παρόντα, next-hop = διεύθυνση tunnel. |
Η σειρά έχει σημασία επειδή κάθε επίπεδο εξαρτάται από το προηγούμενο: το OSPF δεν μπορεί να σχηματιστεί χωρίς το tunnel, το tunnel δεν κουβαλά τίποτα αν το crypto τρώει τα πακέτα, και το crypto δεν μπορεί να διαπραγματευτεί χωρίς προσβασιμότητα underlay. Όταν η κίνηση υποκαταστήματος πεθαίνει στις 3 το πρωί, ξεκίνα από το επίπεδο 1 και ανέβα — ποτέ μην ξεκινάς από το επίπεδο που υποψιάζεσαι.
Ξεκίνα συνεχές ping BR1-LAN → BR2-LAN, μετά διάγραψε το καλώδιο HQ–ISP. Όλα πεθαίνουν — η ειλικρινής αδυναμία του hub-and-spoke, και τα δύο tunnels περνάνε μέσω HQ. Ξανασύνδεσε και δες τα επίπεδα να ξαναχτίζονται με σειρά εξάρτησης: το ISAKMP επαναδιαπραγματεύεται, τα tunnels επιστρέφουν σε up/up, το OSPF ξανα-FULL, τα pings συνεχίζουν — περίπου 40 δευτερόλεπτα σε PT, κυριαρχούμενα από το dead-interval του OSPF. Μετά κάνε την ερώτηση σχεδιασμού που διδάσκει αυτή η άσκηση: τι θα χρειαζόταν για να επιβιώσει το BR1→BR2 από μια αστοχία HQ; (Ένα tunnel BR1–BR2 — που γυρνά το hub-and-spoke σε τρίγωνο. Στον πραγματικό κόσμο σε κλίμακα: DMVPN ή SD-WAN, και τα δύο ακριβώς το pattern αυτού του lab με το χτίσιμο tunnel αυτοματοποιημένο.)
06
Το RouterOS χτίζει τον πανομοιότυπο σχεδιασμό — ένα μεικτό fleet συνεργάζεται μια χαρά, και εμείς τρέχουμε αρκετά.
| Αυτο το lab (Cisco) | MikroTik / RouterOS |
|---|---|
| interface Tunnel10 (GRE) | /interface gre add remote-address=… |
| ip mtu 1400 + adjust-mss | mtu= στο GRE interface + κανόνας mangle change-mss |
| OSPF πάνω από tunnels | /routing ospf interface-template στα gre interfaces |
| crypto map + isakmp key | /ip ipsec policy + peer + identity (ή ipsec-secret= κατευθείαν στο GRE interface — one-liner) |
| show crypto ipsec sa | /ip ipsec installed-sa print (κοίτα τους μετρητές bytes) |
| DMVPN (η κλιμακωμένη έκδοση) | Κανένα άμεσο αντίστοιχο — WireGuard mesh ή ZeroTier γεμίζουν το κενό |
Συμπερασματα
tunnel protection με ένα IPsec profile. Μάθε και τα δύο.Τα WAN GRE-over-IPsec αποτυγχάνουν σχεδόν πάντα με τους ίδιους δύο τρόπους: MTU που κανείς δεν μέτρησε σωστά, και failover που κανείς δεν τεστάρισε στην πράξη. Τα χτίζω σε Cisco και MikroTik με dynamic routing πάνω από τα tunnels, MTU σωστό από την αρχή, και failover αποδεδειγμένο τραβώντας ένα link, όχι υποτιθέμενο.
Κλεισε μια Discovery Call →