mDNS juu ya WireGuard: malango matatu kabla peer haijajibu
Avahi inahitaji kiolesura kinachofaa, njia kuelekea kundi na peer anayemiliki lengwa. Malango matatu, ukaguzi vitatu tofauti na hakuna usambazaji.
Kuweka bendera ya multicast kwenye kifaa cha WireGuard hufanya kiolesura kifae kwa programu za ugunduzi, na bendera hufanya hivyo tu. Haielezi itifaki pakiti ya kundi iende wapi, na kwenye kifaa chenye peer kadhaa hakuna jibu moja la wazi. Malango matatu tofauti yanasimama kati ya daemon inayofanya kazi na huduma iliyogunduliwa.
Wapime kwa mpangilio, kwa sababu kufaulu moja hakuambii chochote kuhusu linalofuata.
Lango la kwanza: bendera na sera ya daemon
Kifaa cha Linux WireGuard huundwa kama kiungo cha nukta-hadi-nukta bila ARP, na kwa chaguo-msingi hakibeba bendera ya multicast. Kuongeza bendera ni mabadiliko ya ndani ya kiolesura, yanayofanywa na chochote kinachosimamia kifaa. Avahi ina mtazamo wake wa dunia juu ya haya, na sera yake ya chaguo-msingi inaruka kabisa violesura vya nukta-hadi-nukta. Kwa hiyo majaribio mawili huru ya ufaafu yanatumika kabla pakiti moja kusogea.
Kwa hiyo daemon inahitaji uamuzi wa wazi, si mchakato unaoendelea tu. Vifaa vyake vya udhibiti vilivyoandikwa vinajumuisha allow-interfaces, deny-interfaces na allow-point-to-point, na cha mwisho ni mpangilio ambao watu huukosa.
Ukaguzi hapa chini huripoti bendera za kiungo, njia ya multicast na kama usanidi wa daemon unachanganuliwa kabisa:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Daemon iliyoanza kwa mafanikio si lazima iwe imefungua soketi kwenye kiolesura unachokijali. Soma usanidi wake unaofanya kazi badala ya kudhani kuwa hali ya huduma ni sawa na ufikiaji.
Lango la pili: njia kuelekea kundi
Lango la pili ni uelekezaji wa kawaida. Pakiti inayoelekezwa kwa 224.0.0.251 hufuata jedwali la upelekaji kama kila kitu kingine, na ikiwa jedwali linaituma nje kupitia kiolesura halisi cha LAN, hakuna usanidi wa WireGuard utakaobadilisha hilo. Rekebisha njia kwanza na uchunguzi uliobaki utakuwa mfupi. Angalia kile kernel inaripoti kuhusu anwani ya kundi kabla ya kugusa funguo zozote za peer.
| 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 |
Bila njia maalum, kernel hurudi kwenye ushughulikiaji wake wa multicast wa kiungo, ndiyo sababu chaguo-msingi huonekana sahihi kwenye LAN tambarare na lisilo sahihi mara tu trafiki hiyo ya kundi inapopaswa kutoka kupitia handaki. Kushindikana ni kimya kutoka upande wa mtumaji: swali huenda mahali fulani, na jibu haliwasili kamwe.
Lango la tatu: WireGuard huchagua peer mmoja kwa kila pakiti
WireGuard huchagua peer anayetoka kwa kutafuta lengwa katika seti za anwani zinazoruhusiwa, na njia ya usambazaji ya Linux hufanya utafutaji huo mara moja kwa kila pakiti. Matokeo ni moja, na pakiti husimbwa kwa peer huyo. Kiambishi awali kile kile cha kundi kinachojitokeza katika orodha zinazoruhusiwa za peer kadhaa hakiundi uanachama wala nakala; huunda utafutaji usio wazi unaoishia kwa mmoja wao.
Kwenye kiungo maalum cha ncha mbili hii ndiyo hasa unayotaka, kwa sababu kuna mpokeaji mmoja aliyekusudiwa kwa trafiki ya kundi inayobebwa kwa makusudi. Kwenye kiolesura chenye peer tano hii ni kikwazo, si sifa, na marekebisho ni ya muundo na si ya usanidi wa peer yeyote mmoja.
Muundo wa usambazaji unahitaji relay ya wazi, viungo tofauti au utaratibu tofauti kabisa wa ugunduzi. Kuchapisha kichocheo cha ncha mbili kama suluhisho la wateja wengi kwa sababu kila mteja anaweza kupinga lango ni jinsi hii inavyowekwa vibaya.
Mwelekeo wa kuingia hukaguliwa tofauti: chanzo cha pakiti iliyopokelewa lazima kiwe ndani ya orodha inayoruhusiwa ya peer aliyethibitishwa. Kuongeza lengwa la multicast hapo hakubadilishi umiliki halisi wa chanzo wa mtumaji.
Uakisi ni mpaka, si daraja
Kiakisishi cha Avahi huzalisha tena jumbe za mDNS kati ya violesura inayochagua, katika tabaka la programu. Ni mpaka wa ugunduzi kati ya mitandao, si daraja la Ethernet na si kielekezi cha jumla cha multicast. Viakisishi viwili vilivyounganishwa na mitandao hiyo hiyo vitatengeneza kwa furaha mzunguko wa matangazo yanayorudiwa.
Uakisi pia hupeana majina ya huduma na metadata yake kwa mtandao mwingine, jambo ambalo ni uamuzi wa faragha kama vile ni uamuzi wa uelekezaji. Punguza violesura vilivyochaguliwa, na tumia vichujio vya huduma pale toleo lililowekwa linavyovisaidia, ili tu matangazo ambayo mtumiaji aliyeidhinishwa anayahitaji yavuke mpaka.
Ugunduzi na matumizi hubaki kuwa matokeo tofauti. Mteja anaweza kuona tangazo la huduma ambayo anwani yake iliyotangazwa haifikiki kutoka anapokaa mteja, au ambayo bandari yake inakataliwa na sera yake ya ufikiaji. Thibitisha muunganisho wa huduma baada ya tangazo kuonekana, na ikiwa programu inaunga mkono jina la DNS thabiti au anwani mahususi ya seva, ipendelee hiyo badala ya kupanua ugunduzi wa karibu wa kiungo. Maelezo ya uelekezaji wa ufunguo wa siri yanashughulikia uteuzi wa peer unaotegemea lengwa ambao yote haya yanategemea.