Πίσω στο blog

English  ·  Ελληνικά

Cisco / IOS  ·  Οδηγος  ·  Ιουλιος 2026

Cisco IOS
Site-to-Site IPsec VPN

Δύο γραφεία, ένα κρυπτογραφημένο tunnel μέσω του δημόσιου internet — σαν να μοιράζονταν ένα switch. Το χτίζουμε με τον μοντέρνο τρόπο: ένα route-based tunnel IKEv2 (VTI) πάνω στο οποίο μπορείς να κάνεις route και να παρακολουθείς σαν κάθε interface, όχι ένα legacy crypto-map που δεν μπορείς. Με την παγίδα NAT-exemption που χαλάει κάθε πρώτη προσπάθεια.

Cisco IOS IPsec IKEv2 VPN VTI Site-to-Site CCNP

Εδρα · R1 10.1.0.0/16 Υποκαταστημα · R2 10.2.0.0/16 Internet (μη εμπιστο) Tunnel0 · IKEv2 + ESP-AES-256 · 169.254.0.0/30 Πραγματική κίνηση ανάμεσα σε 10.1.x και 10.2.x ταξιδεύει στο κρυπτογραφημένο tunnel — routed, όχι crypto-ACL.

Ένα site-to-site VPN κάνει δύο LAN υποκαταστημάτων να συμπεριφέρονται σαν ένα δίκτυο πάνω στο ανοιχτό internet, με τα πάντα ανάμεσα στους routers κρυπτογραφημένα. Το IPsec κάνει το crypto σε δύο φάσεις: το IKE (θα χρησιμοποιήσουμε το μοντέρνο IKEv2) κάνει authenticate τους peers και διαπραγματεύεται κλειδιά, μετά το ESP κρυπτογραφεί τα πραγματικά δεδομένα. Ο παλιός τρόπος να κατευθύνεις κίνηση μέσα του ήταν ένα crypto map με ένα ACL «ποια κίνηση να κρυπτογραφηθεί» κολλημένο στο interface WAN — άκαμπτο, δύσκολο να κάνεις route πάνω του, και μαρτύριο στο troubleshooting.

Ο μοντέρνος τρόπος, και αυτό που χτίζει αυτό το post, είναι ένα route-based VPN χρησιμοποιώντας Virtual Tunnel Interface (VTI). Το tunnel γίνεται ένα πραγματικό interface Tunnel0: δείχνεις ένα route προς αυτό, ή ακόμα και τρέχεις OSPF πάνω του, και ό,τι στέλνει προς τα εκεί ο πίνακας routing κρυπτογραφείται αυτόματα. Συμπεριφέρεται σαν το interface που είναι — το βλέπεις στο show ip interface brief, το παρακολουθείς, και κάνεις dynamic routing. Έτσι πρέπει να χτίζονται τα site-to-site VPN σε κάθε μοντέρνο IOS. Το ένα πράγμα που χαλάει κάθε πρώτη προσπάθεια — το NAT που τρώει την κίνηση VPN — παίρνει τη δική του ενότητα.

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

01

Phase 1 — Η Χειραψια IKEv2

Πρώτα οι δύο routers πρέπει να συμφωνήσουν πώς θα προστατέψουν την ίδια τη διαπραγμάτευση και να αποδείξουν ποιοι είναι. Proposal (αλγόριθμοι), policy, keyring (το κοινό μυστικό), και ένα profile που δένει την ταυτότητα του peer με εκείνο το κλειδί.

IOS (R1 · Εδρα) — IKEv2 proposal, policy, keyring, profile
# 1. Τι crypto προσφέρουμε για να προστατέψουμε το κανάλι IKE;
R1(config)# crypto ikev2 proposal PROP-1
R1(config-ikev2-proposal)# encryption aes-cbc-256
R1(config-ikev2-proposal)# integrity sha256
R1(config-ikev2-proposal)# group 14          # DH group 14 (2048-bit)
R1(config-ikev2-proposal)# exit
R1(config)# crypto ikev2 policy POL-1
R1(config-ikev2-policy)# proposal PROP-1
R1(config-ikev2-policy)# exit

# 2. Το pre-shared key, δεμένο με το public IP του PEER
R1(config)# crypto ikev2 keyring KR-1
R1(config-ikev2-keyring)# peer BRANCH
R1(config-ikev2-keyring-peer)# address 198.51.100.2
R1(config-ikev2-keyring-peer)# pre-shared-key S3cr3t-VPN-Key!
R1(config-ikev2-keyring-peer)# exit

