Kontena ya ukuzaji haiwezi kufikia mwenyeji wa VPN tu: wapi pa kuangalia
Kivinjari na kontena vina miktadha tofauti ya kitatuzi, proksi na njia. Gundua ni upi mchakato unaoshindwa unatumia kabla ya kubadilisha mpangilio wowote wa VPN.
API ya kibinafsi inafunguka katika kivinjari chako cha kompyuta na inashindwa katika kontena la ukuzaji. Hiyo si kinzani, na mara nyingi si VPN yenyewe. Ombi la kivinjari na ombi linaloshindwa lilitolewa na michakato tofauti, ikiwa na vitatuzi, proksi na njia tofauti, na mara nyingi kutoka nafasi za mtandao zilizo tofauti kabisa. Maneno "kwenye kompyuta yangu" yanaweza kumaanisha mwenyeji wa Windows, usambazaji wa WSL, mashine pepe ya Docker Desktop na kontena ndani ya mashine hiyo pepe, miktadha minne ambayo kila mmoja unaweza kujibu jina moja la mwenyeji kwa namna tofauti. Gundua ni upi mchakato unaoshindwa unatumia kabla ya kugusa mpangilio mmoja.
Tafuta mchakato kabla ya kubadilisha mpangilio
Anza na injini ya kontena badala ya mteja wa VPN. Uliza mstari wa amri unazungumza na muktadha upi, na injini hiyo inaendesha mfumo gani wa uendeshaji, kwa sababu kontena la Linux linalosimamiwa na mashine pepe ya kompyuta ni njia tofauti na lile linalosimamiwa na daemon ya ndani:
docker context ls
docker info --format '{{.OperatingSystem}} / {{.Name}}'
docker run --rm alpine ip route
Kwenye Windows, wsl -l -v inakuambia kama usambazaji unaendeshwa chini ya WSL 2, jambo linalouweka nyuma ya swichi yake pepe. Undani huo huamua kama kontena linashiriki jedwali la njia la mwenyeji au liko nyuma ya NAT inayohitaji bandari iliyopelekwa au jina la mwenyeji ili kumfikia mwenyeji.
Weka ombi moja lisilobadilika na linganisha
Chagua kituo kimoja kisicho na madhara kwenye mwenyeji wa kibinafsi na utumie kwa kila ulinganisho, kutoka kivinjari, kutoka terminal ya mwenyeji, kutoka usambazaji wa WSL na kutoka ndani ya kontena. Rekodi mambo manne kwa kila jaribio: anwani iliyotatuliwa, kama proksi ilitumika, aina ya kushindwa na muda uliopita. Utafutaji wa jina, kuanzisha muunganisho, uthibitishaji wa TLS na hali ya HTTP ni matatizo manne tofauti, na kuyachanganya kuwa "haifanyi kazi" hutumia asubuhi nzima.
Endesha ulinganisho ndani ya kontena linaloshindwa, ukiwa na kikomo cha muda ili firewall isiyo na sauti isishikilie terminal kwa dakika. Kontena jipya huiga muktadha wa mtandao wa injini lakini si nafasi ya majina, vigeu vya proksi au kitatuzi cha kontena la programu, kwa hiyo docker exec ndani ya lile halisi ni jaribio la mwisho na kontena saidizi ni njia tu ya kutenganisha kama tofauti ni injini au kontena:
docker exec -it app /bin/sh -c "getent hosts api.internal; curl -v --max-time 8 https://api.internal/ 2>&1 | tail -20"
docker run --rm --network container:app curlimages/curl:latest -sv --max-time 8 https://api.internal/ 2>&1 | tail -20
Picha ya msingi ya alpine ina busybox na haina curl, na hilo ni aina ya undani unaofanya kizuizi cha uchunguzi kilichonakiliwa kishindwe: chagua picha iliyo na mteja, au iongeze ndani ya utekelezaji huo huo. Ulinganisho dhidi ya tovuti za umma zisizohusiana hautenganishi chochote. Ikiwa https://example.com inafanya kazi kutoka kontena, umejifunza kwamba kontena lina ufikiaji wa intaneti na hakuna chochote kuhusu kama linaweza kufikia anwani ya kibinafsi kupitia handaki. Vivyo hivyo, kufungua terminal mpya kunathibitisha tu kwamba terminal mpya inafanya kazi, si kwamba inashiriki mazingira ya utekelezaji na programu iliyoshindwa.
Docker Desktop inaweza kufanya kazi na VPN
Nyaraka za Docker wenyewe kuhusu VPN na muunganisho wa mwenyeji zinaelezea hili kama mpangilio unaoungwa mkono, na muhtasari wa uaminifu ni kwamba inafanya kazi badala ya kuharibika kiotomatiki. Usidhani mashine pepe ya kompyuta inapita handaki la mwenyeji kama suala la ubunifu; katika mipangilio mingi trafiki inafuata handaki la mwenyeji kwa usahihi, ndiyo sababu ngano ya "Docker inapuuza VPN" hutoa ushauri wa kujiamini na usio sahihi.
Kinachobaki muhimu ni backend inayotumika, sera ya handaki iliyogawanywa ya mteja, na usanidi wa kitatuzi ambao mashine pepe ilipokea. Mteja wa VPN anayeweka njia lakini si DNS, au anayesukuma seva ya DNS ambayo mashine pepe haiwezi kufikia, huzalisha kushindwa kwa utafutaji wa jina ndani ya kontena wakati mwenyeji unafanya kazi kwa sababu una kitatuzi cha ziada au jibu lililohifadhiwa. Hilo ni tatizo la kitatuzi lililovaa mavazi ya kontena. Linastahimili kila muunganisho mpya wa VPN unaojaribu, kwa sababu handaki tayari linabeba trafiki uliyoiomba ibebe.
Mwingiliano wa anwani na MTU ni kushindwa tofauti
Kushindwa kuwili kunastahili utambuzi wao kwa sababu mara nyingi huchukuliwa kama sera ya ufikiaji. Cha kwanza ni mwingiliano wa anwani: ikiwa VPN inasukuma masafa yanayogongana na subnet ya daraja la chaguo-msingi la mtandao wa kontena, njia ya kontena kwa masafa hayo inaelekea daraja la ndani na haifikii handaki kamwe. Kagua subnet halisi badala ya kukisia:
docker network inspect bridge --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}'
ip route get 10.20.30.40
Cha pili ni tatizo la MTU. Ikiwa muunganisho unaanzishwa na TLS inakamilika lakini majibu makubwa yanakwama, una tatizo la ukubwa wa pakiti, si tatizo la idhini, na kubadilisha rekodi za DNS hakutarekebisha kamwe. Jaribu kwa ombi dogo na kubwa kabla ya kubadilisha chochote, na rekodi matokeo yote mawili.
Suluhisho la mwingiliano ni subnet nyingine ya kontena au njia iliyowekewa mipaka, iliyochaguliwa na anayemiliki mpango wa anwani. Suluhisho la kukwama kwa MTU ni kubana au kupunguza MTU ya handaki au kiolesura hadi thamani inayostahimili njia, ikitumika katika tabaka unalodhibiti.
Usanidi wa proksi ni kwa kila mchakato, si kwa kila mashine
Ndani ya kontena, localhost hutaja muktadha wa mtandao wa kontena lenyewe, kwa hiyo proksi inayoendeshwa kwenye mwenyeji haifikiki hapo kwa jina hilo. Docker Desktop hutoa host.docker.internal kwa ufikiaji wa mwenyeji, na kwenye Linux unaiongeza kwa uwazi kwa --add-host=host.docker.internal:host-gateway. Vyovyote vile, jina hilo linakupa njia kwa mwenyeji; halitengenezi huduma ya proksi wala halikuidhinisha kuutumia.
Tumia anwani na bandari ya proksi iliyotolewa kwa mazingira halisi, na angalia ni nani anaisoma. Vigeu vilivyosafirishwa katika shell shirikishi havimweki kiotomatiki kila kiendelezi cha kihariri, seva ya lugha, chombo cha kujenga na daemon ya chinichini. Kinachohusika ni mchakato uliotoa ombi lililoshindwa, kwa hiyo kagua mazingira yake badala ya yale ya terminal yako.
Hatimaye, fanya suluhisho lijieleze lenyewe. Azimio lenye manufaa hutaja mpaka uliokuwa mbaya, mpangilio ulioubafisha, na seti ya michakato inayoathiri sasa. Kuanzisha upya VPN, kihariri na injini kwa mfuatano kunaweza kubadilisha dalili, lakini hakuachi chochote ambacho mtu anayefuata anaweza kutumia.