Bir sayfa yükleniyor, ping başarılı oluyor ve dosya kopyası her seferinde aynı noktada takılıyor. Bu örüntü bant genişliğini veya kimlik bilgilerini değil, paket boyutunu işaret eder. Kapsülleme her pakete bayt ekler, bu yüzden özgün yolda sığan bir yük bir tünelden geçtikten sonra sınırı aşabilir. Bu sohbetlerde üç farklı sayı MTU olarak adlandırılır ve bunları karıştırmak bir uygulamayı düzeltip diğerini bozan bir ayara yol açar.

İnsanların MTU dediği üç sayı

Arayüz MTU'su o bağlantıda paket için yapılandırılmış sınırdır. Yol MTU'su güzergâh boyunca en küçük sınırdır ve yapılandırılmaz, keşfedilir. TCP MSS, eşin alabileceğini bildirdiği yük boyutudur ve diğer ikisinden türetilir, ayrı bir fiziksel sınır değildir.

Tünelin iç ve dış görünümü vardır. Dış paket, kapsüllenmiş paketi ve protokolün ihtiyaç duyduğu başlıkları taşır, bu yüzden kullanılabilir iç boyut dış yolun izin verdiğinden küçüktür. VPN sunucusuna giden yol da sunucunun hedefe giden yolundan farklıdır.

Yol MTU keşfi göndericinin işleyen boyutu öğrenmesini sağlar, ancak geri bildirimin ulaşmasına bağlıdır. Bir ara cihaz ilgili ICMP mesajlarını süzdüğünde gönderici hiç tamamlanmayan paketler göndermeye devam eder ve bu klasik kara deliktir. Belirti bilindiğinde ayırt edicidir: el sıkışma başarılı olur, tam boyutlu ilk yük kaybolur ve bağlantı sonunda sıfırlanır veya takılır. Uygulama günlüğünde ağ sorununa benzeyen hiçbir şey yoktur.

Yolu kontrol ettiğiniz bir yükle sınayın

Bir test tek bir güzergâh ve tek bir boyut hakkında kanıttır, önerilen bir ayar değildir. Yanıt veren bir ana makine kullanın ve yalnızca yükün boyutunu değiştirin.

ping -M do -s 1372 -c 2 203.0.113.20
ping -4 -f -l 1372 vpn.example

İlk komut parçalanma kapalıyken 1372 baytlık yükle bir Linux testi gönderir, ikincisi aynı şeyi yükün -l ile ayarlandığı Windows'ta yapar. Yanıt, o boyutun yolu geçtiği anlamına gelir. Parçalanma gerektiğine dair mesaj bilgilendiricidir, oysa zaman aşımı belirsizdir çünkü ana makine veya ara cihaz ICMP'yi yalnızca atabilir.

Boyutu bayta kadar ikili arama yerine birkaç adımda düşürün. Bir boyut tavanı olup olmadığını saptamaya çalışıyorsunuz, her ağ için sayı yayımlamaya değil. Bulduğunuz sayı bu yol, bu protokol ve bu adres ailesi için geçerlidir.

IPv4 ve IPv6 farklı parçalanır, bu yüzden bir ailenin test sonucu diğeri hakkında hiçbir şey söylemez. Uygulamanın gerçekte kullandığı aileyi test edin.

MSS kıstırma yalnızca TCP'ye yardım eder

TCP'de etkin yük el sıkışma sırasında görüşülür ve yoldaki bir yönlendirici bu değeri aşağı yazabilir, böylece iki uç daha küçük segmentler gönderir. MSS kıstırma bunu yapar ve istemciye hiç dokunmadan çalışır.

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip link show tun0

İlk kural, iletilen TCP el sıkışmaları için duyurulan MSS'yi yol MTU'suna kıstırır, ikincisi tünel arayüzünün kendi MTU'sunu gösterir, böylece yolun izin verdiğiyle karşılaştırabilirsiniz. Kıstırma, el sıkışmadan sonra takılan TCP uygulaması için en az müdahaleci onarımdır.

UDP için hiçbir şey yapmaz. Büyük veri birimleri gönderen bir ses veya oyun istemcisi MSS ayarını tamamen yok sayar, çünkü yeniden yazılacak bir el sıkışma yoktur. Başarısız uygulama UDP ise bunun yerine istemcinin kendi paket boyutu seçeneklerine bakın. İki protokol farklı biçimde başarısız olur ve farklı araçlarla onarılır, bu yüzden protokol kaydın ilk cümlesine aittir.

OpenVPN tun-mtu, mssfix ve parçalanmayla ilgili ayarlar gibi seçenekler sunar ve davranışları sürüme ve veri kanalının AEAD olup olmadığına bağlıdır. Kullanılan sürümün kılavuzunu okuyun ve seçenekleri birer birer değiştirin.

Desteklenen tek bir ayarı değiştirin ve iki çalıştırmayı da yineleyin

Özgün profili koruyun, desteklenen tek bir değeri değiştirin ve hem çalışan küçük isteği hem de başarısız olan büyük aktarımı yineleyin. Yalnızca büyük olan değişiyorsa boyutun peşindeydiniz. İkisi de değişiyorsa onunla başka bir şey de hareket etti.

Daha düşük bir değer belirtiyi azaltabilir ama ek yük getirir, bu yüzden olası en küçük sayı amaç değildir. Amaç yolun en az israfla güvenilir biçimde taşıdığı boyuttur. Değeri, yolu ve istemci sürümünü kayda yazın, çünkü aynı sayıyı başka yerde uygulamak bir tahmindir.

Aynı profil başka bir güvenilir ağdan çalışıyorsa istemciyi onarılmış ilan etmek yerine bu farkı tanıda tutun. Değişen değişken yoldur ve testin ölçtüğü şey de yoldur.

İlgili makaleler