İçeriğe geç
ipkontrol.net

VPN

VPN’de MTU Ayarı Nedir? Ne Zaman Değiştirilmeli?

Paket parçalanması kaynaklı yavaşlık ve doğru MTU değerinin bulunması.

MTU, bir ağ bağlantısının tek pakette taşıyabileceği en büyük veri boyutu. VPN her pakete kendi başlığını eklediği için tünelin içinden geçebilecek paket, dışarıdaki hattın taşıyabileceğinden küçük. Bu fark hesaba katılmazsa büyük paketler yolda düşüyor: bağlantı kuruluyor ama sayfalar yarım yükleniyor, büyük dosyalar takılıyor.

Belirtileri ve diğer sebeplerden nasıl ayrıldığını VPN açıkken site açılmıyor yazısında anlattık. Bu yazı doğru değeri bulmak ve doğru yere yazmak hakkında.

Ne zaman değiştirilmeli?

  • VPN bağlı, küçük sayfalar açılıyor, büyük siteler ya da dosyalar takılıyorsa.
  • Aynı VPN bir ağda sorunsuz, başka bir ağda (mobil veri, otel Wi-Fi'ı) sorunluysa.
  • Kendi kurduğunuz bir VPN sunucusunda bazı cihazlar sorunsuz, bazıları sorunluysa.

Her şey çalışıyorsa MTU'ya dokunmayın. Gereğinden düşük bir değer de sorun çıkarmaz ama küçük bir verim kaybı getirir; düzeltilecek bir şey yokken ayar yapmanın kazancı yok.

Hesap: temel değerden başlık çıkar

Tünelin MTU'su = dışarıdaki hattın MTU'su − VPN'in eklediği başlık. İlk sayı çoğu kişinin sandığı gibi her zaman 1500 değil:

HatTemel MTU
Ethernet, kablo internet, çoğu Wi-Fi1500
PPPoE kullanan hatlar (Türkiye'de fiber ve VDSL'in çoğu)1492
Mobil veriOperatöre göre değişiyor; ölçmek gerekiyor

PPPoE kendi 8 baytlık başlığını eklediği için evdeki modem zaten 1492 ile çalışıyor. Hesabı 1500'den yaparsanız tünel 8 bayt fazla büyük kalıyor ve sorun çözülmüyor.

VPN protokollerinin eklediği başlık yaklaşık olarak şöyle:

ProtokolBaşlık (IPv4 üzerinden)1500 hatta tünel1492 hatta tünel
WireGuard60 bayt (IPv6 üzerinden 80)14401432
OpenVPN (UDP)Şifreleme ayarına göre değişiyor, kabaca 40–70 baytÖlçünÖlçün
IKEv2 / IPsecŞifreleme ayarına göre 50–80 bayt civarıÖlçünÖlçün

WireGuard'ın varsayılanı 1420; bu, dış bağlantının IPv6 olabileceği düşünülerek seçilmiş güvenli bir değer. PPPoE hattında ve IPv6 dış bağlantıda bile 1412'ye kadar inmek gerekebiliyor. Hesap bir başlangıç noktası; kesin değer ölçümle bulunuyor.

Ölçüm: ping merdiveni

Yöntem, "bölünmesin" işaretli büyük bir ping paketi gönderip boyutu değiştirerek geçen en büyük değeri bulmak. Komutta yazdığınız sayı paketin veri kısmı; gerçek paket boyutu buna 28 bayt (IP ve ICMP başlıkları) eklenerek bulunuyor.

SistemKomut
Windowsping -f -l 1472 1.1.1.1
macOSping -D -s 1472 1.1.1.1
Linuxping -M do -s 1472 1.1.1.1

Önce VPN kapalıyken dışarıdaki hattı ölçün, sonra VPN açıkken tüneli. Her denemede aralığı ikiye bölün; sekiz on denemede sonuca varıyorsunuz:

DenemeVeri boyutuSonuçSıradaki adım
11472Parçalanması gerekiyorAşağı in
21400Yanıt geldiOrtaya çık
31436Parçalanması gerekiyorAşağı in
41418Yanıt geldiOrtaya çık
51427Parçalanması gerekiyorAşağı in
61422Yanıt geldiBir bayt bir bayt yukarı
71424Yanıt geldi1425 dene
81425Parçalanması gerekiyorSon değer 1424

Bu örnekte geçen en büyük veri 1424; 28 eklenince yolun MTU'su 1452. VPN kapalıyken ölçtüyseniz bu dış hattın değeri; tünel MTU'su bundan protokol başlığı çıkarılarak bulunur. VPN açıkken tünel arayüzü üzerinden ölçtüyseniz değer doğrudan tünelin taşıyabildiği boyuttur.

Hiç yanıt gelmiyorsa ve hata mesajı da yoksa yol üzerindeki bir cihaz ICMP paketlerini engelliyor olabilir; başka bir hedef adresle deneyin. Ping komutunun diğer seçenekleri ping atma yazısında.

Değeri nereye yazmalı?

YerAyar
WireGuard yapılandırması[Interface] bölümüne MTU = 1412 satırı
OpenVPNtun-mtu ve mssfix satırları; genellikle yalnızca mssfix düşürmek yetiyor
Ticari VPN uygulamasıAyarlar → Gelişmiş → MTU (varsa); yoksa protokol değiştirmek
Windows (tünel arayüzü)netsh interface ipv4 set subinterface "Arayüz adı" mtu=1400 store=persistent
Linuxip link set dev wg0 mtu 1400

Windows komutu yönetici olarak açılmış komut isteminde çalışır; arayüz adını netsh interface ipv4 show subinterfaces listeler. Linux'taki ayar yeniden başlatmada sıfırlanır; kalıcı olması için VPN yapılandırmasına yazılmalı. Kendi sunucunuzu işletiyorsanız ayarı istemci ve sunucu tarafında aynı tutun; kurulum ayrıntısı kendi VPN sunucum yazısında.

MSS sınırlama: ayara dokunmadan çözüm

Web trafiğinin büyük bölümü TCP ile taşınıyor ve TCP bağlantı kurarken karşı tarafa "bana en fazla şu büyüklükte parça gönder" diyor (MSS). VPN sunucusu ya da yönlendirici bu değeri tünele uygun boyuta indirirse, MTU ayarı yanlış olsa bile TCP trafiği sorunsuz akıyor. Ticari VPN'lerin çoğu bunu kendiliğinden yapıyor; sorun daha çok UDP kullanan oyun, görüntülü görüşme ve kendi kurulan VPN'lerde kalıyor.

Çok düşük ayarın bedeli

Her paketin başlığı sabit olduğu için paket küçüldükçe taşınan veri oranı azalıyor. 1500 yerine 1280 kullanmak, verimi yüzde birkaç düşürüyor; çoğu bağlantıda fark hissedilmiyor ama gereksiz. IPv6'nın zorunlu kıldığı en küçük değer 1280; bunun altına inmeyin. Hız sorunlarının diğer sebepleri için VPN hızını artırma yazısına bakabilirsiniz.

Sıkça sorulan sorular

VPN için doğru MTU değeri nedir?

Dış hattın MTU’su eksi protokol başlığı. Ethernet hatta 1500, PPPoE hatta 1492’den başlanır. WireGuard için PPPoE hatta yaklaşık 1432, güvenli varsayılan 1420’dir. Kesin değer ping ile ölçülür.

MTU değerini nasıl ölçerim?

Bölünmesin işaretli bir ping gönderin; Windows’ta ping -f -l 1472 1.1.1.1. Hata alırsanız boyutu küçültün, geçen en büyük değere 28 ekleyin. Sonuç yolun MTU’sudur.

Türkiye’de fiber hatlarda MTU neden 1492?

Fiber ve VDSL hatların çoğu PPPoE ile bağlanır ve PPPoE her pakete 8 baytlık kendi başlığını ekler. Bu yüzden hesap 1500’den değil 1492’den başlamalıdır.

WireGuard’da MTU nereye yazılır?

Yapılandırma dosyasının Interface bölümüne MTU = değer satırı olarak. Sunucu ve istemci tarafında aynı değeri kullanmak sorun çıkma ihtimalini azaltır.

MTU’yu çok düşük ayarlarsam ne olur?

Bağlantı çalışır ama her pakette taşınan veri oranı azaldığı için küçük bir verim kaybı olur. IPv6’nın zorunlu kıldığı 1280’in altına inilmemelidir.