İçeriğe geç
Teknik İleri 16 dk okuma

IKEv2 mi WireGuard mı? — 50 Kullanıcılık VPN'de Saha Testi

RouterOS 7 üzerinde IKEv2/IPSec ve WireGuard'ı 50 kullanıcılık gerçek ortamda karşılaştırdım. CPU yükü, throughput, mobil MOBIKE performansı, sertifika yönetimi ve production config'ler.

Erdem Özyurt

· Güncellendi:

Bir müşteride VPN geçişi yapıyorduk. 50 kişilik ofis, karma cihazlar — iPhone, Android, Windows, Mac. Yönetici sordu: “IKEv2 mi WireGuard mı?”

İkisini de kurdum. İkisini de test ettim. Bu yazı o testin kaydı.


Test Ortamı

  • Router: MikroTik RB4011iGS+5HacQ2HnD — RouterOS 7.16
  • WAN: 100/100 Mbps simetrik fiber
  • Kullanıcı sayısı: 50 (32 Windows, 10 iPhone, 5 Android, 3 Mac)
  • Test süresi: 2 hafta — ilk hafta IKEv2, ikinci hafta WireGuard
  • Ölçüm: iperf3 throughput, router CPU/RAM, ping latency, bağlantı kopma sayısı

IKEv2 Kurulumu — Sertifikadan Peer’a

Sertifika Zinciri

# Root CA — 10 yıl geçerli
/certificate
add name=ca-vpn common-name="VPN Root CA" \
    key-size=4096 days-valid=3650 \
    key-usage=crl-sign,key-cert-sign

sign ca-vpn ca=ca-vpn name=ca-vpn

# Server sertifikası — domain eşleşmesi kritik
add name=vpn-server common-name=vpn.firma.com \
    subject-alt-name=DNS:vpn.firma.com \
    key-size=2048 days-valid=730 \
    key-usage=tls-server,digital-signature,key-encipherment

sign vpn-server ca=ca-vpn name=vpn-server

common-name ile bağlantı kurulan hostname eşleşmezse tüm client’lar “sertifika doğrulanamadı” hatası alır. Bu hatayı ilk kurulumda yaptım — 50 cihazın sertifikasını yeniden dağıtmak demek. Kontrol et, sonra imzala.

IPSec Profil ve Proposal

/ip ipsec profile
add name=ike2-profile \
    enc-algorithm=aes-256-gcm \
    dh-group=ecp384,modp2048 \
    hash-algorithm=sha256 \
    lifetime=24h \
    nat-traversal=yes \
    dpd-interval=30s dpd-maximum-failures=5

/ip ipsec proposal
add name=ike2-proposal \
    enc-algorithms=aes-256-gcm \
    auth-algorithms=null \
    pfs-group=modp2048 \
    lifetime=8h

AES-256-GCM kullanıyorsanız auth-algorithms=null olmalı — GCM zaten authenticated encryption. Ayrı hash belirtirseniz RouterOS hata vermez ama gereksiz overhead ekler.

Mode Config ve IP Havuzu

/ip pool
add name=vpn-pool ranges=10.88.88.2-10.88.88.254

/ip ipsec mode-config
add name=ike2-modeconf \
    address-pool=vpn-pool \
    address-prefix-length=32 \
    split-include=10.0.0.0/8,172.16.0.0/12 \
    system-dns=yes \
    static-dns=1.1.1.1

address-prefix-length=32 — her client sadece kendi IP’sini görür, diğer VPN client’ları görmez. Güvenlik açısından önemli.

split-include ile sadece iç ağ trafiği VPN üzerinden geçer. YouTube, Spotify gibi trafik doğrudan internet’e çıkar — sunucu CPU’su %40 daha az yüklenir.

Peer ve Identity

/ip ipsec peer
add name=ike2-remote address=0.0.0.0/0 \
    passive=yes profile=ike2-profile \
    exchange-mode=ike2

/ip ipsec identity
add auth-method=eap \
    certificate=vpn-server \
    eap-methods=eap-mschapv2 \
    generate-policy=port-override \
    mode-config=ike2-modeconf \
    my-id=fqdn:vpn.firma.com \
    passive=yes \
    policy-template-group=ike2-clients

Kullanıcılar

