MikroTik router ile Cisco router arasında IPsec tüneli
Kategori: MikroTik

Merkez ofiste MikroTik, şubede ya da iş ortağı şirkette Cisco router varsa iki ağı bağlamanın en güvenilir yolu siteden siteye IPsec tünelidir. IPsec bir standarttır ve iki marka da destekler; yalnızca ayarların adları iki tarafta farklıdır ve birebir eşleşmeleri gerekir.

Bu rehberde tüneli IKEv2 ve ortak anahtar (Pre-Shared Key) ile kuruyoruz. Komutlar RouterOS 7 ve Cisco IOS / IOS-XE için yazılmıştır.

Senaryo

  • Site A (MikroTik): genel adres 203.0.113.10, iç ağ 192.168.10.0/24
  • Site B (Cisco): genel adres 198.51.100.20, iç ağ 192.168.20.0/24, internet arayüzü GigabitEthernet0/0

Adresler örnektir; kendi adreslerinizi kullanın. İki iç ağın adres aralığı aynı olmamalıdır.

Ön koşullar

  • İki router’ın da sabit genel IP’si olmalı. Biri NAT arkasındaysa UDP 500 ve 4500 portları ona ulaşmalıdır.
  • İki router’ın saati doğru olmalı (NTP).
  • Cisco’da IOS sürümü IKEv2’yi desteklemeli (IOS 15 ve sonrası, Security lisansıyla).
  • Uzun ve rastgele bir ortak anahtar hazırlayın. Bu makalede Str0ng-Shared-Key yazıldı; kendi anahtarınızı kullanın.

İki tarafta aynı olması gereken parametreler

Tünelin açılmamasının en yaygın nedeni bu parametrelerin uyuşmamasıdır. Başlamadan önce kâğıda yazın:

Tünelin iki ucundaki ortak parametreler tablosu: şifreleme, hash, Diffie-Hellman grubu ve ömür
Tünelin iki ucundaki ortak parametreler tablosu: şifreleme, hash, Diffie-Hellman grubu ve ömür
  • Faz 1 (IKE): IKEv2, AES-256 şifreleme, SHA-256 hash, Diffie-Hellman grup 14 (MikroTik’te modp2048), ömür 24 saat
  • Faz 2 (IPsec / ESP): AES-256 şifreleme, SHA-256 doğrulama, PFS grup 14, ömür 1 saat
  • Kimlik doğrulama: aynı ortak anahtar
  • Ağlar: Her taraf karşı tarafın ağlarını kendi tanımının tam aynası olarak tanımlamalı

Adımların sırası

Tünel kurulumunun altı adımı: profil ve proposal, eş ve kimlik, policy, NAT muafiyeti, güvenlik duvarı ve test
Tünel kurulumunun altı adımı: profil ve proposal, eş ve kimlik, policy, NAT muafiyeti, güvenlik duvarı ve test

Birinci bölüm: MikroTik yapılandırması

Bu ayarların tamamına Winbox’ta IP → IPsec menüsünden de ulaşabilirsiniz; her komutun yanına sekme adını yazdım.

1. Profile (faz 1)

Profiles sekmesi:

/ip ipsec profile add name=cisco-p1 enc-algorithm=aes-256 hash-algorithm=sha256 dh-group=modp2048 lifetime=1d dpd-interval=30s dpd-maximum-failures=5

2. Proposal (faz 2)

Proposals sekmesi:

/ip ipsec proposal add name=cisco-p2 enc-algorithms=aes-256-cbc auth-algorithms=sha256 pfs-group=modp2048 lifetime=1h

3. Peer ve Identity

Peers sekmesi karşı router’ı tanımlar:

/ip ipsec peer add name=cisco address=198.51.100.20/32 exchange-mode=ike2 profile=cisco-p1

Identities sekmesi ortak anahtarı tutar:

/ip ipsec identity add peer=cisco auth-method=pre-shared-key secret="Str0ng-Shared-Key"

4. Policy

Policies sekmesi hangi trafiğin şifreleneceğini belirler:

/ip ipsec policy add peer=cisco tunnel=yes src-address=192.168.10.0/24 dst-address=192.168.20.0/24 proposal=cisco-p2 action=encrypt level=require

5. NAT muafiyeti

Bu kuralı yazmazsanız karşı ağa giden trafik IPsec’e ulaşmadan masquerade ile çevrilir ve tünel çalışmaz. Kural masquerade’in üstünde olmalıdır:

/ip firewall nat add chain=srcnat action=accept src-address=192.168.10.0/24 dst-address=192.168.20.0/24 place-before=0 comment="IPsec bypass to Cisco"
MikroTik’te paket işleme sırası: önce NAT muafiyeti kuralı, sonra IPsec policy ve şifreleme
MikroTik’te paket işleme sırası: önce NAT muafiyeti kuralı, sonra IPsec policy ve şifreleme

6. Güvenlik duvarı kuralları

Karşı router’ın tüneli kurmasına izin verin (bu kuralları input zincirindeki drop kuralının üstüne koyun):

/ip firewall filter add chain=input action=accept protocol=udp dst-port=500,4500 src-address=198.51.100.20 comment="IKE from Cisco"
/ip firewall filter add chain=input action=accept protocol=ipsec-esp src-address=198.51.100.20 comment="ESP from Cisco"

FastTrack etkinse tünel trafiğini ondan hariç tutun; yoksa bağlantılar birkaç paketten sonra kopar. Bu iki kural forward zincirinde fasttrack kuralının üstünde olmalıdır:

/ip firewall filter add chain=forward action=accept src-address=192.168.10.0/24 dst-address=192.168.20.0/24 comment="IPsec out, before fasttrack"
/ip firewall filter add chain=forward action=accept src-address=192.168.20.0/24 dst-address=192.168.10.0/24 comment="IPsec in, before fasttrack"

İkinci bölüm: Cisco yapılandırması

Yapılandırma moduna girin (configure terminal) ve aşağıdaki adımları sırayla uygulayın.

1. IKEv2 Proposal ve Policy (faz 1)

crypto ikev2 proposal MT-PROP
 encryption aes-cbc-256
 integrity sha256
 group 14
!
crypto ikev2 policy MT-POL
 proposal MT-PROP

2. Keyring ve Profile

crypto ikev2 keyring MT-KEYS
 peer MIKROTIK
  address 203.0.113.10
  pre-shared-key Str0ng-Shared-Key
!
crypto ikev2 profile MT-PROF
 match identity remote address 203.0.113.10 255.255.255.255
 authentication remote pre-share
 authentication local pre-share
 keyring local MT-KEYS
 lifetime 86400
 dpd 30 5 on-demand

3. Transform Set (faz 2)

crypto ipsec transform-set MT-TS esp-aes 256 esp-sha256-hmac
 mode tunnel

4. İlgili trafik (ACL)

Bu ACL, MikroTik policy’sinin aynası olmalıdır: kaynak Cisco ağı, hedef MikroTik ağı.

ip access-list extended VPN-TO-MIKROTIK
 permit ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255

5. Crypto Map ve internet arayüzüne uygulama

crypto map MT-MAP 10 ipsec-isakmp
 set peer 203.0.113.10
 set transform-set MT-TS
 set ikev2-profile MT-PROF
 set pfs group14
 set security-association lifetime seconds 3600
 match address VPN-TO-MIKROTIK
!
interface GigabitEthernet0/0
 crypto map MT-MAP

6. NAT muafiyeti

Cisco’da da tünel trafiği NAT’lanmamalıdır. NAT ACL’sinde önce tünel trafiğini deny edin:

ip access-list extended NAT-INTERNET
 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255
 permit ip 192.168.20.0 0.0.0.255 any
!
ip nat inside source list NAT-INTERNET interface GigabitEthernet0/0 overload

İnternet arayüzünde gelen trafik için ACL varsa MikroTik’in adresinden UDP 500, UDP 4500 ve ESP protokolüne izin verin:

ip access-list extended OUTSIDE-IN
 permit udp host 203.0.113.10 any eq isakmp
 permit udp host 203.0.113.10 any eq non500-isakmp
 permit esp host 203.0.113.10 any

Sonunda yapılandırmayı kaydedin:

end
write memory

Tüneli test etme

Tünel iki ağ arasındaki ilk trafikle açılır. Ping’i iç ağ adresini kaynak göstererek atın; router’ın genel adresinden atılan ping tünele girmez.

MikroTik’ten:

/ping 192.168.20.1 src-address=192.168.10.1

Cisco’dan:

ping 192.168.10.1 source 192.168.20.1

MikroTik’te kontrol