# 3. Το profile: ταίριαξε τον peer, κάνε authenticate και προς τις δύο πλευρές με το keyring
R1(config)# crypto ikev2 profile IKEV2-PROF
R1(config-ikev2-profile)# match identity remote address 198.51.100.2 255.255.255.255
R1(config-ikev2-profile)# authentication local pre-share
R1(config-ikev2-profile)# authentication remote pre-share
R1(config-ikev2-profile)# keyring local KR-1
R1(config-ikev2-profile)# exit
⚠ Παγιδα — Και οι Δυο Πλευρες Πρεπει να Συμφωνουν, Ακριβως

Το IPsec δεν συγχωρεί ασυμμετρία. Το proposal (encryption, integrity, DH group), το pre-shared key, και οι διευθύνσεις identity πρέπει να ταιριάζουν και στους δύο routers — καθρεφτισμένα για τη διεύθυνση peer, πανομοιότυπα για το crypto. Μία παράμετρος που δεν ταιριάζει και το Phase 1 δεν ολοκληρώνεται ποτέ· το show crypto ikev2 sa δεν δείχνει SA και τα logs αναφέρουν αστοχία proposal ή authentication. Όταν ένα tunnel δεν ανεβαίνει, κάνε diff τα δύο configs γραμμή προς γραμμή πριν από οτιδήποτε άλλο — σχεδόν πάντα είναι ένα typo ενός χαρακτήρα στο key ή mismatch σε group/hash.

02

Phase 2 — Η Κρυπτογραφηση Δεδομενων ESP

Τώρα όρισε πώς κρυπτογραφούνται τα πραγματικά δεδομένα (το transform set) και τύλιξέ το, μαζί με το profile IKEv2, σε ένα IPsec profile που θα αναφέρει το tunnel interface.

IOS (R1) — transform set + IPsec profile
# Πώς προστατεύονται τα ΔΕΔΟΜΕΝΑ — AES-256 + SHA-256 HMAC, tunnel mode
R1(config)# crypto ipsec transform-set TS-1 esp-aes 256 esp-sha256-hmac
R1(cfg-crypto-trans)# mode tunnel
R1(cfg-crypto-trans)# exit

# Πακετάρισε transform set + IKEv2 profile σε ένα IPsec profile.
# Με αυτό θα «προστατεύεται» το Tunnel interface.
R1(config)# crypto ipsec profile IPSEC-PROF
R1(ipsec-profile)# set transform-set TS-1
R1(ipsec-profile)# set ikev2-profile IKEV2-PROF
R1(ipsec-profile)# exit

03

Το Tunnel Interface (VTI)

Εδώ είναι που το route-based νικά το crypto-map. Το tunnel γίνεται ένα πραγματικό interface με δικό του IP, source και destination, και IPsec protection δεμένο πάνω του. Κάνε route κίνηση προς αυτό και κρυπτογραφείται — χωρίς ACL crypto.

IOS (R1) — το VTI, μετα καν' το route το απομακρυσμενο LAN πανω του
R1(config)# interface Tunnel0
R1(config-if)# ip address 169.254.0.1 255.255.255.252   # μικροσκοπικό tunnel /30
R1(config-if)# tunnel source GigabitEthernet0/0        # το δικό μας interface WAN
R1(config-if)# tunnel destination 198.51.100.2         # public IP του peer
R1(config-if)# tunnel mode ipsec ipv4
R1(config-if)# tunnel protection ipsec profile IPSEC-PROF
R1(config-if)# exit

# Κατεύθυνε το ΑΠΟΜΑΚΡΥΣΜΕΝΟ LAN μέσω του tunnel (static, ή τρέξε OSPF πάνω από Tunnel0)
R1(config)# ip route 10.2.0.0 255.255.0.0 Tunnel0
R1(config)# end

# Το R2 είναι η καθρεφτισμένη εικόνα: tunnel dest 203.0.113.1, ip 169.254.0.2,
# route 10.1.0.0/16 προς Tunnel0, ίδιο crypto και ταιριαστό key.
💡 Pro Tip — Κανε Route Πανω απο το Tunnel Σαν Καθε Link

Επειδή το Tunnel0 είναι πραγματικό interface, δεν περιορίζεσαι σε static routes. Τρέξε OSPF πάνω του και τα δύο sites ανταλλάσσουν routes δυναμικά — πρόσθεσε τρίτο subnet σε οποιαδήποτε άκρη και είναι προσβάσιμο με μηδέν αλλαγές VPN. Μπορείς επίσης να δείξεις ένα probe IP SLA μέσα στο tunnel και να κάνεις failover σε ένα backup tunnel στην απώλεια, ακριβώς όπως το dual-WAN. Αυτή η δυνατότητα σύνθεσης είναι όλος ο λόγος που τα route-based VPN αντικατέστησαν τα crypto maps: το tunnel παίζει με τους ίδιους κανόνες με κάθε άλλο interface που ήδη ξέρεις.

