SSH bağlanıyor, istem görünüyor ve bir komut büyük bir şey döndürdüğü anda oturum ölüyor. Yankı bir süre daha çalışıyor, sonra istemci tüneli hâlâ ayakta gösterirken bağlantı zaman aşımına uğruyor. Veri gelene kadar sağlıklı olan oturum genellikle SSH hatasına değil, bir boyut sınırına çarpıyor. Aşağıdaki kontroller en ucuz açıklamayı önce eleyecek şekilde sıralanmıştır.

Profile dokunmadan önce arızanın şeklini okuyun

Küçük paketler geçiyor, dolu olanlar geçmiyor. İstem, başlık veya tek bir tuş basımı kolayca sığıyor; dizin listesi, indirme veya yapıştırılmış blok sığmıyor. Davranışın değiştiği boyut ipucudur, SSH'ın ilgili program olması değil.

Mekanizma şudur: yolun MTU'sunu bulma, ki bu geri bildirime bağlıdır. TCP bir segment boyutu seçer ve yoldaki bir yönlendirici oluşan paketi iletemiyorsa bunu ICMP mesajıyla bildirmesi gerekir. Kapsülleme dış paketi içtekinden büyük yapar, bu yüzden tünel içinde kullanılabilir boyut her zaman fiziksel bağlantının altındadır. O ICMP mesajlarını herhangi bir yerde süzün, gönderen düzeltmeyi asla almaz, dolu segmentler göndermeye devam eder ve dış paket haber verilmeden atılır.

Tavanı iki taraftan ölçün

Herhangi birini değiştirmeden önce tünelin MTU'sunu fiziksel bağlantıyla karşılaştırın. Fiziksel değeri kopyalayan tünel, uyuşmazlığın nerede olduğunu zaten söyledi.

Tünelin içinden parçalanmayı yasaklayan bir istekle deneyin, yanıtlar gelene kadar yükü düşürün. Boyut argümanı yalnızca yükü sayar, bu yüzden çalışan sayı her zaman arayüz MTU'sunun altında kalır. Arayüz sayısı gerekiyorsa başlık boyutlarını tekrar ekleyin.

ip link show tun0
ping -M do -s 1380 10.9.0.1

Testi tünelin dışından sunucunun genel adresine karşı yineleyin. Büyük testler orada da başarısız olursa sınır sunucuya giden yoldadır ve hiçbir tünel seçeneği onu yerinden oynatmaz. Bu karşılaştırma sizi hiç sorun olmayan bir istemciyi ayarlamaktan kurtarır. Bir yapılandırma dosyası açmadan önce iki sonucu da yazın.

mssfix ve fragment farklı işler yapar

mssfix tünel içindeki TCP bağlantılarının el sıkışmaları sırasında duyurdukları segment boyutunu sınırlar. SSH, HTTPS ve dosya kopyaları için doğru kaldıraç budur, bu yüzden ayarlandığı anda takılma çoğu zaman kaybolur. UDP yüklerine hiç dokunmaz.

UDP hizmetini de taşıyan bir tünel, SSH düzeltildikten sonra da başarısız olmaya devam edebilir ve bu sonuç tek bir seçeneğin her şeyi kapsadığını sanan herkesi şaşırtır.

fragment diğer mekanizma ve farklı bir araçtır. Kapsüllemeden önce aşırı büyük paketleri böler, yalnızca UDP taşıması için geçerlidir, her datagram için ek yük getirir ve bozuk keşif için son çare olarak belgelenmiştir. İki ayar da tüneli sonlandıran eşlerde aynı olmalıdır. Bir uç sınırlarken diğeri parçalarsa günlükte uyarılar ve dosyalardan kimsenin tahmin edemeyeceği davranışlar oluşur.

Arayüz MTU'sunu düşürmek kaba seçenektir

Her iki uçta arayüz MTU'sunu azaltmak kaba araçtır. Her iç göndericiye daha küçük bir sayı söyler, bu işe yarar ve bu maliyeti ihtiyaç duyan TCP akışlarına değil tüm trafiğe yükler.

Tünel sizin sınırlayamadığınız trafiği taşıyorsa veya istemci profilini kontrol etmediğiniz bir cihazsa bunu seçin. Simetrik uygulayın ve değeri profilin yanına yazın. Yarı uygulanmış bir değişiklik hiç yapılmamıştan daha kötüdür, çünkü bir düzeltme gibi görünür.

Takılan aktarımla yeniden test edin

Ayarların yüklenmesi için yeniden bağlanın, yeni bir bağlantı açın ve donan komutu yineleyin. Segment boyutu el sıkışmada kararlaştırılır, bu yüzden yeniden bağlanmayı atlatan oturum hâlâ eski değeri taşır. Burada ping zayıf bir testtir, çünkü arızanın tamamı küçük paketlerin geçmesidir. Bozulan listeyi, indirmeyi veya yapıştırmayı kullanın.

Takılma daha küçük bir boyutta sürüyorsa başka yere bakın: akışı sonlandıran durum bilgili güvenlik duvarı, yinelenen adres veya yeniden bağlanmada kayan rota. Başarısız testin boyutunu ve değiştirdiğiniz ayarı yazın, çünkü o çift sonraki raporu yararlı kılar.

İlgili makaleler