Kushiriki nafasi ya majina ya mtandao wa kontena la VPN huipa programu yako violesura na njia za handaki. Hiyo haipi kidadisi cha handaki, wala nakala iliyounganishwa ya kitu kingine chochote kwenye mwenyeji. Pengo hilo huleta hitilafu maalum sana: majina ya umma hutatuliwa, ya ndani hayatatuliwi, na programu inayoshindwa huonekana kana kwamba inatumia seva ya DNS isiyo sahihi, kwa sababu ndivyo ilivyo. Ukarabati kawaida ni mdogo kuliko uchunguzi unavyodokeza.

Hatua 1: Jaribu kutoka kwa programu, si kwa mwenyeji

Endesha utafutaji ndani ya kontena lenye tatizo, si kwenye mwenyeji na si kwenye kivinjari. docker exec app-container getent hosts db.internal hujibu swali pekee muhimu: kidadisi cha mchakato huu hurudisha nini.

Ikiwa mwenyeji hutatua jina na kontena halitatui, umepata hitilafu. Kila kitu baada ya hapo ni kuchagua njia inayotumika kuirekebisha.

Hatua 2: Soma modeli inayotumika ya runtime

Nyaraka za mtandao za Docker hurekodi vizuizi vya bendera za DNS kwa makontena yanayoshiriki hali ya mtandao ya kontena lingine. Katika Compose network_mode: service:vpn hufunga programu kwenye nafasi ya majina ya kontena la VPN, na kwa kila huduma dns mipangilio haiji kama kwa huduma ya kawaida. Suluhisho unalopata ni lile ambalo nafasi ya majina inayoshirikiwa inalo.

Mitandao ya daraja iliyofafanuliwa na mtumiaji pia hutumia DNS iliyojengwa ndani ya Docker tofauti na daraja chaguo-msingi. Ndiyo sababu dns kifungu kilichonakiliwa kutoka mfano wa daraja unaofanya kazi hakiwezi kufanya chochote kabisa kwenye mkusanyiko unaoshirikiwa. Angalia mpangilio kabla ya kunakili kifungu.

Anwani ya loopback daima hurejelea muktadha husika wa mtandao. Ndani ya nafasi ya majina inayoshirikiwa, 127.0.0.1 si kidadisi cha mwenyeji.

Hatua 3: Fuatilia swali hadi mpokeaji wake

Soma usanidi wa kidadisi cha programu, kisha DNS yoyote iliyosimbwa maalum kwa programu ambayo inaileta, kwa sababu programu inayoendesha kidadisi chake yenyewe hupuuza faili uliyoihariri. Kisha angalia kama kidadisi kilichochaguliwa kinafikiwa chini ya njia na sera ya ngome ya VPN. Anwani ya kidadisi upande wa pili wa handaki haina maana ikiwa nafasi ya majina haina njia kuelekea hapo. Thibitisha mpokeaji kabla ya kuhariri faili yoyote.

Ukurasa wa ukaguzi wa IP kwenye kivinjari hauwezi kukuambia swali za majina zilienda wapi. Huambia muunganisho mmoja wa HTTP ulienda wapi.

Hatua 4: Rekebisha makundi mawili ya kushindwa kwa njia tofauti

Ikiwa majina ya huduma yanashindwa wakati majina ya umma yanafanya kazi, tatizo ni ugunduzi wa huduma ndani ya mtandao wa makontena, si orodha ya vidadisi vya umma. Kubadilisha kila anwani ya DNS ya umma hakutaleta rekodi ambazo utaratibu wa ugunduzi wa mtandao haukuwa umeombwa kamwe.

Ikiwa makundi yote mawili yanashindwa, anza na ufikiaji wa kidadisi. Ikiwa moja tu inashindwa, anza na utaratibu wa ugunduzi. Yote mawili yana wamiliki tofauti, ndiyo sababu ukarabati mmoja kamwe hauweki yote mawili.

Hatua 5: Jaribu tena baada ya kuunda upya

Badilisha usanidi kupitia utaratibu unaotumika wa runtime, kisha unda upya makontena badala ya kuhariri faili ndani ya kontena linaloendesha. Jaribu jina jipya la faragha, jina jipya la umma na ombi la programu linalofuata utafutaji. /etc/resolv.conf ndani ya kontena hupotea wakati wa kuunda upya na itakushawishi kwamba ukarabati ulifanya kazi wakati haukufanya.

Rekodi mmiliki wa kidadisi na nafasi ya majina inayotarajiwa kando ya ufafanuzi wa mtandao unaoshirikiwa. Mtu anayefuata atahitaji vyote viwili.

Makala zinazohusiana