WireGuard takılıyor: bir MTU sınırı mı yoksa eksik yönlendirme kuralı mı?
Sunucunun ötesindeki her şey bir yönlendirme veya dönüş yolu sorunudur. Küçük istekler çalışırken büyüklerin takılması paket boyutunun imzasıdır.
Alışkanlık, WireGuard yanlış davranmaya başlar başlamaz MTU’yu düşürmektir ve bu alışkanlık başka bir arızayı gizler. İletmeyen bir geçit ile büyük paketleri taşımayan bir yol, ayırt edilebilir desenler üretir: biri her iki yönde ve her boyutta başarısız olur, diğeri küçük isteklerde hayatta kalır ve büyüklerde ölür. Herhangi bir sayıyı değiştirmeden önce hangi biçime sahip olduğunuzu belirleyin. Test ucuzdur ve olası nedenlerin yarısını ortadan kaldırır.
İki arıza, iki farklı biçim
Yönlendirme sorunu sunucunun hemen ardında ortaya çıkar. El sıkışma başarılı olur, tünel adresi yanıt verir ve geçidin arkasındaki hiçbir şeye küçük bir istekle bile ulaşılamaz. Paket sunucuya ulaştı ve iletilmedi ya da yanıtın dönüş yolu yoktu.
Boyut sorunu yalnızca bir eşiğin üzerinde ortaya çıkar. DNS, bir TCP el sıkışması ve küçük bir API çağrısı çalışırken dosya indirme veya büyük bir yanıt takılır. Sığan paketler uçtan uca gitti ve sığmayanlar bir yerde kullanışlı bir rapor olmadan düşürüldü.
Bu tanımlar farklı kişilere ve farklı yapılandırma dosyalarına işaret eder, bu yüzden biçimi ölçmek tahminden daha değerlidir. Geçide tek bir ping onları ayıramaz.
Bir şeyi küçültmeden önce yönlendirmeyi dışlayın
Geçidin kendisini değil, geçidin ötesindeki bir hedefi test edin. Sunucunun tünel adresine ping, yalnızca arayüzün açık olduğunu ve tüneli bitiren makineye ulaştığınızı kanıtlar. Daha geniş ağın trafiği, o makinede IP yönlendirmesinin etkin olmasına ve iletilen akışa izin veren bir güvenlik duvarına bağlıdır. İkisi de doğru olmalıdır ve biri yanlışsa aynı sessizlik ortaya çıkar.
Dönüş yönlendirmesi de aynı derecede önemlidir. Hedef ağ, istemcinin tünel adresine nasıl ulaşacağını bilmiyorsa istek gelir ve yanıt kaybolur, istemci ise düşürülmüş bir yönlendirmeyle aynı görünen bir zaman aşımı bildirir.
Tasarım adres çevirisi kullanıyorsa, çeviri kuralı o dönüş yolunun bir parçasıdır. MTU sorununu kovalarken onu kaldırmak, çalışan bir tasarımı bozuk bir tasarıma dönüştürür; bu yüzden mevcut kuralları düzenlemeden önce okuyun.
Kırılmanın nerede başladığını ölçün
Önce yönlendirme durumunu ve filtre kurallarını okuyun. Bunlar yalnızca okuma kontrolleridir ve ucuz soruyu yanıtlar:
sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9
Ardından istemciden geçidin ötesindeki bir ana bilgisayara doğru don’t-fragment bitiyle boyutları deneyin:
ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9
İlk test çalışır ve ikincisi bir parçalanma hatasıyla başarısız olursa, yol size kullanılabilir boyutunu söylüyor demektir. İkisi de çalışmıyorsa yönlendirmeye veya yönlendirme tablosuna bakıyorsunuz ve MTU değiştirilecek değişken değildir.
| Observation | Points toward | Where to look |
|---|---|---|
| Nothing beyond the gateway works | Forwarding or return route | Forwarding flag, filter rules, routing table |
| Small works, large stalls | Packet size on the path | Tunnel MTU and the link underneath |
| Only names fail | DNS resolution | The resolver configured for the tunnel |
| Works sometimes | Multiple paths or state expiry | Flow selection and NAT state |
Kanıtladığınız katmanı düzeltin
Arıza yönlendirme ise düzeltme, tasarımın izin verdiği ölçüde dar ifade edilmiş bir yönlendirme kuralı veya rotadır. Arıza boyut ise düzeltme, tam bu yoldaki kapsüllemeyi hesaba katan ve gereksinim duyan arayüze uygulanan, filodaki her bağdaştırıcıya değil, bir MTU’dur.
Her iki durumda da, ardından aynı görevi aynı hedefe karşı yineleyin. Özgün büyük aktarım artık tamamlanıyorsa, değişiklik başarısız olan katmanı ele almıştır. Yalnızca küçük test iyileştiyse bir belirtiyi tedavi ettiniz ve gerçek sınır hâlâ yerinde.
Değişiklikten önce hangi biçimi gözlemlediğinizi yazın. Düzeltmenin yanına kaydedilen o tek satır, bir sonraki kişinin hiçbir zaman sorun olmayan bir MTU’yu düşürmesini engelleyen şeydir.