Containerul tău poate asculta pe UDP 1195 în timp ce gazda publică 1194, și asta este corect atâta timp cât maparea spune asta. Numerele formează un tabel de traducere: clientul apelează portul gazdei, Docker rescrie destinația către portul containerului, iar OpenVPN răspunde pe portul pe care îl numește propria configurație. O nepotrivire în oricare dintre aceste verigi produce o defecțiune silențioasă care arată ca un firewall. Certificatele și cifrurile sunt în aval și nu o pot repara.

Urmărește un pachet de la client la proces înainte de a schimba ceva la autentificare.

Trei numere, o conexiune

Cele trei numere sunt destinația la distanță folosită de client, maparea publicată pe gazdă și ascultătorul din interiorul containerului. Nu trebuie să fie egale, dar trebuie să formeze un lanț. Numerele egale sunt un caz special care se întâmplă să fie cel mai frecvent, de aceea o nepotrivire este ușor de scris o dată și greu de văzut mai târziu.

Scrie lanțul pe o singură linie înainte de depanare: adresa și portul clientului, maparea gazdei, ascultătorul containerului, transportul. Un defect în lanț apare ca un număr care se repetă cu valori diferite.

LocationExample
Remote client destinationHost address, UDP 1194
Published mappingHost UDP 1194 to container UDP 1195
Container listenerOpenVPN on UDP 1195

Ce spune de fapt sintaxa scurtă

În forma scurtă, partea stângă este portul gazdei, iar partea dreaptă este portul containerului, iar un sufix cu bară oblică alege transportul. Dacă omiți sufixul, Docker tratează maparea ca TCP, deci un ascultător UDP în spatele unei mapări fără protocol este un ascultător la care nimeni nu poate ajunge. Acea valoare implicită este documentată și încă îi surprinde pe cei care au potrivit numerele și au considerat lucrarea încheiată.

Forma lungă fixează explicit adresa de legare și protocolul, ceea ce merită liniile suplimentare pentru orice este orientat spre o rețea. Citește maparea publicată înapoi în loc să te bazezi pe fișierul care a produs-o.

ports:
  - 1194:1195/udp

Unde se poate opri pachetul

O cerere poate fi aruncată înainte de Docker, în Docker sau la ascultător. În fața Docker poate exista un firewall de cloud sau un router care face propria redirecționare, iar acel dispozitiv are nevoie de portul orientat spre gazdă și de transportul corect. În interiorul Docker, o mapare către portul greșit al containerului redirecționează către un socket închis.

Apoi ascultătorul: configurația OpenVPN numește un port și un protocol, iar un client care ajunge pe altul în interiorul containerului nu ajunge nicăieri. Testarea unui serviciu UDP cu TCP nu dovedește nimic în niciuna dintre aceste etape, așa că folosește transportul pe care îl va folosi clientul.

Adresele de legare decid accesibilitatea

O mapare publicată legată de loopback este accesibilă doar de pe gazdă, în timp ce una legată de toate interfețele este accesibilă oriunde firewallul permite. Cele două arată identic într-un fișier Compose care omite adresa, iar valoarea implicită a Docker este cea largă.

Decide ce expunere intenționează implementarea, apoi scrie-o explicit. Un test intern care se conectează prin loopback și un client la distanță care nu se poate conecta pot fi ambele descrieri exacte ale aceluiași container.

Citește starea de execuție

Inspectează maparea efectivă a containerului care rulează și ascultătorul din spațiul său de nume de rețea. Un fișier Compose poate fi fost editat după pornirea containerului, metadatele imaginii pot declara un port fără a-l publica, iar un al doilea container poate deține deja portul gazdei. A declara un port într-o imagine nu este același lucru cu a-l publica, iar niciuna dintre ele nu este identică cu ascultarea.

Trei stări diferite, trei comenzi diferite, și doar ultima implică OpenVPN.

După ce maparea este corectă

După ce pachetul ajunge la OpenVPN, jurnalul acestuia este locul unde se citește despre TLS și autentificare. Regenerarea certificatelor pentru a repara un pachet care nu a ajuns niciodată este muncă irosită care adaugă o a doua variabilă. Ține notița despre mapare lângă profilul clientului, astfel încât următoarea persoană să citească o linie în loc să redescopere toate cele trei numere. O singură captură de pachete pe partea gazdă stabilește care dintre cele trei verigi este greșită și costă mai puțin decât o regenerare de certificat.

Cazul descris aici este publicarea prin punte. Rețeaua gazdei și adresele de container rutate ocolesc traducerea, așa că aceleași numere înseamnă altceva în acele proiecte.

Articole similare