Zakaj vaše preslikavanje vrat VPN v Dockerju nikoli ne doseže OpenVPN
Vrata gostitelja, vrata vsebnika in prenos so tri ločene odločitve. Sledite enemu poskusu UDP skozi vsako mejo, preden se dotaknete potrdil.
Vaš vsebnik lahko posluša na UDP 1195, medtem ko gostitelj objavlja 1194, in to je pravilno, dokler preslikavanje tako pravi. Številke tvorijo prevajalsko tabelo: odjemalec pokliče vrata gostitelja, Docker prepiše cilj na vrata vsebnika, OpenVPN pa odgovori na vratih, ki jih navaja njegova lastna konfiguracija. Neujemanje v katerem koli od teh členov povzroči tiho napako, ki je videti kot požarni zid. Potrdila in šifre so za tem in tega ne morejo popraviti.
Sledite enemu paketu od odjemalca do procesa, preden karkoli spremenite pri preverjanju pristnosti.
Tri številke, ena povezava
Te tri številke so oddaljeni cilj, ki ga uporablja odjemalec, objavljeno preslikavanje na gostitelju in poslušalec znotraj vsebnika. Ni nujno, da so enake, morajo pa tvoriti verigo. Enake številke so poseben primer, ki je slučajno najpogostejši, zato je neujemanje lahko enkrat napisati in težko pozneje videti.
Pred razhroščevanjem zapišite verigo v eno vrstico: naslov in vrata odjemalca, preslikavanje gostitelja, poslušalec vsebnika, prenos. Napaka v verigi se pokaže kot število, ki se pojavi dvakrat z različnimi vrednostmi.
| Location | Example |
|---|---|
| Remote client destination | Host address, UDP 1194 |
| Published mapping | Host UDP 1194 to container UDP 1195 |
| Container listener | OpenVPN on UDP 1195 |
Kaj kratka sintaksa res pove
V kratki obliki je leva stran vrata gostitelja, desna pa vrata vsebnika, pripona s poševnico pa izbere prenos. Če pripono izpustite, Docker preslikavanje obravnava kot TCP, zato je poslušalec UDP za preslikavanjem brez protokola poslušalec, do katerega nihče ne pride. Ta privzeta vrednost je dokumentirana in še vedno preseneti ljudi, ki so številke uskladili in stvar razglasili za končano.
Dolga oblika izrecno določi naslov vezave in protokol, kar je vredno dodatnih vrstic pri vsem, kar je obrnjeno v omrežje. Preberite objavljeno preslikavanje nazaj, namesto da bi zaupali datoteki, ki ga je ustvarila.
ports:
- 1194:1195/udpKje se paket lahko ustavi
Zahteva je lahko zavržena pred Dockerjem, v Dockerju ali pri poslušalcu. Pred Dockerjem je lahko požarni zid v oblaku ali usmerjevalnik z lastnim posredovanjem, ta naprava pa potrebuje vrata, obrnjena proti gostitelju, in pravi prenos. Znotraj Dockerja preslikavanje na napačna vrata vsebnika posreduje v zaprt vtič.
Nato poslušalec: konfiguracija OpenVPN navaja vrata in protokol, odjemalec, ki v vsebniku prispe na druga, pa ne doseže ničesar. Preizkušanje storitve UDP s TCP ne dokaže ničesar v nobeni od teh stopenj, zato uporabite prenos, ki ga bo uporabil odjemalec.
Naslovi vezave odločajo o dosegljivosti
Objavljeno preslikavanje, vezano na loopback, je dosegljivo le z gostitelja, medtem ko je tisto, vezano na vse vmesnike, dosegljivo povsod, kjer požarni zid dovoli. V datoteki Compose, ki naslov izpusti, sta videti enako, privzeta vrednost Dockerja pa je širša.
Odločite se, kakšno izpostavljenost namerava uvajanje, in jo nato izrecno zapišite. Notranji preizkus, ki se poveže prek loopbacka, in oddaljeni odjemalec, ki se ne more povezati, sta lahko oba natančna opisa istega vsebnika.
Preberite delujoče stanje
Preglejte dejansko preslikavanje delujočega vsebnika in poslušalca v njegovem omrežnem imenskem prostoru. Datoteka Compose je bila morda urejena po zagonu vsebnika, metapodatki slike lahko navajajo vrata, ne da bi jih objavili, drugi vsebnik pa lahko že zaseda vrata gostitelja. Navesti vrata v sliki ni isto kot jih objaviti in nobeno od tega ni isto kot poslušati.
Tri različna stanja, trije različni ukazi in le zadnji vključuje OpenVPN.
Ko je preslikavanje pravilno
Ko paket doseže OpenVPN, je njegov dnevnik mesto, kjer berete o TLS in preverjanju pristnosti. Ponovno ustvarjanje potrdil, da bi popravili paket, ki ni nikoli prispel, je izgubljeno delo, ki doda drugo spremenljivko. Imajte zapisek o preslikavanju ob profilu odjemalca, da bo naslednja oseba prebrala eno vrstico, namesto da bi znova odkrivala vse tri številke. En zajem paketov na strani gostitelja razreši, kateri od treh členov je napačen, in stane manj kot obnova potrdila.
Tu opisani primer je objava prek mostu. Gostiteljsko omrežje in usmerjeni naslovi vsebnikov preskočijo prevajanje, zato v teh zasnovah iste številke pomenijo nekaj drugega.