mDNS cez WireGuard: tri brány, kým peer odpovie
Avahi potrebuje vhodné rozhranie, trasu ku skupine a peera, ktorý vlastní cieľ. Tri brány, tri samostatné kontroly a žiadne vetvenie.
Nastavenie príznaku multicast na zariadení WireGuard sprístupní rozhranie pre softvér na objavovanie, a tým účinok príznaku končí. Nehovorí protokolu, kam má skupinový paket ísť, a na zariadení s niekoľkými peermi neexistuje jediná zrejmá odpoveď. Medzi bežiacim démonom a objavenou službou stoja tri samostatné brány.
Testujte ich po poradí, pretože prejdenie jednej nič nehovorí o tej ďalšej.
Prvá brána: príznak a politika démona
Zariadenie WireGuard v Linuxe sa vytvára ako spojenie typu point-to-point bez ARP a v predvolenom nastavení nenesie príznak multicast. Pridanie príznaku je lokálna zmena rozhrania, ktorú vykonáva čokoľvek, čo zariadenie spravuje. Avahi má nad tým vlastný pohľad na svet a jeho predvolená politika rozhrania point-to-point úplne preskakuje. Pred pohybom jediného paketu teda platia dva nezávislé testy vhodnosti.
Démon teda potrebuje výslovné rozhodnutie, nielen bežiaci proces. Jeho dokumentované ovládacie prvky zahŕňajú allow-interfaces, deny-interfaces a allow-point-to-point, pričom posledný je nastavenie, ktoré ľudia prehliadajú.
Nižšie uvedené kontroly hlásia príznaky spoja, multicastovú trasu a to, či sa konfigurácia démona vôbec parsuje:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Démon, ktorý sa úspešne spustil, nemusí mať otvorené sockety na rozhraní, na ktorom vám záleží. Čítajte jeho efektívnu konfiguráciu, namiesto toho, aby ste predpokladali, že stav služby sa rovná pokrytiu.
Druhá brána: trasa ku skupine
Druhou bránou je bežné smerovanie. Paket adresovaný na 224.0.0.251 sleduje forwardovaciu tabuľku ako všetko ostatné, a ak ho tabuľka odošle cez fyzické rozhranie LAN, žiadna konfigurácia WireGuard to nezmení. Najprv opravte trasu a zvyšok vyšetrovania sa skráti. Pozrite sa, čo jadro hlási pre skupinovú adresu, skôr než sa dotknete akýchkoľvek kľúčov peerov.
| 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 |
Bez konkrétnej trasy sa jadro vracia k vlastnému spracovaniu multicastu spoja, a preto sa predvolené správanie javí ako správne na plochej sieti LAN a nesprávne, len čo má ten istý skupinový provoz odísť tunelom. Zlyhanie je z pohľadu odosielateľa tiché: dopyt niekam odíde a odpoveď nikdy nedorazí.
Tretia brána: WireGuard volí jedného peera na paket
WireGuard vyberá odchádzajúceho peera vyhľadaním cieľa v súboroch povolených adries a linuxová cesta odosielania toto hľadanie vykonáva raz na paket. Výsledok je jeden a paket sa šifruje pre tohto peera. Rovnaký skupinový prefix v povolených zoznamoch niekoľkých peerov nevytvára členstvo ani replikáciu; vytvára nejednoznačné hľadanie, ktoré sa rozhodne pre jedného z nich.
Na vyhradenom spoji s dvoma koncami je to presne to, čo chcete, pretože existuje jeden zamýšľaný príjemca pre zámerne prenášanú skupinovú prevádzku. Na rozhraní s piatimi peermi je to obmedzenie, nie funkcia, a oprava patrí do návrhu, nie do konfigurácie ktoréhokoľvek jednotlivého peera.
Návrh s vetvením potrebuje výslovný relay, samostatné spoje alebo úplne iný mechanizmus objavovania. Zverejniť recept pre dva konce ako riešenie pre mnoho klientov preto, že každý klient môže pingnúť bránu, je spôsob, ako to nasadiť nesprávne.
Prichádzajúci smer sa kontroluje inak: zdroj prijatého paketu musí spadať do povoleného zoznamu overeného peera. Pridanie multicast cieľa tam nenahrádza skutočné vlastníctvo zdroja odosielateľa.
Odraz je hranica, nie most
Reflektor Avahi reprodukuje správy mDNS medzi rozhraniami, ktoré vyberie, na aplikačnej vrstve. Je to hranica objavovania medzi sieťami, nie Ethernetový most a nie všeobecný multicastový router. Dva reflektory pripojené k tým istým sieťam radi vytvoria slučku opakovaných oznámení.
Odraz tiež odovzdáva názvy služieb a ich metadáta inej sieti, čo je rozhodnutie o súkromí rovnako ako rozhodnutie o smerovaní. Obmedzte vybrané rozhrania a použite filtre služieb tam, kde ich nainštalovaná verzia podporuje, aby hranicu prekračovali len oznámenia, ktoré oprávnený používateľ potrebuje.
Objavovanie a používanie zostávajú oddelenými výsledkami. Klient môže vidieť oznámenie služby, ktorej inzerovaná adresa je z miesta klienta nedostupná, alebo ktorej port jeho prístupová politika odmieta. Po zobrazení oznámenia potvrďte spojenie so službou, a ak aplikácia podporuje stabilný názov DNS alebo explicitnú adresu servera, dajte im prednosť pred rozširovaním link-local objavovania. Popis smerovania kryptokľúčom pokrýva výber peera podľa cieľa, na ktorom to všetko stojí.