/ppp secret
add name=ahmet.yilmaz password=Guclu$ifre2026! service=any
add name=fatma.demir password=Ba$ka$ifre2026! service=any
# ... 50 kullanıcı

50 kullanıcıyı tek tek eklemek yerine /tool fetch ile CSV’den import scripti yazdım:

# CSV: kullanici,sifre
:foreach line in=[/file get users.csv contents] do={
  :local name [:pick $line 0 [:find $line ","]]
  :local pass [:pick $line ([:find $line ","] + 1) [:len $line]]
  /ppp secret add name=$name password=$pass service=any
}

Firewall

/ip firewall filter
add chain=input action=accept protocol=udp dst-port=500,4500 \
    comment="IKEv2: IKE + NAT-T"
add chain=input action=accept protocol=ipsec-esp \
    comment="IKEv2: ESP"

/ip firewall nat
add chain=srcnat action=accept \
    src-address=10.88.88.0/24 dst-address=10.0.0.0/8 \
    place-before=0 comment="VPN→LAN: NAT bypass"

NAT bypass kuralını masquerade’den önce koymazsanız VPN trafiği NAT’lanır — iç ağda kaynak IP olarak VPN sunucu IP’si görünür, loglarınız işe yaramaz hale gelir.


WireGuard Kurulumu — Basitlik Kazanır

/interface wireguard
add name=wg0 listen-port=51820 mtu=1420

# Public key otomatik oluşur
/interface wireguard print
# → public-key="SUNUCU_PUBLIC_KEY="

/ip address
add address=10.99.0.1/24 interface=wg0

# Her client için peer
/interface wireguard peers
add interface=wg0 \
    public-key="CLIENT_1_PUBLIC_KEY=" \
    allowed-address=10.99.0.2/32 \
    comment="ahmet.yilmaz — Windows laptop"

add interface=wg0 \
    public-key="CLIENT_2_PUBLIC_KEY=" \
    allowed-address=10.99.0.3/32 \
    comment="fatma.demir — MacBook"

# ... 50 peer

Client tarafı (Windows/Mac/Android/iOS WireGuard uygulaması):

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY=
Address = 10.99.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SUNUCU_PUBLIC_KEY=
AllowedIPs = 10.0.0.0/8, 172.16.0.0/12
Endpoint = vpn.firma.com:51820
PersistentKeepalive = 25

50 client config’ini tek tek yazmak yerine bash scripti:

#!/bin/bash
for i in $(seq 2 51); do
  wg genkey | tee "client${i}.key" | wg pubkey > "client${i}.pub"
  
  cat > "client${i}.conf" << EOF
[Interface]
PrivateKey = $(cat client${i}.key)
Address = 10.99.0.${i}/32
DNS = 1.1.1.1

[Peer]
PublicKey = SUNUCU_PUBLIC_KEY
AllowedIPs = 10.0.0.0/8, 172.16.0.0/12
Endpoint = vpn.firma.com:51820
PersistentKeepalive = 25
EOF

  echo "add interface=wg0 public-key=\"$(cat client${i}.pub)\" allowed-address=10.99.0.${i}/32 comment=\"client-${i}\"" >> router-peers.rsc
done

router-peers.rsc dosyasını RouterOS’a import ediyorsunuz — 50 peer 1 saniyede ekleniyor.

Firewall

/ip firewall filter
add chain=input action=accept protocol=udp dst-port=51820 \
    comment="WireGuard"

/ip firewall nat
add chain=srcnat action=accept \
    src-address=10.99.0.0/24 dst-address=10.0.0.0/8 \
    place-before=0 comment="WG→LAN: NAT bypass"

Test Sonuçları — 2 Hafta, 50 Kullanıcı

Throughput (iperf3, tek bağlantı)

ProtokolDownloadUploadOrtalama
Direkt (VPN’siz)94 Mbps93 Mbps93.5 Mbps
WireGuard91 Mbps89 Mbps90 Mbps
IKEv287 Mbps84 Mbps85.5 Mbps

100 Mbps hat üzerinde fark minimal. Gigabit hatlarda fark belirginleşir — WireGuard 412 Mbps, IKEv2 348 Mbps (ayrı gigabit testte ölçüldü).

CPU Yükü (50 aktif peer, karma trafik)

ProtokolOrtalama CPUPeak CPURAM
WireGuard%12%1848 MB
IKEv2%35%52112 MB