04

Η Παγιδα NAT-Exemption

Ο λόγος νούμερο ένα που ένα φρεσκοχτισμένο tunnel «ανεβαίνει αλλά τίποτα δεν περνάει». Το edge σου κάνει ήδη PAT το LAN προς το internet — και θα κάνει ευχαρίστως NAT και την κίνηση προς το VPN, αλλοιώνοντάς τη πριν φτάσει στο tunnel. Πρέπει να εξαιρέσεις την κίνηση site-to-site από το NAT.

IOS (R1) — εξαιρεσε την κινηση VPN απο το ACL NAT
# Ο υπάρχων κανόνας PAT από το post του NAT χρησιμοποιεί ACL 1 για «ποιος κάνει NAT».
# Πρέπει να το κάνουμε να κάνει NAT κίνηση προς internet αλλά ΟΧΙ κίνηση site-to-site.

R1(config)# ip access-list extended NAT-LIST
# DENY (εξαίρεσε) κίνηση προς το απομακρυσμένο site — πρέπει να έρθει ΠΡΩΤΟ
R1(config-ext-nacl)# deny   ip 10.1.0.0 0.0.255.255 10.2.0.0 0.0.255.255
# PERMIT ό,τι άλλο για να γίνει NAT προς το internet
R1(config-ext-nacl)# permit ip 10.1.0.0 0.0.255.255 any
R1(config-ext-nacl)# exit

R1(config)# ip nat inside source list NAT-LIST interface GigabitEthernet0/0 overload
# Τώρα η κίνηση προς 10.2.x παρακάμπτει το NAT (μπαίνει στο tunnel ανέγγιχτη)·
# όλα τα υπόλοιπα ακόμα κάνουν PAT προς το internet κανονικά.
⚠ Παγιδα — Η Σειρα Εχει Σημασια, και Καθαρισε Παλιες Μεταφρασεις

Η γραμμή deny (εξαίρεση) πρέπει να κάθεται πάνω από το permit … any — κερδίζει το πρώτο match (οι κανόνες ACL ισχύουν και εδώ). Αν το permit είναι πρώτο, η κίνηση VPN κάνει NAT και εξαφανίζεται μέσα στο tunnel αλλοιωμένη. Και αν το tunnel ήταν ήδη up και έκανε NAT πριν το διορθώσεις, μπαγιάτικες μεταφράσεις παραμένουν: τρέξε clear ip nat translation * μετά την αλλαγή αλλιώς θα ορκίζεσαι ότι ακόμα δεν δουλεύει. Αυτή η μία παγίδα ευθύνεται για τα περισσότερα tickets «το tunnel είναι up αλλά δεν μπορώ να κάνω ping μέσα από αυτό».

05

Επαληθευσε το Tunnel Ασφαλες να το Τρεξεις

Το IPsec έχει δύο SA να επιβεβαιώσεις — Phase 1 (IKEv2) και Phase 2 (IPsec) — συν το interface και τους μετρητές πακέτων κρυπτογράφησης. Έλεγξέ τα με αυτή τη σειρά· το σπάσιμο είναι πάντα σε ένα συγκεκριμένο επίπεδο.

IOS — το περπατημα υγειας του tunnel
# 1. Το Phase 1 up; Ψάξε για READY.
R1# show crypto ikev2 sa
 Tunnel-id  Local            Remote           fvrf/ivrf  Status
 1          203.0.113.1/500  198.51.100.2/500 none/none  READY

# 2. Το Phase 2 up και κρυπτογραφεί πραγματικά; τα pkts encaps/decaps πρέπει να ανεβαίνουν.
R1# show crypto ipsec sa | include pkts|peer|ident
   local  ident (addr/mask): (10.1.0.0/255.255.0.0)
   remote ident (addr/mask): (10.2.0.0/255.255.0.0)
   #pkts encaps: 4021, #pkts decaps: 3998

# 3. Το tunnel interface up/up;
R1# show ip interface brief | include Tunnel
Tunnel0   169.254.0.1   YES  manual  up   up

# 4. End-to-end, με source το LAN (όχι το WAN IP του router!)
R1# ping 10.2.0.1 source 10.1.0.1
ΣυμπτωμαΠου να κοιταξεις
Κανένα IKEv2 SA / όχι READYMismatch Phase 1 — proposal, key, ή διεύθυνση identity. debug crypto ikev2.
IKEv2 READY αλλά κανένα IPsec SAMismatch transform-set, ή κακό config στο Tunnel0.
SA up, το encaps ανεβαίνει, το decaps 0Πρόβλημα κίνησης επιστροφής — η ΑΠΕΝΑΝΤΙ πλευρά δεν στέλνει πίσω (το route ή το NAT της).
SA up, καθόλου pktsΤο NAT τρώει την κίνηση (section 04), ή κανένα route δεν δείχνει στο Tunnel0.

