Sistem/DevOps•7 dk okuma

Merkez-Şube IPsec VPN Tünellerinde Dead Peer Detection (DPD), MSS Clamping ve MTU Sorunları

Holding merkez ofisi ile şubeler arasındaki Site-to-Site IPsec VPN tünellerinde ERP ekranlarının donması, RDP oturumlarının kopması ve büyük paketlerin kaybolması sorunlarının TCP MSS Clamping ile kökten çözümü.

AE

Ahmet Ertekin

28 November 2023

Merkez-Şube IPsec VPN Tünellerinde Dead Peer Detection (DPD), MSS Clamping ve MTU Sorunları

Merkez-Şube IPsec VPN Tünellerinde Dead Peer Detection (DPD), MSS Clamping ve MTU Sorunları

Bir sistem yöneticisinin en çok karşılaştığı gizemli şikayetlerden biri şudur: "Merkez ofise ping atabiliyorum, küçük web siteleri açılıyor; ama ERP programında fatura kaydet dediğimde veya büyük bir Excel dosyasını sunucudan çekerken ekran donup kalıyor!"

Bu sorun bir bant genişliği yetersizliği değildir; klasik bir MTU (Maximum Transmission Unit) aşımı ve paket parçalanması (fragmentation) krizidir.

1. IPsec Paket Başlığı (Overhead) ve MTU Uyuşmazlığı

Standart bir Ethernet paketinin boyutu 1500 bayttır. Ancak iki lokasyon arasında IPsec VPN tüneli kurduğunuzda:

  • ESP (Encapsulating Security Payload) başlığı,
  • IV (Initialization Vector),
  • HMAC imza doğrulaması ve yeni dış IP başlığı eklenir.

Bu ek yük (overhead) yaklaşık 50 ila 70 bayt arasındadır. Kullanıcının bilgisayarı 1500 baytlık bir TCP paketi üretip "Parçalanamaz (Don't Fragment - DF)" bayrağı koyduğunda, güvenlik duvarı bu paketi IPsec tüneline sokamaz. Paket çöpe atılır (Black Hole Router fenomeni) ve bağlantı kilitlenir!

2. Kesin Çözüm: TCP MSS Clamping

Sorunu tek tek 200 kullanıcının bilgisayarına girip MTU düşürerek çözemezsiniz. Çözüm, güvenlik duvarı seviyesinde tünelden geçen SYN paketlerinin MSS (Maximum Segment Size) değerini zorla düşürmektir (MSS Clamping).

Standart MTU: 1500 Bayt -> Standart MSS = 1460 Bayt (1500 - 20 IP - 20 TCP)
IPsec Tüneli İçin Güvenli MSS: 1360 veya 1380 Bayt!

Sophos XGS ve FortiGate üzerinde MSS Clamping ayarı:

# Sophos Firewall CLI üzerinden MSS değerini tünel trafiğine göre zorlama
console> set advanced-firewall sys-traffic-nat add destination 10.0.0.0/8
console> system system_modules mss clamp 1360

# FortiGate CLI üzerinde IPsec faz-1 arabiriminde MSS ayarlama
config vpn ipsec phase1-interface
    edit "To-Merkez-VPN"
        set mtu-override enable
        set mtu 1420
        set tcp-mss-clamp enable
        set tcp-mss 1360
    next
end

3. DPD (Dead Peer Detection) ile Donan Tünelleri Canlandırma

Şubelerdeki ADSL/VDSL veya fiber internet hatları dinamik IP değişimlerinde veya anlık hat dalgalanmalarında koptuğunda, IPsec tüneli bir tarafta "UP" görünürken diğer tarafta düşmüş kalabilir.

DPD (Dead Peer Detection), tünel uçlarının periyodik olarak "Orada mısın?" sinyali göndermesini sağlar:

DPD Interval: 10 saniye
DPD Timeout: 30 saniye
DPD Action: Re-initiate (Bağlantı koptuğu an tüneli sıfırdan yeniden başlat)

Karşılaşılan Kritik Hatalar ve Çözüm İpuçları

  • ICMP Type 3 Code 4 Engeli: Routerların paket parçalanamadığında geri gönderdiği Destination Unreachable / Fragmentation Needed ICMP mesajları bazı güvenlik kurallarıyla engellenmişse, Path MTU Discovery (PMTUD) mekanizması çalışmaz. Güvenlik duvarlarında ICMP Type 3 mesajlarının geçişine daima izin verilmelidir.
  • IKEv2 vs IKEv1 Kararlılığı: Eski IKEv1 protokolü yerine IKEv2 kullanılmalıdır. IKEv2 NAT arkasındaki cihazlarda çok daha kararlıdır ve dinamik IP değişikliklerini MOBIKE protokolü sayesinde tüneli düşürmeden yönetebilir.

Mühendis Notu

Bir şube VPN tünelinde sorun yaşadığınızda ilk yapacağınız teşhis testi şudur: ping 10.10.20.10 -f -l 1472. Eğer "Packet needs to be fragmented but DF set" yanıtı alıyorsanız, parametreyi adım adım düşürün (1400, 1380, 1360). Pingin başarıyla geçtiği en yüksek değer sizin tünel sınırınızdır.