ip netns exec na DNS: kwa nini majina hushindwa ndani ya nafasi ya majina
Nafasi ya majina ina violesura na njia zake, lakini haina faili yake ya utatuzi. Angalia ni resolv.conf ipi mchakato uliozinduliwa unaiona na faili hiyo ilitoka wapi.
Amri hufikia 10.8.0.5 ndani ya nafasi ya majina ya VPN bila malalamiko yoyote, na amri hiyo hiyo hushindwa pale inapotumia jina la mwenyeji. Nafasi ya majina ina violesura, njia na soketi zake; haina faili yake ya utatuzi. Isipokuwa kitu kitaweka moja hapo, mchakato wa ndani husoma /etc/resolv.conf ya mwenyeji na kuuliza seva ambayo huenda isifikike kutoka kwenye safu hiyo ya mtandao.
Hili ni tatizo la uchaguzi wa faili na si tatizo la uelekezaji, na ndiyo sababu lengo la nambari bado linafanya kazi.
Angalia mwonekano wa kutatua ambao mchakato hupokea kwa kweli
Usidhani kwamba shell uliyotumia ni sawa na mchakato unaotatua hitilafu. Programu ya picha, kitengo cha systemd na chombo cha kuhifadhi vinaweza kila kimoja kuingia muktadha mwingine wa upachikaji au wa mtandao. Endesha utafutaji kupitia njia hiyo hiyo ya kuzindua, na uchapishe faili ya utatuzi kutoka ndani.
Kwa nafasi ya majina iliyoundwa na ip netns add, ukaguzi wa kusoma-tu ni mfupi:
ip netns exec vpn cat /etc/resolv.confTambua kama matokeo yanataja anwani inayofikika, stub ya loopback, au kiungo cha mfano kinachoelekeza mahali penye ufikikaji tofauti.
Kile msaidizi wa exec hupachika kwa kweli
Zana ya ip-netns huandika usanidi kwa kila nafasi ya majina chini ya /etc/netns/NAME/. Inapozindua mchakato, msaidizi huunda nafasi ya majina ya upachikaji na hupachika faili hizo juu ya njia zao za kawaida, hivyo mchakato huona nakala maalum ya nafasi ya majina. Hiyo ni raha ya kizinduzi hiki mahususi. Kuingia katika nafasi ya majina ya mtandao kwa njia nyingine, kama unshare au runtime ya vyombo, hakuiga hilo kiotomatiki.
Mtego hapa ni kitatuzi cha loopback: 127.0.0.53 inamaanisha loopback ya nafasi ya majina yenyewe, si stub ya mwenyeji. Stub inayosikiliza tu katika nafasi ya majina ya mwenyeji haikuwa huduma katika ile mpya.
Chagua kitatuzi ambacho nafasi ya majina inaweza kufikia
Seva yoyote ile faili inayoitaja, bado inahitaji njia kutoka kwenye nafasi hiyo ya majina. Kitatuzi cha umma kinaweza kujibu majina ya umma na bado kushindwa kwa eneo la ndani, kwa sababu huduma ya faragha inafikika tu kupitia handaki. Angalia njia wakati huo huo na anwani, si baada ya utafutaji kuwa umeshindwa.
Programu zilizo na kitatuzi chao, kama ile inayotumia DNS over HTTPS, zinaweza kupuuza faili kabisa. Ikiwa zana ina mpangilio wake wa DNS, kubadilisha resolv.conf hakutaathiri, na nafasi ya majina haikuwa tatizo kamwe.
Andika faili mahali sahihi
Unda faili ya nafasi ya majina chini ya /etc/netns/NAME/resolv.conf na uache kizinduzi kiwasilishe. Iwe ndogo: seva moja au mbili zinazofikika na vikoa vya utafutaji vinavyohitajika na kazi. Usihariri faili ya utatuzi iliyozalishwa ya mwenyeji ili kurekebisha mwonekano uliokusudiwa kwa kundi moja la michakato, kwa sababu hiyo hubadilisha kila programu kwenye mashine. Ikiwa mwenyeji anatumia msimamizi wa utatuzi, sanidi njia ya nafasi ya majina kupitia msimamizi huyo badala ya kugombana naye.
Andika yaliyomo kwenye faili kwenye runbook. Vinginevyo mtu anayefuata atajaribu kitatuzi cha mwenyeji, ataona jibu linalofanya kazi na atahitimisha kwamba nafasi ya majina iko sawa.
Jaribu tena njia nzima
Jaribu ndani ya nafasi ya majina kwa anwani ya nambari, jina la ndani na jina la umma. Mfuatano huo hutenganisha ufikikaji na utatuzi na hutenganisha maeneo ya ndani na ya umma. Kisha unda upya nafasi ya majina na urudie, kwa sababu faili iliyopo tu katika mfano unaoendesha hupotea nayo.
Thibitisha kwamba faili inapokewa na mchakato, si shell. Utafutaji unaofanya kazi kutoka shell mwingiliano na kushindwa kutoka huduma ni ugunduzi kuhusu muktadha wa upachikaji, na inafaa kuandikwa kabla ya tukio lijalo badala ya kuugundua upya kutoka mwanzo.