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.

LocationExample
Remote client destinationHost address, UDP 1194
Published mappingHost UDP 1194 to container UDP 1195
Container listenerOpenVPN 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/udp

Kur 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.

Susiję straipsniai