mDNS super WireGuard: tri pordegoj antaŭ ol egalulo respondas
Avahi bezonas taŭgan interfacon, itineron al la grupo kaj egalulon, kiu posedas la celon. Tri pordegoj, tri apartaj kontroloj kaj neniu disbranĉiĝo.
Meti la multdissendan flagon sur WireGuard-aparaton igas la interfacon taŭga por malkovra programaro, kaj tio estas ĉio, kion la flago faras. Ĝi ne diras al la protokolo, kien grupa paketo devas iri, kaj ĉe aparato kun pluraj egaluloj ne ekzistas unu evidenta respondo. Tri apartaj pordegoj staras inter funkcianta demono kaj malkovrita servo.
Testu ilin laŭvice, ĉar trapasi unu diras al vi nenion pri la sekva.
Unua pordego: la flago kaj la politiko de la demono
Linux WireGuard-aparato kreiĝas kiel punkt-al-punkta ligo sen ARP, kaj ĝi ne portas la multdissendan flagon defaŭlte. Aldoni la flagon estas loka interfaca ŝanĝo, farata de kio ajn administras la aparaton. Avahi havas sian propran bildon de la mondo sur tio, kaj ĝia defaŭlta politiko tute preterlasas punkt-al-punktajn interfacojn. Do du sendependaj taŭgecaj testoj validas antaŭ ol eĉ unu paketo moviĝos.
Do la demono bezonas eksplicitan decidon, ne nur funkciantan procezon. Ĝiaj dokumentitaj regiloj inkluzivas allow-interfaces, deny-interfaces kaj allow-point-to-point, kaj la lasta estas la agordo, kiun homoj maltrafas.
La subaj kontroloj raportas la ligajn flagojn, la multdissendan itineron kaj ĉu la agordo de la demono entute analiziĝas:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Demono, kiu sukcese startis, ne nepre malfermis poŝojn ĉe la interfaco, kiu gravas al vi. Legu ĝian efektivan agordon anstataŭ supozi, ke serva stato egalas al kovrado.
Dua pordego: la itinero al la grupo
La dua pordego estas ordinara enkursigo. Paketo adresita al 224.0.0.251 sekvas la plusendan tabelon kiel ĉio alia, kaj se la tabelo sendas ĝin el la fizika LAN-interfaco, neniu WireGuard-agordo tion ŝanĝos. Riparu unue la itineron kaj la resto de la esploro mallongiĝos. Rigardu, kion la kerno raportas por la grupa adreso, antaŭ ol tuŝi iujn ajn egalulajn ŝlosilojn.
| 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 |
Sen specifa itinero la kerno falas reen al la propra multdissenda traktado de la ligo, kio estas kial la defaŭlto aspektas ĝusta en plata LAN kaj malĝusta tuj kiam la sama grupa trafiko devas eliri per tunelo. La malsukceso estas silenta de la sendanta flanko: la informpeto iras ie, kaj la respondo neniam alvenas.
Tria pordego: WireGuard elektas unu egalulon por paketo
WireGuard elektas elirantan egalulon serĉante la celon en la permesitaj adresaroj, kaj la Linux-senda vojo faras tiun serĉon unufoje por paketo. Estas unu rezulto, kaj la paketo estas ĉifrata por tiu egalulo. La sama grupa prefikso aperanta en la permesitaj listoj de pluraj egaluloj ne kreas membrecon aŭ reproduktadon; ĝi kreas ambiguan serĉon, kiu solviĝas al unu el ili.
Sur dediĉita dufinpunkta ligo tio estas ĝuste kion vi volas, ĉar estas unu intencita ricevanto por la intence portata grupa trafiko. Sur interfaco kun kvin egaluloj ĝi estas limigo, ne trajto, kaj la solvo apartenas al la dezajno, ne al la agordo de iu unuopa egalulo.
Disbranĉa dezajno bezonas eksplicitan relajson, apartajn ligojn aŭ tute alian malkovran mekanismon. Publikigi dufinpunktan recepton kiel solvon por multaj klientoj ĉar ĉiu kliento povas testi la enirejon estas kiel tio malĝuste disfaldiĝas.
La eniranta direkto estas kontrolata alimaniere: la fonto de ricevita paketo devas fali ene de la permesita listo de la aŭtentikigita egalulo. Aldoni multdissendan celon tie ne anstataŭas la realan fontposedon de la sendanto.
Reflekto estas limo, ne ponto
La reflektilo de Avahi reproduktas mDNS-mesaĝojn inter la interfacoj, kiujn ĝi elektas, ĉe la aplikaĵa tavolo. Ĝi estas malkovra limo inter retoj, ne Ethernet-ponto kaj ne ĝenerala multdissenda enkursigilo. Du reflektiloj ligitaj al la samaj retoj volonte kreas buklon de ripetataj anoncoj.
Reflekto ankaŭ transdonas servnomojn kaj iliajn metadatumojn al alia reto, kio estas privateca decido same kiel enkursiga. Limigu la elektitajn interfacojn, kaj uzu servajn filtrilojn tie, kie la instalita versio subtenas ilin, por ke nur la anoncoj, kiujn rajtigita uzanto bezonas, transiru la limon.
Malkovro kaj uzo restas apartaj rezultoj. Kliento povas vidi anoncon por servo, kies anoncita adreso estas neatingebla de kie la kliento sidas, aŭ kies pordon ĝia alirpolitiko rifuzas. Konfirmu la servan konekton post kiam la anonco aperas, kaj se la aplikaĵo subtenas stabilan DNS-nomon aŭ eksplicitan servilan adreson, preferu tion al etendado de ligoloka malkovro. La priskribo de kriptoŝlosila enkursigo kovras la celbazan egalulan elekton, de kiu ĉio ĉi dependas.