/ip ipsec active-peers print
/ip ipsec installed-sa print
/ip ipsec policy print

active-peers çıktısında durum established olmalı, policy çıktısındaki PH2-STATE sütunu established göstermelidir. installed-sa’da ping attıkça bayt sayaçları artan iki SA (her yön için bir tane) görürsünüz.

Cisco’da kontrol

show crypto ikev2 sa
show crypto ipsec sa
show crypto session

show crypto ikev2 sa çıktısında durum READY olmalıdır. show crypto ipsec sa çıktısında pkts encaps ve pkts decaps sayaçlarının ikisi de artmalıdır; yalnızca biri artıyorsa sorun dönüş yolunda ya da karşı taraftaki NAT’tadır.

Sorun giderme

  • NO_PROPOSAL_CHOSEN: Faz 1 ya da faz 2 parametreleri iki tarafta aynı değil. Şifreleme, hash, DH grubu ve PFS’i yeniden karşılaştırın.
  • AUTHENTICATION_FAILED: Ortak anahtar aynı değil ya da keyring ve match identity içindeki eş adresi yanlış.
  • TS_UNACCEPTABLE: MikroTik policy ağları ile Cisco ACL’si birbirinin aynası değil; maskedeki bir fark bile (örneğin /24 ve /16) tüneli durdurur.
  • Tünel açık ama ping yanıt vermiyor: İki taraftaki NAT muafiyeti kuralını kontrol edin; MikroTik’te masquerade’in üstünde olmalıdır.
  • Bağlantı kuruluyor ve birkaç saniye sonra kopuyor: MikroTik’te FastTrack; forward kurallarını fasttrack’in üstüne koyun.
  • Ping çalışıyor ama siteler ve büyük dosyalar açılmıyor: MTU sorunudur. MikroTik’te MSS’i sınırlayın, Cisco’da iç arayüzde ip tcp adjust-mss 1360 komutunu girin:
/ip firewall mangle add chain=forward action=change-mss new-mss=1360 protocol=tcp tcp-flags=syn tcp-mss=1361-65535 src-address=192.168.10.0/24 dst-address=192.168.20.0/24 passthrough=yes
  • Tünel birkaç saatte bir kopuyor: İki taraftaki ömür (lifetime) değerlerini eşitleyin ve DPD’yi iki tarafta da açık tutun.

Hata ayrıntılarını görme

MikroTik’te IPsec kaydını açın, sorun çözüldükten sonra yeniden kapatın:

/system logging add topics=ipsec,!packet
/log print where topics~"ipsec"

Cisco’da:

debug crypto ikev2
undebug all

Cisco router’da IKEv2 yoksa

Eski IOS sürümlerinde IKEv1 kullanmanız gerekir. MikroTik’te Peer ayarında exchange-mode=main yapın, Cisco’da ise IKEv2 bölümlerinin yerine ISAKMP politikasını ve anahtarı şöyle tanımlayın:

crypto isakmp policy 10
 encryption aes 256
 hash sha256
 authentication pre-share
 group 14
 lifetime 86400
!
crypto isakmp key Str0ng-Shared-Key address 203.0.113.10

Diğer adımlar (Transform Set, ACL, Crypto Map ve NAT) aynıdır; yalnızca Crypto Map’ten set ikev2-profile satırını kaldırın.

Güvenlik ipuçları

  • DES, 3DES, MD5 ve DH grup 2 gibi eski algoritmaları kullanmayın.
  • Ortak anahtarı uzun ve rastgele seçin; e-posta ya da mesajlaşma uygulamasıyla göndermeyin.
  • IKE erişimini tüm internete değil, karşı router’ın adresine sınırlayın.
  • Kurulumdan sonra iki router’ın yapılandırmasının yedeğini alın.

MikroTik ile Cisco arasındaki IPsec tüneli dört şeye bağlıdır: faz 1 ve faz 2’de aynı parametreler, aynı ortak anahtar, birbirinin aynası olarak tanımlanmış ağlar ve iki tarafta NAT muafiyeti. Bu dördü doğruysa tünel ilk ping’le açılır. MikroTik’te NAT türlerini öğrenmek için MikroTik’te NAT türleri, router’ı güvenli hale getirmek için MikroTik ile ağ güvenliği makalelerini okuyun.

  • IPsec
  • IKEv2
  • MikroTik
  • Cisco
  • Site-to-Site VPN
  • RouterOS 7