mDNS per WireGuard: trys vartai, kol peer atsakys
Avahi reikia tinkamos sąsajos, maršruto į grupę ir peer, kuriam priklauso paskirties vieta. Trys vartai, trys atskiri patikrinimai ir jokio išskleidimo.
Multicast vėliavėlės nustatymas WireGuard įrenginyje padaro sąsają tinkamą atradimo programinei įrangai, ir tuo vėliavėlės veikimas baigiasi. Ji nepasako protokolui, kur turi eiti grupės paketas, o įrenginyje su keliais peer nėra vieno akivaizdaus atsakymo. Tarp veikiančio demono ir atrastos paslaugos stovi trys atskiri vartai.
Tikrinkite juos iš eilės, nes vienų praėjimas nieko nesako apie kitus.
Pirmieji vartai: vėliavėlė ir demono politika
Linux WireGuard įrenginys kuriamas kaip taškas-tašką jungtis be ARP, ir pagal numatytuosius nustatymus neturi multicast vėliavėlės. Vėliavėlės pridėjimas yra vietinis sąsajos pakeitimas, kurį atlieka bet kas, kas valdo įrenginį. Avahi turi savo pasaulio vaizdą virš to, o jo numatytoji politika visiškai praleidžia taškas-tašką sąsajas. Todėl prieš pajudant vienam paketui taikomi du nepriklausomi tinkamumo testai.
Taigi demonui reikia aiškaus sprendimo, o ne vien veikiančio proceso. Jo dokumentuoti valdikliai apima allow-interfaces, deny-interfaces ir allow-point-to-point, o paskutinis yra nustatymas, kurį žmonės praleidžia.
Toliau pateikti patikrinimai praneša apie jungties vėliavėles, multicast maršrutą ir ar demono konfigūracija apskritai analizuojama:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Sėkmingai paleistas demonas nebūtinai atidarė lizdus sąsajoje, kuri jums rūpi. Skaitykite jo efektyviąją konfigūraciją, o ne manykite, kad paslaugos būsena lygi aprėpčiai.
Antrieji vartai: maršrutas į grupę
Antrieji vartai yra įprastas maršrutizavimas. Paketas, adresuotas 224.0.0.251, seka persiuntimo lentele kaip ir viskas kitas, o jei lentelė siunčia jį per fizinę LAN sąsają, jokia WireGuard konfigūracija to nepakeis. Pirmiausia pataisykite maršrutą ir likusi tyrimo dalis sutrumpės. Pažiūrėkite, ką branduolys praneša apie grupės adresą, prieš liesdami bet kokius peer raktus.
| 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 |
Be konkretaus maršruto branduolys grįžta prie pačios jungties multicast apdorojimo, todėl numatytasis elgesys atrodo teisingai plokščiame LAN ir neteisingai, kai tik tas pats grupės srautas turi išeiti per tunelį. Gedimas yra tylus siuntėjo pusėje: užklausa kažkur nueina, o atsakymas niekada neateina.
Tretieji vartai: WireGuard parenka vieną peer vienam paketui
WireGuard pasirenka išeinantį peer, ieškodamas paskirties vietos leidžiamų adresų rinkiniuose, o Linux perdavimo kelias atlieka šią paiešką kartą kiekvienam paketui. Rezultatas vienas, ir paketas šifruojamas tam peer. Tas pats grupės prefiksas kelių peer leidžiamuose sąrašuose nesukuria narystės ar replikacijos; jis sukuria dviprasmišką paiešką, kuri išsprendžiama vienam iš jų.
Dviejų galų dedikuotoje jungtyje tai yra būtent tai, ko norite, nes yra vienas numatytas gavėjas sąmoningai perduodamam grupės srautui. Sąsajoje su penkiais peer tai yra apribojimas, o ne savybė, ir pataisymas priklauso dizainui, o ne vieno peer konfigūracijai.
Išskleistas dizainas reikalauja aiškaus rele, atskirų jungčių ar visiškai kito atradimo mechanizmo. Dviejų galų recepto skelbimas kaip daugelio klientų sprendimas todėl, kad kiekvienas klientas gali pinginti šliuzą, yra būdas, kuriuo tai diegiama neteisingai.
Įeinanti kryptis tikrinama kitaip: gauto paketo šaltinis turi patekti į autentifikuoto peer leidžiamą sąrašą. Multicast paskirties vietos pridėjimas ten nepakeičia tikrosios siuntėjo šaltinio nuosavybės.
Atspindys yra riba, o ne tiltas
Avahi atšvaitas atkuria mDNS pranešimus tarp pasirinktų sąsajų programų lygmenyje. Tai atradimo riba tarp tinklų, o ne Ethernet tiltas ir ne bendras multicast maršrutizatorius. Du atšvaitai, prijungti prie tų pačių tinklų, mielai sukurs pasikartojančių skelbimų kilpą.
Atspindys taip pat perduoda paslaugų pavadinimus ir jų metaduomenis kitam tinklui, o tai yra privatumo sprendimas ne mažiau nei maršrutizavimo. Apribokite pasirinktas sąsajas ir naudokite paslaugų filtrus ten, kur įdiegta versija juos palaiko, kad ribą peržengtų tik įgaliotam naudotojui reikalingi skelbimai.
Atradimas ir naudojimas lieka atskiri rezultatai. Klientas gali matyti skelbimą apie paslaugą, kurios skelbiamas adresas nepasiekiamas iš ten, kur yra klientas, arba kurios prievadą atmeta jo prieigos politika. Patvirtinkite paslaugos ryšį po to, kai skelbimas pasirodo, ir jei programa palaiko stabilų DNS pavadinimą ar aiškų serverio adresą, teikite tam pirmenybę, o ne plėskite jungties vietinį atradimą. Šifravimo rakto maršrutizavimo aprašymas apima paskirties vietos pagrindu veikiantį peer pasirinkimą, nuo kurio visa tai priklauso.