WireGuard mobil veride çalışıyor ama aynı wifi'de çalışmıyor
LAN içinden yönlendiricinin genel adresine giden istek, mobil veriden gelen istekten farklı bir yol izler. Dışarıda test edin, sonra yerel bir yol seçin.
Tünel mobil veride açılıyor ve evde bağlanıyor durumunda kalıyor; aynı profil, aynı eş anahtarı ve arada hiçbir yapılandırma değişikliği yok. Fark yolculukta: LAN içinden yönlendiricinin genel adresine giden bir istek, internetten gelen bir istekle aynı yolculuk değil. Ev ağ geçitlerinin çoğu ya dönüş yolunu uygulamıyor ya da yalnızca belirli protokoller için uyguluyor. Bu, anahtarda hiçbir şey değişmemişken belirtiyi bozuk anahtar gibi gösteriyor. Bir anahtara, bağlantı noktası yönlendirmesine veya istemci profiline dokunmadan önce hangi yolun başarısız olduğunu belirleyin.
Bir adres, iki farklı yol
Dışarıdan bir paket yönlendiricinin genel adresine ulaşır ve bir bağlantı noktası yönlendirme kuralı onu içteki ana bilgisayardaki WireGuard dinleyicisine verir. İçeriden istemci aynı genel adresi arar, bu yüzden paket istemciden çıkar, yönlendiriciye varır ve LAN'a doğru geri çevrilmesi gerekir. İki yol tam o geri çevirmede ayrılır, çünkü yönlendirici aynı arayüzden hem çıkan hem yeniden giren bir akışı çevirmek zorundadır. Birçok uygulama onu çevirmek yerine düşürür ve istemci sonra hiç gönderilmemiş bir el sıkışmayı bekler.
Bu davranış genellikle NAT loopback veya hairpinning olarak adlandırılır ve WireGuard'a değil yönlendiriciye aittir; RFC 4787 bir ağ geçidinin destekleyebileceği veya desteklemeyebileceği çeviri durumlarını ortaya koyar. WireGuard'ın kendisi yol hakkında bir görüşe sahip değildir, çünkü yalnızca arayüzüne ulaşan paketleri görür. Yönlendirici akışı düşürdüğünde arka plan hizmeti hiçbir şey almaz, istemci el sıkışma zaman aşımı bildirir ve sunucu günlüğü boş kalır. Boş bir günlük bu nedenle paketin nerede durduğuna dair bir ipucudur, sunucunun çöktüğünün kanıtı değildir. Yeniden kurmanın hiçbir şeyi değiştirmemesinin nedeni de budur.
Tersi de önemlidir: LAN adresinden bir el sıkışma denemesi gösteren bir sunucu günlüğü, paketin vardığını ve yolun iyi olduğunu kanıtlar; bu da soruşturmayı anahtarlara ve izin verilen adreslere kaydırır. Günlüğü kanıtladığı şey için okuyun, görmeyi umduğunuz şey için değil.
Herhangi bir şeyi değiştirmeden önce yeniden üretin
Aynı cihaz ve aynı profille yetkili bir dış ağdan test edin, sonra testi hiçbir şeyi düzenlemeden LAN içinde yineleyin. Dışarıda tamamlanan bir el sıkışma ve içeride cihazdan hiç çıkmayan bir istemci, durumu tahmin etmek yerine yeniden üretir. Her iki deneme de aynı profili kullanmalıdır, yoksa karşılaştırma hiçbir şey kanıtlamaz.
Sonra uç nokta adının bu cihaz için neye çözüldüğüne bakın. Aşağıdaki üç komut istemcinin gerçekte hangi adresi aradığını da gösterir:
wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.netİlk komut arayüzün şu anda kullandığı uç noktayı bildirir, diğer ikisi adın bu makinede neye çözüldüğünü gösterir. Sunucuyla aynı ağdayken genel bir adres arayan istemci hairpin yolunu kullanıyordur. LAN adresini arayan istemci bunu yapmıyordur ve oradaki bir arıza başka bir soruşturmaya aittir. Bu ayrım, sonraki bölümün geçerli olup olmadığına karar verir.
Yakındaki bir sunucuya ulaşmanın desteklenen yolları
En temiz düzen, bölünmüş ufuk yanıtıdır: genel ad internet için genel adrese, içerideki istemciler için sunucunun LAN adresine çözülür. Profil tek bir uç nokta adı tutar ve çözümleyici yolu seçer. Bu, iç DNS yanıtının denetimini gerektirir; ev yönlendiricisi bunu genellikle sunar ve bir kuruluş bunu bilerek düzenleyebilir. Bu denetim olmadan kalan seçenekler bir yönlendirici özelliği veya ikinci bir profildir.
Yönlendirici özelliği yansımadır: ağ geçidi akışı içeriden dışarıya çevirir ve yeniden içeriye gönderir. Çalıştığı yerde istemci değişikliği gerektirmez, çalışmadığı yerde hiçbir istemci ayarı onu kurtarmaz. Özelliği, yönlendiricinin özellik listesini okumak yerine içerideki bir deneme sırasında sunucu günlüğünü izleyerek test edin.
Profili özel bir adrese düzenlemek bir teşhistir, tasarım değildir. Sunucunun LAN'da yanıt verdiğini kanıtlar ve dizüstü bilgisayar evden çıktığı anda aynı profili bozar.
| Approach | What it depends on | Where it fails |
|---|---|---|
| Split-horizon name | Control of the internal DNS answer | Clients that resolve through a server outside the zone |
| Router reflection | Gateway support for hairpin translation | Routers that drop the flow silently |
| Private address in the profile | Nothing beyond the LAN | Every network except the one at home |
Profili evden uzakta kullanılabilir tutun
Hangi yolu seçerseniz seçin, kimlik denetimine dokunmayın. Uç nokta adresi eş kimliği değildir ve bir adres değişikliği, tesadüfen yanıt veren ilgisiz bir genel anahtarı kabul etmeyi asla haklı çıkarmaz. WireGuard anahtarla kimlik doğrular, bu yüzden yanlış bir ana bilgisayar beklenmedik bir şeye erişim vermek yerine el sıkışmada başarısız olur.
Genel adres hareket ederse, adı kullanışlı tutan şey dinamik DNS'tir ve istemcinin yenileme davranışı değişikliğin ne kadar hızlı ulaşacağını belirler. Bunu bir adres değişikliğinden sonra dışarıdan test edin, çünkü LAN durumu bunu doğrulayamaz. Eski yanıtı kaydın ömrünün ötesinde önbelleğe alan bir çözümleyiciye dikkat edin. Hâlâ önceki adrese işaret eden bir ad, tam olarak çökmüş bir sunucu gibi görünür.
Profilin hangi adı kullandığını ve sınırın her iki yanında neye çözüldüğünü yazın. Kimsenin kaydetmediği bir yönlendirici özelliğine bağlı bir profil, bir sonraki bellenim güncellemesini bekleyen bir destek çağrısıdır. Not aynı zamanda bir iç arızanın bilinen hairpin durumu mu yoksa yeni bir şey mi olduğunu bir sonraki kişiye söyleyen şeydir.