Kodėl jūsų Docker VPN prievadų susiejimas niekada nepasiekia OpenVPN
Prievadas hoste, konteinerio prievadas ir transportas yra trys atskiri sprendimai. Sekite vieną UDP bandymą per kiekvieną ribą prieš liesdami sertifikatus.
Jūsų konteineris gali klausytis UDP 1195, o hostas skelbia 1194, ir tai teisinga tol, kol susiejimas taip sako. Skaičiai sudaro vertimo lentelę: klientas renkasi hosto prievadą, Docker perrašo paskirties vietą į konteinerio prievadą, o OpenVPN atsako tame prievade, kurį nurodo jo paties konfigūracija. Nesutapimas bet kurioje iš šių grandžių sukelia tylų gedimą, kuris atrodo kaip ugniasienė. Sertifikatai ir šifrai yra toliau ir negali to ištaisyti.
Sekite vieną paketą nuo kliento iki proceso prieš keisdami ką nors autentifikacijoje.
Trys skaičiai, viena jungtis
Trys skaičiai yra nuotolinė paskirties vieta, kurią naudoja klientas, paskelbtas susiejimas hoste ir klausytojas konteinerio viduje. Jie neturi būti lygūs, bet turi sudaryti grandinę. Lygūs skaičiai yra ypatingas atvejis, kuris atsitiktinai yra dažniausias, todėl nesutapimą lengva kartą parašyti ir sunku vėliau pastebėti.
Prieš derindami užrašykite grandinę vienoje eilutėje: kliento adresas ir prievadas, hosto susiejimas, konteinerio klausytojas, transportas. Grandinės defektas pasireiškia kaip skaičius, kuris pasirodo du kartus su skirtingomis reikšmėmis.
| Location | Example |
|---|---|
| Remote client destination | Host address, UDP 1194 |
| Published mapping | Host UDP 1194 to container UDP 1195 |
| Container listener | OpenVPN on UDP 1195 |
Ką trumpoji sintaksė iš tikrųjų sako
Trumpoje formoje kairė pusė yra hosto prievadas, o dešinė – konteinerio prievadas, o pasviruoju brūkšniu prasidedanti galūnė parenka transportą. Jei galūnę praleisite, Docker susiejimą traktuos kaip TCP, todėl UDP klausytojas už susiejimo be protokolo yra klausytojas, kurio niekas nepasieks. Ši numatytoji reikšmė yra dokumentuota ir vis dar stebina tuos, kurie suderino skaičius ir laikė darbą baigtu.
Ilgoji forma aiškiai nustato susiejimo adresą ir protokolą, o tai verta papildomų eilučių viskam, kas atgręžta į tinklą. Perskaitykite paskelbtą susiejimą atgal, o ne pasitikėkite failu, kuris jį sukūrė.
ports:
- 1194:1195/udpKur paketas gali sustoti
Užklausa gali būti numesta prieš Docker, Docker viduje arba pas klausytoją. Prieš Docker gali būti debesies ugniasienė arba maršrutizatorius, kuris pats persiunčia, ir tam įrenginiui reikia į hostą atgręžto prievado ir teisingo transporto. Docker viduje susiejimas į neteisingą konteinerio prievadą persiunčia į uždarytą lizdą.
Tada klausytojas: OpenVPN konfigūracija nurodo prievadą ir protokolą, o klientas, atvykęs į kitą konteinerio viduje, nieko nepasiekia. UDP paslaugos testavimas TCP nieko neįrodo nė viename iš šių etapų, todėl naudokite tą transportą, kurį naudos klientas.
Susiejimo adresai lemia pasiekiamumą
Paskelbtas susiejimas, susietas su loopback, pasiekiamas tik iš hosto, o susietas su visomis sąsajomis pasiekiamas visur, kur leidžia ugniasienė. Compose faile, kuriame adresas praleistas, abu atrodo vienodai, o Docker numatytoji reikšmė yra platesnė.
Nuspręskite, kokio atvėrimo tikisi diegimas, ir tada aiškiai jį užrašykite. Vidinis testas, jungiantis per loopback, ir nuotolinis klientas, kuris negali prisijungti, gali abu būti tikslūs to paties konteinerio aprašymai.
Skaitykite veikiančią būseną
Patikrinkite veikiančio konteinerio faktinį susiejimą ir klausytoją jo tinklo vardų erdvėje. Compose failas galėjo būti redaguotas po konteinerio paleidimo, atvaizdžio metaduomenys gali deklaruoti prievadą jo neskelbdami, o antras konteineris jau gali užimti hosto prievadą. Deklaruoti prievadą atvaizde nėra jį skelbti, ir nė vienas iš jų nėra tas pats kaip klausytis.
Trys skirtingos būsenos, trys skirtingos komandos, ir tik paskutinė susijusi su OpenVPN.
Kai susiejimas teisingas
Kai paketas pasiekia OpenVPN, jo žurnalas yra vieta, kur skaitoma apie TLS ir autentifikaciją. Sertifikatų regeneravimas, siekiant sutaisyti paketą, kuris niekada neatvyko, yra bergždžias darbas, pridedantis antrą kintamąjį. Laikykite susiejimo pastabą prie kliento profilio, kad kitas žmogus perskaitytų vieną eilutę, o ne iš naujo atrastų visus tris skaičius. Vienas paketų fiksavimas hosto pusėje nusprendžia, kuri iš trijų grandžių neteisinga, ir tai kainuoja mažiau nei sertifikato regeneravimas.
Čia aprašytas atvejis yra skelbimas per tiltą. Hosto tinklas ir maršrutizuoti konteinerių adresai praleidžia vertimą, todėl tose konstrukcijose tie patys skaičiai reiškia ką kita.