Kvifor Docker VPN-portmappinga di aldri når OpenVPN
Vertsport, containerport og transport er tre separate avgjerder. Følg eitt UDP-forsøk gjennom kvar grense før du rører sertifikat.
Containeren din kan lytta på UDP 1195 medan verten publiserer 1194, og det er rett så lenge mappinga seier det. Tala utgjer ei omsetjingstabell: klienten ringjer vertsporten, Docker skriv om målet til containerporten, og OpenVPN svarar på porten som den eiga konfigurasjonen hans nemner. Avvik i eitt av desse ledda gir ein stille feil som ser ut som ein brannmur. Sertifikat og sjiffer ligg nedstraums og kan ikkje reparera det.
Følg éi pakke frå klient til prosess før du endrar noko ved autentiseringa.
Tre tal, éin samband
Dei tre tala er det eksterne målet klienten brukar, den publiserte mappinga på verten og lyttaren inne i containeren. Dei treng ikkje vere like, men dei må danna ei kjede. Like tal er eit særtilfelle som tilfeldigvis er det vanlegaste, og difor er avvik lett å skrive éin gong og vanskeleg å sjå seinare.
Skriv ned kjeda på éi linje før feilsøking: klientadresse og -port, vertsmapping, containerlyttar, transport. Ein feil i kjeda viser seg som eit tal som dukkar opp to gonger med ulike verdiar.
| Location | Example |
|---|---|
| Remote client destination | Host address, UDP 1194 |
| Published mapping | Host UDP 1194 to container UDP 1195 |
| Container listener | OpenVPN on UDP 1195 |
Kva den korte syntaksen faktisk seier
I kortforma er venstre side vertsporten og høgre side containerporten, og eit skråstrek-suffiks vel transporten. Utelèt du suffikset, handsamar Docker mappinga som TCP, så ein UDP-lyttar bak ei mapping utan protokoll er ein lyttar ingen kan nå. Den standarden er dokumentert og overraskar framleis folk som fekk tala til å stemme og kalla det ferdig.
Langforma låser bindeadresse og protokoll eksplisitt, noko som er verdt ekstralinjene på alt som vender mot eit nettverk. Les den publiserte mappinga tilbake i staden for å stole på fila som laga henne.
ports:
- 1194:1195/udpKvar pakka kan stoppe
Ein førespurnad kan bli droppa før Docker, i Docker eller hos lyttaren. Framfor Docker kan det vere ein skybrannmur eller ein ruter som gjer si eiga videresending, og den eininga treng vertsporten og rett transport. Inne i Docker videresender ei mapping til feil containerport til ein lukka socket.
Så lyttaren: OpenVPN-konfigurasjonen angir ein port og ein protokoll, og ein klient som kjem på ein annan inne i containeren når ingenting. TCP-testing av ein UDP-teneste beviser ingenting på noko av desse trinna, så bruk transporten klienten kjem til å bruke.
Bindeadresser avgjer tilgjenge
Ei publisert mapping bunde til loopback er berre tilgjengeleg frå verten, medan ho som er bunde til alle grensesnitt er tilgjengeleg der brannmuren tillèt det. Dei to ser identiske ut i ei Compose-fil som utelèt adressa, og Docker-standarden er den breie.
Bestem kva eksponering utrullinga er meint å ha, og skriv henne så eksplisitt. Ein intern test som koplar til over loopback, og ein fjernklient som ikkje får kopla til, kan begge vere nøyaktige skildringar av same containeren.
Les den køyrande tilstanden
Undersøk den faktiske mappinga til den køyrande containeren og lyttaren i nettverksnamnerommet. Ei Compose-fil kan ha blitt redigert etter at containeren starta, bildemetadata kan erklære ein port utan å publisere han, og ein annan container kan alt halde vertsporten. Å erklære ein port i eit bilde er ikkje å publisere han, og ingen av delane er det same som å lytta.
Tre ulike tilstandar, tre ulike kommandoar, og berre den siste involverer OpenVPN.
Når mappinga er rett
Når pakka når OpenVPN, er loggen staden å lese om TLS og autentisering. Å generere sertifikat på nytt for å rette ei pakke som aldri kom, er bortkasta arbeid som legg til ein andre variabel. Hald mappingnotatet ved klientprofilen slik at neste person les éi linje i staden for å gjenoppdage alle tre tala. Éin pakkefangst på vertssida avgjer kva av dei tre ledda som er feil, og det kostar mindre enn ein sertifikatfornying.
Publisering over bru er tilfellet som er skildra her. Vertsnettverk og ruta containeradresser hoppar over omsetjinga, så dei same tala tyder noko anna i dei designa.