Rhannu rhwydwaith cynhwysydd VPN: beth sy’n digwydd i DNS
Mae gofod enwau a rennir yn rhoi rhyngwynebau’r twnnel i’ch ap, nid datrysiad unedig. Profwch o fewn yr ap a defnyddiwch drefn DNS y mae’r runtime yn ei chynnal.
Mae rhannu gofod enwau rhwydwaith cynhwysydd VPN yn rhoi rhyngwynebau a llwybrau’r twnnel i’ch cymhwysiad. Nid yw yn rhoi datrysiad y twnnel iddo, nac yn rhoi copi unedig o unrhyw beth arall ar y gwesteiwr. Mae’r bwlch hwn yn cynhyrchu methiant penodol iawn: mae enwau cyhoeddus yn datrys, nid yw enwau mewnol yn datrys, ac mae’r ap sy’n methu yn edrych fel petai’n defnyddio’r gweinydd DNS anghywir, oherwydd dyna mae’n ei wneud. Mae’r atgyweiriad fel arfer yn llai nag y mae’r diagnosis yn ei awgrymu.
Cam 1: Profwch o’r ap, nid o’r gwesteiwr
Rhedwch yr edrychiad y tu mewn i’r cynhwysydd sydd â’r broblem, nid ar y gwesteiwr ac nid mewn porwr. docker exec app-container getent hosts db.internal yn ateb yr un cwestiwn sy’n bwysig, sef beth mae datrysiad y broses hon yn ei ddychwelyd.
Os yw’r gwesteiwr yn datrys yr enw ac nad yw’r cynhwysydd yn gwneud hynny, rydych wedi dod o hyd i’r nam. Popeth ar ôl hyn yw dewis ffordd a gynhelir i’w drwsio.
Cam 2: Darllenwch fodel a gynhelir gan y runtime
Dogfennaeth rhwydwaith Docker yn nodi cyfyngiadau ar faneri DNS ar gyfer cynwysyddion sy’n rhannu modd rhwydwaith cynhwysydd arall. Yn Compose mae network_mode: service:vpn yn clymu’r ap i ofod enwau’r cynhwysydd VPN, ac ar gyfer pob gwasanaeth nid yw dns gosodiadau yn ymddwyn fel y maent ar gyfer gwasanaeth cyffredin. Y datrysiad a gewch yw’r un sydd gan y gofod enwau a rennir.
Mae rhwydweithiau pont a ddiffinnir gan y defnyddiwr hefyd yn defnyddio DNS mewnol Docker yn wahanol i’r bont ragosodedig. Dyna pam y gall dns cymal a gopïwyd o enghraifft bont sy’n gweithio wneud dim o gwbl mewn stac a rennir. Gwiriwch y drefn cyn copïo’r cymal.
Mae cyfeiriad dolen gefn bob amser yn cyfeirio at y cyd-destun rhwydwaith perthnasol. Y tu mewn i ofod enwau a rennir, nid 127.0.0.1 yw datrysiad y gwesteiwr.
Cam 3: Dilynwch yr ymholiad at ei dderbynnydd
Darllenwch ffurfweddiad datrysiad yr ap, yna unrhyw DNS amgryptiedig sy’n benodol i’r ap y mae’n ei gynnwys, oherwydd mae ap sy’n rhedeg ei ddatrysiad ei hun yn anwybyddu’r ffeil a olygwyd gennych. Yna gwiriwch a yw’r datrysiad a ddewiswyd yn gyrraeddadwy o dan lwybrau a pholisi mur tân y VPN. Mae cyfeiriad datrysiad ar ochr bellaf y twnnel yn ddiwerth os nad oes gan y gofod enwau lwybr iddo. Cadarnhewch y derbynnydd cyn golygu unrhyw ffeil.
Ni all tudalen gwirio IP mewn porwr ddweud wrthych i ble yr aeth ymholiadau enwau. Mae’n dweud i ble yr aeth un cysylltiad HTTP.
Cam 4: Trwsiwch y ddau ddosbarth methiant yn wahanol
Os yw enwau gwasanaethau’n methu tra bod enwau cyhoeddus yn gweithio, y broblem yw darganfod gwasanaethau y tu mewn i rwydwaith y cynwysyddion, nid y rhestr o ddatrysiadau cyhoeddus. Ni fydd newid pob cyfeiriad DNS cyhoeddus yn creu cofnodion na ofynnwyd i fecanwaith darganfod y rhwydwaith eu creu erioed.
Os yw’r ddau ddosbarth yn methu, dechreuwch gyda chyrraeddadwyedd y datrysiad. Os mai dim ond un sy’n methu, dechreuwch gyda’r mecanwaith darganfod. Mae gan y ddau berchnogion gwahanol, a dyna pam nad yw un atgyweiriad byth yn cwmpasu’r ddau.
Cam 5: Ailbrofwch ar ôl ail-greu
Newidiwch y ffurfweddiad drwy fecanwaith a gynhelir gan y runtime, yna ail-grëwch y cynwysyddion yn hytrach na golygu ffeiliau y tu mewn i un sy’n rhedeg. Profwch enw preifat newydd, enw cyhoeddus newydd, a’r cais ap sy’n dilyn yr edrychiad. Mae golygiad i /etc/resolv.conf y tu mewn i gynhwysydd yn diflannu wrth ail-greu ac yn eich argyhoeddi bod yr atgyweiriad wedi gweithio pan nad oedd.
Cofnodwch berchennog y datrysiad a’r gofod enwau disgwyliedig wrth ymyl diffiniad y rhwydwaith a rennir. Bydd yr un nesaf angen y ddau.