WireGuard kernel seviyesinde çalışıyor (MikroTik Docs, 2025), IKEv2 userspace — bu fark doğrudan CPU’ya yansıyor. RB4011’in quad-core ARM’ında bu sorun değil, ama hAP ac³ gibi küçük cihazlarda IKEv2 ile 20+ kullanıcı zorlar.

Bağlantı Kararlılığı

SenaryoIKEv2WireGuard
WiFi→4G geçişi✅ 0 saniye (MOBIKE)⚠️ 2-3 saniye kopukluk
8 saat ofis kullanımı✅ 0 kopma✅ 0 kopma
NAT arkası (otel WiFi)✅ Sorunsuz✅ Sorunsuz
Uyku→uyanma (laptop)✅ Anında✅ Anında

MOBIKE (RFC 4555) IKEv2’nin en büyük avantajı. Sahada araçla gezen satış ekibi varsa — WiFi’dan 4G’ye, 4G’den başka WiFi’ya sürekli geçiş yapıyorlarsa — IKEv2 ile bağlantı hiç kopmadı. WireGuard’da PersistentKeepalive=25 ile çoğu durumda sorun yok, ama 4G sinyal geçişlerinde 2-3 saniyelik kesinti gözlemledim.

Yönetim Yükü

İşlemIKEv2WireGuard
Yeni kullanıcı eklemePPP secret + CA dağıtımıKey pair + peer ekleme
Kullanıcı çıkarmaSecret silPeer sil
Sertifika yenileme1-2 yılda birYok — sertifika yok
Client kurulumuNative (iOS/Mac), ayar (Win)Uygulama yükle + config
Toplu dağıtımMDM ile profil pushConfig dosyası dağıt

Karar Matrisi

50 kişi, karma cihaz → IKEv2
  ✓ iPhone native → IT'ye destek talebi az
  ✓ MOBIKE → sahada kopma yok
  ✓ Sertifika → brute force riski sıfır

10 kişi, teknik ekip → WireGuard
  ✓ CPU yarıya düşer
  ✓ Config basit, debug kolay
  ✓ Performans kritikse (gigabit hat) fark belirgin

Hibrit → İkisini birden kur
  IKEv2 → mobil cihazlar (UDP 500/4500)
  WireGuard → masaüstü/laptop (UDP 51820)
  Aynı router, farklı subnet'ler

Bu müşteride hibrit gittik. iPhone/Android kullanıcılar IKEv2 ile bağlanıyor — native, sıfır uygulama. Windows/Mac laptoplar WireGuard ile — daha hızlı, daha hafif.


Sorun Giderme Notları

IKEv2: “Sertifika doğrulanamadı”

# Sertifika detayını kontrol et
/certificate print detail where name=vpn-server
# common-name = vpn.firma.com olmalı
# trusted = yes olmalı

Client tarafında bağlanılan hostname ile sertifika CN’i eşleşmeli. vpn.firma.com ile bağlanıp CN’de firma.com varsa hata verir.

WireGuard: “Handshake did not complete”

# Peer durumunu kontrol et
/interface wireguard peers print
# last-handshake boş mu? → Client public key yanlış
# rx=0 tx=0? → Firewall UDP 51820'yi engelliyor

En sık hata: client config’deki PublicKey ile router’daki peer public-key eşleşmiyor. Key kopyalarken boşluk veya satır sonu kaçırmak yeterli.

Her ikisi: “Tünel kuruldu ama iç ağa erişemiyorum”

# NAT bypass kuralı var mı?
/ip firewall nat print where comment~"VPN"
# masquerade'den ÖNCE accept kuralı olmalı

# Route var mı?
/ip route print where dst-address~"10.88" or dst-address~"10.99"

Performans İpuçları

MTU Ayarı

# WireGuard varsayılan MTU: 1420 (80 byte overhead)
# IKEv2 overhead: ~60 byte → MTU 1400 önerilir

# Client tarafında test:
# ping vpn.firma.com -f -l 1400
# Parçalanma mesajı gelirse: 1380'e düşür

Hardware Acceleration

# RB4011'de IPSec hardware offload
/ip ipsec settings
set hardware-aesni=yes
# CPU yükünü %30-40 düşürür (IKEv2 için)

WireGuard için hardware offload yok — ama zaten yazılımsal performansı yeterli.

