ip netns exec un DNS: kāpēc vārdi neizdodas nosaukumu telpā
Nosaukumu telpai ir savas saskarnes un maršruti, bet tai nav savas atrisinātāja failas. Pārbaudiet, kuru resolv.conf redz palaistais process un no kurienes šī fails nācis.
Komanda sasniedz 10.8.0.5 VPN nosaukumu telpas iekšienē bez jebkādas sūdzības, un tā pati komanda neizdodas tajā mirklī, kad tā izmanto resursdatora nosaukumu. Nosaukumu telpai ir savas saskarnes, maršruti un ligzdas; tai nav savas atrisinātāja failas. Ja vien kaut kas tur neieliek vienu, process iekšienē lasa resursdatora /etc/resolv.conf un jautā serverim, kas varētu būt nesasniedzams no šī tīkla steķa.
Šī ir faila izvēles problēma, nevis maršrutēšanas problēma, un tieši tāpēc skaitliskais galamērķis joprojām darbojas.
Pārbaudiet atrisinātāja skatījumu, ko process faktiski saņem
Nepieņemiet, ka izmantotā čaula ir līdzvērtīga procesam, kuru atkļūdojat. Grafiska lietotne, systemd vienība un konteiners katrs var iekļūt citā montāžas vai tīkla kontekstā. Palaidiet vaicājumu pa to pašu palaišanas ceļu un izdrukājiet atrisinātāja failu no iekšpuses.
Nosaukumu telpai, kas izveidota ar ip netns add, tikai lasīšanas pārbaude ir īsa:
ip netns exec vpn cat /etc/resolv.confIevērojiet, vai rezultāts nosauc sasniedzamu adresi, loopback stub vai simbolisku saiti, kas norāda uz vietu ar citu sasniedzamību.
Ko exec palīgs faktiski piemontē
Rīks ip-netns dokumentē katras nosaukumu telpas konfigurāciju zem /etc/netns/NAME/. Kad tas palaiž procesu, palīgs izveido montāžas nosaukumu telpu un piemontē šos failus virs to parastajiem ceļiem, tāpēc process redz nosaukumu telpai raksturīgo kopiju. Tā ir šī konkrētā palaidēja ērtība. Iekļūšana tīkla nosaukumu telpā pa citu ceļu, piemēram, ar unshare vai konteineru runtime, to automātiski neatkārto.
Loopback atrisinātājs šeit ir slazds: 127.0.0.53 nozīmē pašas nosaukumu telpas loopback, nevis resursdatora stub. Stub, kas klausās tikai resursdatora nosaukumu telpā, jaunajā nekļūst par pakalpojumu.
Izvēlieties atrisinātāju, kuru nosaukumu telpa var sasniegt
Lai kuru serveri fails nosauktu, tam joprojām vajag maršrutu no šīs nosaukumu telpas. Publisks atrisinātājs var atbildēt uz publiskiem nosaukumiem un tomēr neizdoties iekšējai zonai, jo privātais pakalpojums ir sasniedzams tikai caur tuneli. Pārbaudiet maršrutu vienlaikus ar adresi, nevis pēc tam, kad vaicājums jau ir neizdevies.
Lietotnes ar savu atrisinātāju, piemēram, tāda, kas izmanto DNS over HTTPS, var pilnībā ignorēt failu. Ja rīkam ir savs DNS iestatījums, resolv.conf maiņa to neietekmēs, un nosaukumu telpa nekad nav bijusi problēma.
Ierakstiet failu pareizajā vietā
Izveidojiet nosaukumu telpai raksturīgo failu zem /etc/netns/NAME/resolv.conf un ļaujiet palaidējam to parādīt. Turiet to minimālu: viens vai divi sasniedzami serveri un meklēšanas domēni, kas uzdevumam vajadzīgi. Nelabojiet resursdatora ģenerēto atrisinātāja failu, lai salabotu skatījumu, kas domāts vienai procesu grupai, jo tas maina katru lietotni mašīnā. Ja resursdators izmanto atrisinātāja pārvaldnieku, konfigurējiet nosaukumu telpas ceļu caur šo pārvaldnieku, nevis cīnieties ar to.
Ierakstiet faila saturu runbookā. Citādi nākamais cilvēks pārbaudīs resursdatora atrisinātāju, ieraudzīs strādājošu atbildi un secinās, ka nosaukumu telpa ir kārtībā.
Pārbaudiet visu ceļu vēlreiz
Pārbaudiet nosaukumu telpas iekšienē ar skaitlisku adresi, iekšēju nosaukumu un publisku nosaukumu. Šī secība atdala sasniedzamību no atrisināšanas un atdala iekšējās zonas no publiskajām. Pēc tam izveidojiet nosaukumu telpu no jauna un atkārtojiet, jo fails, kas eksistē tikai darbojošā instancē, pazūd kopā ar to.
Apstipriniet, ka failu saņem process, nevis čaula. Vaicājums, kas darbojas no interaktīvas čaulas un neizdodas no pakalpojuma, ir atradums par montāžas kontekstu, un to ir vērts pierakstīt pirms nākamā incidenta, nevis atklāt no jauna no nulles.