Deljenje omrežnega imenskega prostora vsebnika VPN da vaši aplikaciji vmesnike in poti tunela. Ono ji ne da razreševalnika tunela, niti združene kopije česar koli drugega na gostitelju. Ta vrzel ustvari zelo specifično okvaro: javna imena se razrešujejo, notranja ne, aplikacija, ki odpove, pa je videti, kot da uporablja napačen strežnik DNS, ker ga resnično uporablja. Popravilo je običajno manjše, kot nakazuje diagnoza.

Korak 1: Testirajte iz aplikacije, ne z gostitelja

Zaženite iskanje znotraj vsebnika s težavo, ne na gostitelju in ne v brskalniku. docker exec app-container getent hosts db.internal odgovori na edino pomembno vprašanje: kaj vrne razreševalnik tega procesa.

Če gostitelj ime razreši, vsebnik pa ne, ste našli okvaro. Vse po tem je izbira podprtega načina za njeno odpravo.

Korak 2: Preberite podprti model izvajalnega okolja

Dockerjeva dokumentacija o omrežjih beleži omejitve zastavic DNS za vsebnike, ki si delijo omrežni način drugega vsebnika. V Composeu network_mode: service:vpn poveže aplikacijo z imenskim prostorom vsebnika VPN, pri vsaki storitvi pa dns se nastavitve ne vedejo tako kot pri običajni storitvi. Rešitev, ki jo dobite, je tista, ki jo ima deljeni imenski prostor.

Uporabniško določena mostna omrežja tudi uporabljajo vgrajeni DNS Dockerja drugače kot privzeti most. Zato lahko dns klavzula, kopirana iz delujočega primera mostu, v deljenem skladu ne naredi prav ničesar. Pred kopiranjem klavzule preverite ureditev.

Naslov povratne zanke se vedno nanaša na ustrezni omrežni kontekst. Znotraj deljenega imenskega prostora 127.0.0.1 ni razreševalnik gostitelja.

Korak 3: Sledite poizvedbi do njenega prejemnika

Preberite konfiguracijo razreševalnika aplikacije, nato še kateri koli šifrirani DNS, značilen za aplikacijo, ki ga ta prinese, kajti aplikacija z lastnim razreševalnikom prezre datoteko, ki ste jo uredili. Nato preverite, ali je izbrani razreševalnik dosegljiv pod potmi in politiko požarnega zidu VPN. Naslov razreševalnika na drugi strani tunela je neuporaben, če imenski prostor nima poti do njega. Pred urejanjem katere koli datoteke potrdite prejemnika.

Stran za preverjanje IP v brskalniku vam ne more povedati, kam so šle poizvedbe imen. Pove vam, kam je šla ena povezava HTTP.

Korak 4: Odpravite dva razreda okvar različno

Če imena storitev odpovedo, medtem ko javna imena delujejo, je težava v odkrivanju storitev znotraj omrežja vsebnikov, ne na seznamu javnih razreševalnikov. Spreminjanje vsakega javnega naslova DNS ne bo ustvarilo zapisov, za katere mehanizem odkrivanja omrežja ni bil nikoli zaprošen.

Če odpovedo oba razreda, začnite z dosegljivostjo razreševalnika. Če odpove le eden, začnite z mehanizmom odkrivanja. Oba imata različne lastnike, zato eno popravilo nikoli ne pokrije obeh.

Korak 5: Po ponovnem ustvarjanju znova preizkusite

Spremenite konfiguracijo prek podprtega mehanizma izvajalnega okolja, nato znova ustvarite vsebnike, namesto da bi urejali datoteke v delujočem. Preizkusite novo zasebno ime, novo javno ime in zahtevo aplikacije, ki sledi iskanju. Sprememba v /etc/resolv.conf znotraj vsebnika izgine pri ponovnem ustvarjanju in prepričala vas bo, da je popravilo delovalo, ko ni.

Zapišite lastnika razreševalnika in pričakovani imenski prostor ob definiciji deljenega omrežja. Naslednja oseba bo potrebovala oboje.

Sorodni članki