MTU sorunları: Bazı siteler neden yarım açılır?
Ping çalışıyor, DNS çözülüyor ama sayfa bir türlü yüklenmiyor. Sebep çoğu zaman paket boyutu: MTU uyumsuzluğu ve engellenmiş ICMP. Belirtileri, test yöntemini ve kalıcı çözümü anlatıyorum.
Ağ sorunlarının en sinsi türlerinden biri: bağlantı kuruluyor, küçük istekler geçiyor, ama büyük bir yanıt geldiğinde her şey donuyor. HTTPS el sıkışması yarıda kalıyor, SSH bağlanıp ilk komutta takılıyor, bazı siteler açılıyor bazıları açılmıyor.
MTU nedir?
MTU (Maximum Transmission Unit), bir ağ bağlantısının tek seferde taşıyabileceği en büyük paket boyutudur. Ethernet'te 1500 bayttır. Ama aradaki her katman pay alır: PPPoE kullanan ev bağlantılarında 1492, WireGuard tünellerinde varsayılan olarak 1420 civarındadır.
Sorun nerede başlıyor?
Normalde gönderici, paket yolda büyük geldiğinde bir ICMP mesajı alır ("parçalanma gerekli" ya da IPv6'da "Packet Too Big") ve paketlerini küçültür. Buna Path MTU Discovery denir. Bir güvenlik duvarı "ICMP tehlikelidir" diyerek bu mesajları engellerse, gönderici paketin neden kaybolduğunu hiç öğrenemez. Büyük paketler sessizce düşer.
Test etmek
Parçalamayı yasaklayarak farklı boyutlarda ping atın. 1472 bayt veri + 28 bayt başlık = 1500:
# Linux
ping -M do -s 1472 1.1.1.1
# Windows
ping -f -l 1472 1.1.1.1
"Message too long" ya da "paketin parçalanması gerekiyor" hatası alırsanız boyutu düşürerek geçen en büyük değeri bulun. Gerçek MTU, bu değer + 28'dir.
Çözümler
- ICMP'yi tamamen engellemeyin. En azından "parçalanma gerekli" ve IPv6'da "Packet Too Big" mesajlarına izin verin. IPv6'da ICMPv6 olmadan ağ düzgün çalışmaz.
- MSS sabitleme: Yönlendirici ya da tünel ucunda TCP bağlantılarının en büyük segment boyutunu yola uygun hale getirin:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --clamp-mss-to-pmtu - Tünel arayüzünün MTU'sunu düşürün. VPN ya da Docker ağlarında sorun yaşıyorsanız arayüz MTU'sunu dış bağlantınıza göre ayarlayın.
Sonuç
"Bazı siteler açılmıyor" şikâyeti geldiğinde DNS'ten sonra bakılacak ilk yer paket boyutudur. Ve kural basit: ICMP'yi körü körüne kapatmayın.