06

MikroTik ↔ Cisco — Ιδιο Tunnel, Διαφορετικα Μενου

Το IPsec του RouterOS έχει την ίδια δομή δύο φάσεων· η ορολογία ευθυγραμμίζεται μόλις δεις τη χαρτογράφηση.

MikroTik / RouterOSCisco IOS
/ip ipsec profile (phase 1)crypto ikev2 proposal + policy
/ip ipsec peer + identitycrypto ikev2 profile + keyring
/ip ipsec proposal (phase 2)crypto ipsec transform-set
/ip ipsec policy (ή IPsec στο interface)crypto ipsec profile στο Tunnel0 (VTI)
Κανόνας Src-NAT με accept πάνω από masqueradeNAT exemption: γραμμή deny πάνω από permit
/ip ipsec active-peersshow crypto ikev2 sa
💡 Σημειωση Legacy — Τα Crypto Maps Ακομα Υπαρχουν

Θα συναντήσεις παλιότερα configs (και μερικές συσκευές peer, μαζί με κάποια firewalls) που μιλάνε μόνο policy-based IPsec: ένα crypto map με ένα ACL «ταίριαξε αυτή την κίνηση» εφαρμοσμένο στο interface WAN, χωρίς tunnel interface. Δουλεύει, αλλά δεν μπορείς να κάνεις dynamic routing πάνω του, το monitoring είναι αδέξιο, και το troubleshooting χειρότερο. Όταν κληρονομείς ένα, συνήθως αξίζει να μεταναστεύσεις σε VTI — εκτός αν η απέναντι άκρη είναι συσκευή μόνο-policy-based, οπότε ταιριάζεις το στιλ της. Για οτιδήποτε greenfield και Cisco-προς-Cisco, το route-based VTI όπως εδώ είναι το default.

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

  1. Το IPsec είναι δύο φάσεις: το IKEv2 κάνει authenticate τους peers και κλειδώνει το κανάλι· το ESP κρυπτογραφεί τα δεδομένα. Και οι δύο πλευρές πρέπει να συμφωνούν στο crypto ακριβώς — μία παράμετρος που δεν ταιριάζει και τίποτα δεν ανεβαίνει.
  2. Χτίσε route-based (VTI), όχι crypto-map. Το tunnel γίνεται πραγματικό interface Tunnel0 πάνω στο οποίο κάνεις route, παρακολουθείς, και τρέχεις OSPF — χωρίς ACL «interesting traffic».
  3. Τα αντικείμενα crypto, με σειρά: IKEv2 proposal/policy → keyring (το PSK, δεμένο με το IP του peer) → profile IKEv2 → transform-set IPsec → profile IPsec → σύνδεσε στο tunnel.
  4. Εξαίρεσε την κίνηση VPN από το NAT. Το PAT του edge σου θα αλλοιώσει την κίνηση site-to-site εκτός αν μια γραμμή deny — τοποθετημένη πάνω από το permit — αποκλείει τους απομακρυσμένους προορισμούς LAN. Αυτό χαλάει σχεδόν κάθε πρώτη προσπάθεια.
  5. Τα μη επικαλυπτόμενα subnets είναι υποχρεωτικά. Δύο sites και τα δύο στο 192.168.1.0/24 δεν μπορούν να γεφυρωθούν από ένα routed VPN. Σχεδίασε το address space πριν το tunnel.
  6. Επαλήθευσε επίπεδο προς επίπεδο: IKEv2 SA READY → IPsec SA με ανεβαίνοντα encaps/decaps → Tunnel0 up/up → ένα ping με source το LAN. Η αστοχία είναι πάντα σε ένα αναγνωρίσιμο επίπεδο.
  7. Σύνθεσε με το υπόλοιπο της σειράς. Κάνε route με OSPF, κάνε failover σε backup tunnel με IP SLA, φίλτραρέ το με ένα zone-pair — γιατί ένα VTI είναι απλώς ένα ακόμα interface.

Συνδεεις δυο sites — γραφειο και αποθηκη, εδρα και βιλα — στην Κρητη;

Τα site-to-site VPN που στηρίζονται σε static crypto maps και χειροκίνητες εξαιρέσεις NAT είναι εύθραυστα εξ ορισμού. Τα χτίζω ώστε να κάνουν dynamic routing και να κάνουν failover καθαρά αντ' αυτού, τεκμηριωμένα και παρακολουθούμενα σαν κάθε άλλο production link.

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