Tünel ancak sunucu önce bir şey gönderdikten sonra çalışıyor gibi görünüyor. İstemciden başlatın ve hiçbir şey olmaz, birkaç saniye bekleyin, yeniden deneyin ve başarılı olur. Olağan tanı bozuk bir NAT'tır ve olağan tanı yanlıştır. Değişen şey, bir tarafın diğerinin nerede yaşadığını öğrenmesidir.

Uç nokta bilgisi, erişilebilirlik değil

Bir WireGuard eşi nereye göndereceğini bilmeden el sıkışma başlatmaz. Yapılandırma bunu adres ve porttan oluşan bir uç nokta olarak sağlar ve çalışan durum şu anda inandığı uç noktayı izler.

wg show o tablonun iki tarafını da yazdırır ve çıktıda uç noktası olmayan bir eş, ortak anahtarı ve izin verilen önekleri ne kadar doğru olursa olsun hiçbir şey başlatamaz. Herhangi bir kuralı değiştirmeden önce istemcinin görüşünü sunucununkiyle karşılaştırın, çünkü ikisi kimin ne bildiği konusunda sık sık anlaşamaz.

Bir eş uç noktayı nasıl öğrenir

WireGuard kasıtlı olarak sessizdir. Doğru kimlik doğrulanmış bir paket, eşin beklemediği bir adresten geldiğinde, uygulama o eşin uç noktasını yeni kaynağa günceller ve ağ değiştiren bir dizüstü bilgisayarda dolaşma böyle çalışır. Bu davranış yön bağımlılığını açıklar: sunucu önce gönderir ve paketi istemciye ulaşırsa, istemci sunucunun güncel adresini öğrenir ve yanıt verebilir. O zamana kadar gönderecek yeri yoktur. Mekanizma, ilk kullanımda güven kısayolu değil kimliği doğrulanmış dolaşmadır, çünkü paket uç nokta hareket etmeden önce geçerli olmak zorundaydı.

wg için araç belgeleri bu güncellemeyi açıklar ve bunun etrafında tasarım yapacaksanız bir kez okumaya değer.

Durum tutan çeviri kendi yönünü ekler

UDP çeviri yapan bir ağ geçidinden geçtiğinde, ağ geçidi gördüğü ilk paket için durum oluşturur. RFC 4787 bu davranışı ve eşlemeyi sonunda kaldıran zaman aşımlarını açıklar. Boşta kalan eşlemenin süresi dolar ve uzak taraftan gelen paket o zaman ağ geçidi tarafından ana makineye ulaşmadan önce atılır. Sabah boyunca çalışan bir tünel öğleden sonra yanıt vermeyi tam da bu nedenle bırakır.

Bu, aynı yönlü belirtiyi üreten ikinci ve bağımsız bir mekanizmadır. Hem uç nokta bilgisi hem çeviri durumu doğru olmalıdır ve birini düzeltmek diğerini düzeltmez.

Gerçekten istediğiniz yönü yapılandırın

Bağlantıyı başlatması gereken bir istemci için sunucunun uç noktasını istemcinin eş bölümüne koyun ve orada bırakın. Sunucunun önce göndermesine güvenmek, sakin bir ağda değişecek trafik sırasındaki bir rastlantıya güvenmektir. Yapılandırma amaçlanan yönü belirtmeli, onu keşfetmemelidir.

Çevirinin arkasında kalması ve erişilebilir olması gereken bir eş için o tarafta kalıcı bir keepalive etkinleştirin. Her 25 saniyede bir keepalive olağan başlangıç değeridir ve amacı tüneli test etmek değil eşlemeyi açık tutmaktır. Onu taşıyacak tek bir taraf seçin, çünkü iki tarafta etkinleştirmek sonucu iyileştirmeden trafiği ve günlük gürültüsünü ikiye katlar.

Durumu tetikleyiciden önce ve sonra karşılaştırın

Başarısız olduğu anda iki görünümü yakalayın, sonra sunucu gönderdikten sonra tekrar. İlk komut uç noktaları ve el sıkışmanın yaşını gösterir. İkincisi port için bir çeviri kaydı olup olmadığını gösterir. Yakalama hangi yönün gerçekten kablodan geçtiğini gösterir ve rota kontrolü istemcinin bu trafiği tamamen başka bir yere göndermediğini doğrular.

wg show
conntrack -L -p udp 2>/dev/null | grep 51820
tcpdump -ni any -c 20 'udp port 51820'
ip route get 198.51.100.7

Uç nokta sütununu ve çeviri kaydını birlikte not edin. Uç noktası olmayan bir eş ve eşlemesi olmayan bir ağ geçidi iki farklı arızadır. Yalnızca biri keepalive ile giderilir.

İlgili makaleler