Bakit hindi kailanman naaabot ng iyong Docker VPN port mapping ang OpenVPN
Ang host port, container port at transport ay tatlong magkahiwalay na desisyon. Sundan ang isang UDP pagtatangka sa bawat hangganan bago hawakan ang mga sertipiko.
Maaaring makinig ang iyong container sa UDP 1195 habang naglalathala ang host ng 1194, at tama iyon hangga't sinasabi ng mapping. Ang mga numero ay bumubuo ng talahanayan ng pagsasalin: ang kliyente ay tumatawag sa host port, muling isinusulat ng Docker ang destinasyon patungo sa container port, at ang OpenVPN ay sumasagot sa port na tinutukoy ng sarili nitong configuration. Ang hindi pagkakatugma sa alinman sa mga link na iyon ay nagdudulot ng tahimik na pagkabigo na mukhang firewall. Ang mga sertipiko at cipher ay nasa ibaba at hindi ito maaayos.
Sundan ang isang packet mula sa kliyente hanggang sa proseso bago baguhin ang anuman tungkol sa authentication.
Tatlong numero, isang koneksyon
Ang tatlong numero ay ang malayong destinasyon na ginagamit ng kliyente, ang nailathalang mapping sa host, at ang tagapakinig sa loob ng container. Hindi kailangang magkapareho, ngunit kailangang bumuo ng kadena. Ang magkaparehong numero ay isang espesyal na kaso na nagkataong pinakakaraniwan, kaya ang hindi pagkakatugma ay madaling isulat nang isang beses at mahirap makita mamaya.
Isulat ang kadena sa isang linya bago mag-debug: address at port ng kliyente, mapping ng host, tagapakinig ng container, transport. Ang depekto sa kadena ay lumilitaw bilang isang numero na lumalabas nang dalawang beses na may magkaibang halaga.
| Location | Example |
|---|---|
| Remote client destination | Host address, UDP 1194 |
| Published mapping | Host UDP 1194 to container UDP 1195 |
| Container listener | OpenVPN on UDP 1195 |
Ano ang tunay na sinasabi ng maikling syntax
Sa maikling anyo, ang kaliwang bahagi ay host port at ang kanang bahagi ay container port, at pinipili ng slash suffix ang transport. Kung aalisin mo ang suffix, itinuturing ng Docker ang mapping bilang TCP, kaya ang UDP tagapakinig sa likod ng mapping na walang protocol ay tagapakinig na walang makakaabot. Ang default na iyon ay dokumentado at nakakagulat pa rin sa mga nagtugma ng mga numero at nag-isip na tapos na.
Ang mahabang anyo ay tahasang nagtatakda ng bind address at protocol, na sulit ang dagdag na linya sa anumang nakaharap sa network. Basahin muli ang nailathalang mapping sa halip na magtiwala sa file na gumawa nito.
ports:
- 1194:1195/udpSaan maaaring huminto ang packet
Ang isang kahilingan ay maaaring itapon bago ang Docker, sa Docker, o sa tagapakinig. Sa harap ng Docker maaaring may cloud firewall o router na gumagawa ng sarili nitong forwarding, at kailangan ng device na iyon ang port na nakaharap sa host at ang tamang transport. Sa loob ng Docker, ang mapping sa maling container port ay nagpapasa sa saradong socket.
Pagkatapos ang tagapakinig: tinutukoy ng configuration ng OpenVPN ang isang port at protocol, at ang kliyenteng dumarating sa iba sa loob ng container ay walang naaabot. Ang pagsubok ng UDP service gamit ang TCP ay walang pinatutunayan sa alinman sa mga yugtong ito, kaya gamitin ang transport na gagamitin ng kliyente.
Ang mga bind address ang nagtatakda ng maaabot
Ang nailathalang mapping na nakatali sa loopback ay maaabot lamang mula sa host, habang ang nakatali sa lahat ng interface ay maaabot saanman pinapayagan ng firewall. Magkapareho ang itsura ng dalawa sa Compose file na nag-iiwan ng address, at ang default ng Docker ay ang malawak.
Magpasya kung anong pagkakalantad ang nilalayon ng deployment, pagkatapos ay isulat ito nang tahasan. Ang panloob na pagsubok na kumokonekta sa loopback at ang malayong kliyenteng hindi makakonekta ay maaaring parehong tumpak na paglalarawan ng parehong container.
Basahin ang tumatakbong estado
Suriin ang aktwal na mapping ng tumatakbong container at ang tagapakinig sa network namespace nito. Maaaring na-edit ang Compose file pagkatapos magsimula ang container, maaaring magdeklara ang image metadata ng port nang hindi ito inilalathala, at maaaring hawak na ng ikalawang container ang host port. Ang pagdeklara ng port sa isang image ay hindi paglalathala nito, at wala sa dalawa ang katulad ng pakikinig.
Tatlong magkaibang estado, tatlong magkaibang utos, at ang huli lamang ang may kinalaman sa OpenVPN.
Kapag tama na ang mapping
Kapag naabot ng packet ang OpenVPN, ang log nito ang lugar kung saan binabasa ang tungkol sa TLS at authentication. Ang muling paggawa ng mga sertipiko upang ayusin ang packet na hindi kailanman dumating ay sayang na trabaho na nagdaragdag ng ikalawang variable. Itago ang tala ng mapping sa tabi ng profile ng kliyente upang ang susunod na tao ay magbasa ng isang linya sa halip na muling tuklasin ang tatlong numero. Ang isang packet capture sa panig ng host ay nagtatakda kung alin sa tatlong link ang mali, at mas mababa ang gastos kaysa sa muling paggawa ng sertipiko.
Ang inilalarawan dito ay paglalathala sa pamamagitan ng bridge. Ang host networking at routed container address ay lumalampas sa pagsasalin, kaya ang parehong numero ay may ibang kahulugan sa mga disenyong iyon.