DPD Ayarları (IKEv2)

# Kararsız bağlantılarda DPD çok agresif olmasın
/ip ipsec profile
set [find name=ike2-profile] \
    dpd-interval=60s dpd-maximum-failures=5
# Mobil kullanıcılar için 60s/5 — tünel elevator'da bile ayakta kalır

SiberKale olarak bu yapıyı müşterilerimize uyguluyoruz — VPN neden şart, karar verme süreci, RDP’nin neden doğrudan açık bırakılmaması gerektiği:

Uzaktan Çalışanlarınız Güvende mi? — VPN Neden Şart? (SiberKale, iş odaklı)


Özet Tablo

KriterIKEv2WireGuardKazanan
Throughput (100M)85.5 Mbps90 MbpsWireGuard
Throughput (1G)348 Mbps412 MbpsWireGuard
CPU (50 peer)%35%12WireGuard
Mobil native destekIKEv2
WiFi→4G geçişi✅ 0 sn⚠️ 2-3 snIKEv2
Kurulum kolaylığı⚠️ Orta✅ BasitWireGuard
Kullanıcı yönetimi (50+)✅ PPP/RADIUS⚠️ Key yönetimiIKEv2
Kod tabanı (denetlenebilirlik)Karmaşık4.000 satırWireGuard

İkisi de güvenli. İkisi de production-ready. Seçim kullanıcı profiline bağlı.


Kaynaklar: WireGuard Whitepaper (2020), RFC 4555 — MOBIKE (2006), RFC 7296 — IKEv2 (2014), MikroTik WireGuard Docs (2025)

#mikrotik #vpn #ikev2 #wireguard #ipsec #routeros #performans #saha-testi
Paylaş: 𝕏 Twitter LinkedIn

Sıkça Sorulan Sorular

IKEv2 ile WireGuard arasında performans farkı ne kadar?

50 kullanıcılık saha testinde WireGuard %23 daha az CPU tüketti ve ortalama 412 Mbps throughput verdi. IKEv2 ise 348 Mbps ile biraz geride kaldı. Ancak IKEv2'nin MOBIKE desteği mobil kullanıcılarda bağlantı kararlılığını öne çıkardı — WiFi→4G geçişinde WireGuard'da 2-3 saniye kesinti olurken IKEv2'de sıfırdı.

MikroTik'te IKEv2 ve WireGuard birlikte çalışabilir mi?

Evet. Farklı portlardan dinlerler (UDP 500/4500 IKEv2, UDP 51820 WireGuard). Aynı router'da ikisini birden kurabilirsiniz — IKEv2'yi mobil cihazlar için, WireGuard'ı masaüstü için kullanmak yaygın bir yaklaşımdır.

WireGuard'da kullanıcı bazlı kimlik doğrulama nasıl yapılır?

WireGuard kullanıcı adı/şifre desteklemez — her client için bir anahtar çifti oluşturulur. Kullanıcı ayrıldığında o peer'ı silmek yeterlidir. Büyük ekiplerde bu yönetim yükü artırır, bu yüzden 30+ kullanıcıda IKEv2 veya RADIUS entegrasyonu tercih edilir.

Self-signed sertifika mı, Let's Encrypt mi kullanmalıyım?

Let's Encrypt kullanırsanız client'larda sertifika hatası çıkmaz — ama 90 günde yenilenmesi gerekir, RouterOS'ta otomatik yenileme scripti yazmanız lazım. Self-signed ise 10 yıllık yapabilirsiniz, sadece CA sertifikasını client'lara bir kez dağıtmanız gerekir.

Split tunnel mı full tunnel mı kullanmalıyım?

Split tunnel ile sadece şirket ağına giden trafik VPN üzerinden geçer — internet trafiği doğrudan çıkar. Performans avantajı vardır, ama güvenlik ekibi tüm trafiği denetlemek istiyorsa full tunnel gerekir. Testlerimde split tunnel ile VPN sunucusu CPU yükü %40 düştü.

Erdem Özyurt

IT Danışmanı · ISP Altyapı · Siber Güvenlik · Sakarya

Kablo döşemekten kod yazmaya, ağ tasarımından web geliştirmeye — Layer 1'den Layer 7'ye bütünlük içinde çalışıyorum.

Hakkımda daha fazla →