WireGuard üzerinden mDNS: bir peer yanıt vermeden önce üç kapı
Avahi'nin uygun bir arayüze, gruba giden bir yola ve hedefi elinde tutan bir peer'a ihtiyacı var. Üç kapı, üç ayrı kontrol ve hiç yayılma yok.
Bir WireGuard cihazında multicast bayrağını ayarlamak arayüzü keşif yazılımı için uygun hale getirir ve bayrağın yaptığı tek şey budur. Protokole grup paketinin nereye gitmesi gerektiğini söylemez ve birden fazla peer'ı olan bir cihazda tek bir açık yanıt yoktur. Çalışan bir daemon ile keşfedilen hizmet arasında üç ayrı kapı durur.
Bunları sırayla test edin, çünkü birini geçmek diğeri hakkında hiçbir şey söylemez.
Birinci kapı: bayrak ve daemon'un politikası
Linux WireGuard cihazı ARP olmadan noktadan noktaya bağlantı olarak oluşturulur ve varsayılan olarak multicast bayrağını taşımaz. Bayrağı eklemek, cihazı yöneten ne varsa onun gerçekleştirdiği yerel bir arayüz değişikliğidir. Avahi bunun üzerinde kendi dünya görüşüne sahiptir ve varsayılan politikası noktadan noktaya arayüzleri tamamen atlar. Bu nedenle tek bir paket hareket etmeden önce iki bağımsız uygunluk testi geçerlidir.
Yani daemon'un yalnızca çalışan bir süreç değil, açık bir karar vermesi gerekir. Belgelenmiş kontrolleri allow-interfaces, deny-interfaces ve allow-point-to-point içerir ve sonuncusu insanların gözden kaçırdığı ayardır.
Aşağıdaki kontroller bağlantı bayraklarını, multicast rotasını ve daemon'un yapılandırmasının ayrıştırılıp ayrıştırılmadığını bildirir:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Başarıyla başlatılan bir daemon, sizin için önemli olan arayüzde soketler açmış olmayabilir. Hizmet durumunun kapsama eşit olduğunu varsaymak yerine etkin yapılandırmasını okuyun.
İkinci kapı: gruba giden rota
İkinci kapı sıradan yönlendirmedir. 224.0.0.251 adresine gönderilen paket her şey gibi iletim tablosunu izler ve tablo onu fiziksel LAN arayüzünden dışarı gönderiyorsa hiçbir WireGuard yapılandırması bunu değiştirmez. Önce rotayı düzeltin, araştırmanın geri kalanı kısalır. Herhangi bir peer anahtarına dokunmadan önce çekirdeğin grup adresi için ne bildirdiğine bakın.
| Observation | Gate it belongs to | What it does not prove |
|---|---|---|
Multicast flag present on wg0 | Interface eligibility | The daemon will use the interface |
Route to the group via wg0 | Forwarding | Any peer will receive it |
| Destination inside a peer's allowed list | Peer selection | That peer's network will answer |
Belirli bir rota yoksa çekirdek bağlantının kendi multicast işleyişine döner, bu yüzden varsayılan düz bir LAN'da doğru, aynı grup trafiği tünelden çıkması gerektiği anda yanlış görünür. Hata gönderen tarafında sessizdir: sorgu bir yere gider ve yanıt asla gelmez.
Üçüncü kapı: WireGuard paket başına bir peer seçer
WireGuard, izin verilen adres kümelerinde hedefi arayarak giden peer'ı seçer ve Linux iletim yolu bu aramayı paket başına bir kez yapar. Tek bir sonuç vardır ve paket o peer için şifrelenir. Aynı grup öneki birden çok peer'ın izin verilen listelerinde görünmesi üyelik ya da çoğaltma yaratmaz; bunlardan birinde sonuçlanan belirsiz bir arama yaratır.
İki uçlu özel bir bağlantıda bu tam olarak istediğiniz şeydir, çünkü kasıtlı olarak taşınan grup trafiği için tek bir amaçlanan alıcı vardır. Beş peer'lı bir arayüzde bu bir sınırlamadır, özellik değildir ve düzeltme herhangi bir peer'ın yapılandırmasına değil tasarıma aittir.
Yayılmalı bir tasarım açık bir röle, ayrı bağlantılar veya tamamen farklı bir keşif mekanizması gerektirir. Her istemci ağ geçidini pingleyebildiği için iki uçlu bir tarifi çok istemcili çözüm olarak yayımlamak, bunun yanlış şekilde devreye alınma biçimidir.
Gelen yön farklı denetlenir: alınan paketin kaynağı kimliği doğrulanmış peer'ın izin verilen listesinin içinde olmalıdır. Oraya multicast hedefi eklemek gönderenin gerçek kaynak sahipliğinin yerini almaz.
Yansıtma bir sınır, köprü değildir
Avahi'nin yansıtıcısı seçtiği arayüzler arasında mDNS mesajlarını uygulama katmanında yeniden üretir. Ağlar arasında bir keşif sınırıdır, Ethernet köprüsü ve genel bir multicast yönlendirici değildir. Aynı ağlara bağlı iki yansıtıcı tekrarlanan duyurulardan oluşan bir döngüyü seve seve oluşturur.
Yansıtma ayrıca hizmet adlarını ve üstverilerini başka bir ağa teslim eder, bu da yönlendirme kararı olduğu kadar gizlilik kararıdır. Seçilen arayüzleri sınırlayın ve kurulu sürümün desteklediği yerlerde hizmet filtreleri kullanın, böylece sınırı yalnızca yetkili bir kullanıcının ihtiyaç duyduğu duyurular geçsin.
Keşif ve kullanım ayrı sonuçlar olarak kalır. Bir istemci, duyurulan adresi istemcinin bulunduğu yerden ulaşılamaz olan ya da bağlantı noktası erişim politikası tarafından reddedilen bir hizmetin duyurusunu görebilir. Duyuru göründükten sonra hizmet bağlantısını doğrulayın ve uygulama kararlı bir DNS adını ya da açık bir sunucu adresini destekliyorsa, bağlantı yerel keşfini genişletmek yerine bunu tercih edin. Şifreleme anahtarı yönlendirmesi açıklaması, tüm bunların bağlı olduğu hedef tabanlı peer seçimini kapsar.