English · Ελληνικά
Τα πραγματικά δίκτυα είναι μεικτά. Η έδρα έχει ένα Cisco ISR που άφησε ο τελευταίος integrator· το νέο υποκατάστημα πήρε ένα MikroTik hEX γιατί κοστίζει το ένα δέκατο. Ακόμα χρειάζονται ένα κρυπτογραφημένο IPsec tunnel ανάμεσά τους. Αυτό είναι το ακριβές build — IKEv2 και στα δύο, οι τιμές proposal που πρέπει να ευθυγραμμιστούν στην τελεία, και το ένα εννοιολογικό mismatch (route-based vs policy-based) που χαλάει το πρώτο απόγευμα σε όλους.
Το IPsec είναι πρότυπο, οπότε ένα Cisco router και ένα MikroTik θα χτίσουν tunnel — το πρωτόκολλο δεν νοιάζεται ποιος έφτιαξε τα boxes. Αυτό που ρίχνει τον κόσμο είναι ότι οι δύο vendors εκθέτουν την ίδια διαπραγμάτευση δύο φάσεων με εντελώς διαφορετικές λέξεις, και προεπιλέγουν διαφορετικά στιλ tunnel. Το μοντέρνο default της Cisco είναι route-based (ένα VTI πάνω στο οποίο κάνεις route)· το default του MikroTik είναι policy-based (μια policy που λέει «η κίνηση που ταιριάζει src/dst κρυπτογραφείται»). Ανάμειξέ τα απρόσεκτα και η Phase 1 ανεβαίνει ενώ η κίνηση δεν πάει πουθενά.
Αυτό το build το κρατά policy-based και στις δύο άκρες — τον μικρότερο κοινό παρονομαστή που μιλάει κάθε firewall ή router, και το λιγότερο απρόσμενο όταν η άλλη πλευρά είναι MikroTik. Χρησιμοποιούμε IKEv2, AES-256/SHA-256/DH-14 με PFS, ένα ταιριασμένο ζευγάρι traffic selectors (10.1.0.0/16 ↔ 10.2.0.0/16), και τη διόρθωση NAT-exemption και στους δύο routers. Κάθε τιμή που πρέπει να είναι πανομοιότυπη επισημαίνεται ρητά, γιατί το IPsec αποτυγχάνει σιωπηλά και χωρίς βοήθεια όταν κάποια δεν είναι.
00
Πριν πληκτρολογήσεις οτιδήποτε, κράτα τα δύο λεξιλόγια δίπλα-δίπλα. Ό,τι έρχεται μετά είναι απλώς να γεμίσεις αυτές τις γραμμές με ταιριαστές τιμές.
| Εννοια | Cisco IOS |
|---|---|
| Phase 1 crypto (IKE) | crypto ikev2 proposal + policy |
| Peer + PSK | crypto ikev2 keyring + profile |
| Phase 2 crypto (ESP) | crypto ipsec transform-set |
| Τι κρυπτογραφείται | crypto map ACL (policy) / route (VTI) |
| NAT exemption | deny line πάνω από permit στο NAT ACL |
| Δες ενεργό tunnel | show crypto ikev2 sa |
| Εννοια | MikroTik RouterOS v7 |
|---|---|
| Phase 1 crypto (IKE) | /ip ipsec profile |
| Peer + PSK | /ip ipsec peer + /ip ipsec identity |
| Phase 2 crypto (ESP) | /ip ipsec proposal |
| Τι κρυπτογραφείται | /ip ipsec policy (src/dst address) |
| NAT exemption | κανόνας accept στο /ip firewall nat πάνω από masquerade |
| Δες ενεργό tunnel | /ip ipsec active-peers print |
01
Χρησιμοποιούμε σκόπιμα ένα crypto map εδώ αντί για VTI, γιατί ένας policy-based peer είναι το λιγότερο απρόσμενο πράγμα να δώσεις σε ένα MikroTik. Ίδια τέσσερα αντικείμενα crypto με το post του VTI, τερματισμένα με crypto map στο interface WAN.
# --- Phase 1: IKEv2 proposal / policy (πρέπει να ταιριάζει με το profile του MikroTik) --- R1(config)# crypto ikev2 proposal PROP-MT R1(config-ikev2-proposal)# encryption aes-cbc-256 R1(config-ikev2-proposal)# integrity sha256 R1(config-ikev2-proposal)# group 14 R1(config)# crypto ikev2 policy POL-MT R1(config-ikev2-policy)# proposal PROP-MT # --- Peer + pre-shared key (identity = public IP υποκαταστήματος) --- R1(config)# crypto ikev2 keyring KR-MT 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-Cross-Vendor! R1(config)# crypto ikev2 profile PROF-MT 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-MT # --- Phase 2: transform set + PFS (ταιριάζει με το proposal του MikroTik) --- R1(config)# crypto ipsec transform-set TS-MT esp-aes 256 esp-sha256-hmac R1(cfg-crypto-trans)# mode tunnel # --- ACL interesting-traffic: LAN Έδρας -> LAN Υποκαταστήματος --- R1(config)# ip access-list extended VPN-TRAFFIC R1(config-ext-nacl)# permit ip 10.1.0.0 0.0.255.255 10.2.0.0 0.0.255.255 # --- Crypto map: δέσε peer + transform + PFS + ACL, εφάρμοσε στο WAN --- R1(config)# crypto map CMAP-MT 10 ipsec-isakmp R1(config-crypto-map)# set peer 198.51.100.2 R1(config-crypto-map)# set ikev2-profile PROF-MT R1(config-crypto-map)# set transform-set TS-MT R1(config-crypto-map)# set pfs group14 R1(config-crypto-map)# match address VPN-TRAFFIC R1(config)# interface GigabitEthernet0/0 R1(config-if)# crypto map CMAP-MT
02
Ίδια διαπραγμάτευση, λέξεις RouterOS. Το profile είναι Phase 1, το proposal είναι Phase 2, το peer+identity κουβαλάνε το PSK, και η policy είναι ο καθρέφτης του ACL interesting-traffic της Cisco. Οι τιμές είναι copy-paste πανομοιότυπες με την έδρα.
# --- Phase 1 profile: ΠΡΕΠΕΙ να ταιριάζει ακριβώς με το PROP-MT της Cisco --- /ip ipsec profile add name=PROF-CISCO enc-algorithm=aes-256 hash-algorithm=sha256 \ dh-group=modp2048 lifetime=8h # modp2048 == Cisco group 14 # --- Peer: το public IP της Εδρας, IKEv2, χρησιμοποιώντας εκείνο το profile --- /ip ipsec peer add name=HQ address=203.0.113.1/32 profile=PROF-CISCO exchange-mode=ike2 # --- Identity: το pre-shared key, χαρακτήρα-προς-χαρακτήρα πανομοιότυπο με Cisco --- /ip ipsec identity add peer=HQ auth-method=pre-shared-key secret="S3cr3t-Cross-Vendor!" # --- Phase 2 proposal: ΠΡΕΠΕΙ να ταιριάζει με το TS-MT + PFS group14 της Cisco --- /ip ipsec proposal add name=PROP-CISCO enc-algorithms=aes-256-cbc auth-algorithms=sha256 \ pfs-group=modp2048 lifetime=1h # --- Policy: καθρέφτης του ACL της Cisco (LAN Υποκαταστηματος -> LAN Εδρας) --- /ip ipsec policy add peer=HQ tunnel=yes proposal=PROP-CISCO \ src-address=10.2.0.0/16 dst-address=10.1.0.0/16
modp2048 = DH Group 14, και Πες' το Δυο Φορες
Το MikroTik ονομάζει τις ομάδες Diffie-Hellman κατά μήκος bit (modp2048), η Cisco κατά αριθμό (group 14) — είναι η ίδια ομάδα, αλλά πρέπει να τη μεταφράσεις. Και υπάρχουν δύο ρυθμίσεις DH: το dh-group του profile (Phase 1) και το pfs-group του proposal (Phase 2 PFS). Το set pfs group14 της Cisco στο crypto map βάζει μόνο το Phase-2 — αν βάλεις PFS στον έναν vendor και όχι στον άλλο, το Phase 2 αποτυγχάνει αφού έχει πετύχει το Phase 1, που φαίνεται ακατανόητο. Ταίριασε και τα δύο, ή απενεργοποίησε PFS και στα δύο.
03
Το Phase 1 είναι READY, και οι δύο πλευρές δείχνουν τον peer συνδεδεμένο, και ούτε ένα πακέτο δεν περνάει. Εννιά στις δέκα φορές είναι ένα από αυτά τα τρία — και κανένα τους δεν εμφανίζεται ως προφανές σφάλμα.
Αν έχτισες την πλευρά Cisco ως VTI (από το post site-to-site) αλλά το MikroTik ως policy, οι δύο διαφωνούν για το πώς μπαίνει η κίνηση στο tunnel. Το VTI της Cisco θέλει να κάνει route· η policy του MikroTik θέλει selectors src/dst. Κράτα και τα δύο policy-based (όπως παραπάνω), ή και τα δύο route-based (MikroTik: ένα interface IPIP/GRE με μια IPsec policy σε tunnel-mode δεμένη πάνω του). Μην τα ανακατεύεις.
Το ACL της Cisco λέει 10.1.0.0/16 → 10.2.0.0/16· η policy του MikroTik πρέπει να λέει src 10.2.0.0/16 → dst 10.1.0.0/16 — ο ακριβής καθρέφτης, ίδιες μάσκες. Ένα /24 στη μία πλευρά και /16 στην άλλη είναι mismatch proposal και το Phase 2 αρνείται. Η Cisco είναι πιο αυστηρή από τους περισσότερους στο ότι τα selectors πρέπει να ταιριάζουν μέχρι το bit.
Κάθε router ήδη κάνει masquerade το LAN του προς το internet, και θα κάνει ευχαρίστως NAT και την κίνηση προς το VPN — αλλοιώνοντάς τη πριν την κρυπτογράφηση. Πρέπει να εξαιρέσεις την κίνηση site-to-site και στα δύο boxes.
# CISCO: deny (εξαίρεσε) την κίνηση VPN ΠΑΝΩ από το permit, στο ACL NAT R1(config)# ip access-list extended NAT-LIST R1(config-ext-nacl)# deny ip 10.1.0.0 0.0.255.255 10.2.0.0 0.0.255.255 R1(config-ext-nacl)# permit ip 10.1.0.0 0.0.255.255 any # MIKROTIK: ένας κανόνας accept ΠΑΝΩ από το masquerade για το ίδιο ζευγάρι /ip firewall nat add chain=srcnat action=accept place-before=0 \ src-address=10.2.0.0/16 dst-address=10.1.0.0/16 add chain=srcnat action=masquerade out-interface=ether1 # WAN
Και στους δύο vendors η εξαίρεση πρέπει να κάθεται πάνω από το masquerade/permit — κερδίζει το πρώτο match. Και αν το tunnel ήταν up και έκανε NAT πριν το διορθώσεις, καθάρισε τη μπαγιάτικη κατάσταση αλλιώς θα ορκίζεσαι ότι είναι ακόμα χαλασμένο: Cisco clear ip nat translation *, MikroTik τις συνδέσεις src-nat στο /ip firewall connection. Αυτή είναι η ίδια παγίδα με το build Cisco-προς-Cisco — απλώς εδώ πρέπει να λυθεί δύο φορές.
04
Επιβεβαίωσε Phase 1, μετά Phase 2 με μετρητές που ανεβαίνουν, από την οπτική κάθε vendor. Η αστοχία είναι πάντα σε ένα αναγνωρίσιμο επίπεδο — έλεγξέ τα με τη σειρά.
R1# show crypto ikev2 sa # Phase 1 -> Status READY R1# show crypto ipsec sa | inc pkts|ident # encaps/decaps ανεβαίνουν και τα δύο R1# ping 10.2.0.1 source 10.1.0.1 # με source το LAN, όχι το WAN IP
/ip ipsec active-peers print # state=established, uptime ανεβαίνει /ip ipsec policy print stats # ph2-state=established, in/out bytes > 0 /ping 10.1.0.1 src-address=10.2.0.1 # το installed-sa δείχνει τα πραγματικά keys/SPIs αν χρειαστείς να πας βαθύτερα: /ip ipsec installed-sa print
| Συμπτωμα | Που να κοιταξεις |
|---|---|
| Κανένα Phase 1 / δεν έχει γίνει established | Mismatch profile (enc/hash/DH) ή typo στο PSK. MikroTik: /log print where topics~"ipsec". |
| Phase 1 up, κανένα Phase 2 | Mismatch proposal/PFS, ή τα selectors δεν είναι ακριβείς καθρέφτες (§03A/B). |
| Phase 2 up, το encaps ανεβαίνει, το decaps 0 | Το NAT/route επιστροφής της άλλης πλευράς — ο άλλος router αλλοιώνει ή ρίχνει. |
| SAs up, μηδέν πακέτα | Το NAT τρώει την κίνηση (§03C) ή δεν υπάρχει route/policy που να στέλνει κίνηση LAN μέσα. |
Τα cross-vendor tunnels είναι απόλυτα σταθερά μόλις ταιριάξουν, αλλά κάθε παράμετρος είναι μια ευκαιρία για τα δύο configs να αποκλίνουν με τον καιρό. Διάλεξε ένα crypto profile — AES-256 / SHA-256 / DH-14 / PFS-14 / IKEv2 — και ξαναχρησιμοποίησέ το σε κάθε tunnel στο estate ανεξαρτήτως vendor. Τεκμηρίωσε τα ζευγάρια. Όταν ένα tunnel υποκαταστήματος πέφτει στις 2 το πρωί, «όλα χρησιμοποιούν τους ίδιους αριθμούς» είναι η διαφορά ανάμεσα σε μια διόρθωση πέντε λεπτών και ένα απόγευμα diffing δύο διαλέκτων.
Συμπερασματα
modp2048=group 14. Πιάσ' τα αυτά και τα υπόλοιπα είναι να γεμίζεις έναν πίνακα.Cisco στην έδρα και MikroTik στα υποκαταστήματα δεν είναι συμβιβασμός, είναι συχνά η σωστή επιλογή στο κόστος. Σχεδιάζω και τεκμηριώνω cross-vendor VPN estates με ένα τυποποιημένο crypto profile σε όλες τις πλατφόρμες, καθαρό failover, και monitoring tunnel που δεν νοιάζεται ποιος vendor έφτιαξε το box.
Κλεισε μια Discovery Call →