Maglagay ng pambalot na TLS sa harap ng OpenVPN at ang deployment ay magkakaroon ng pangalawang tagapakinig, kung saan isa lamang sa kanila ang dapat humarap sa internet. Kapag gumagana ang tunnel mula sa parehong makina at nabibigo mula sa labas, ang pagpapasa ay karaniwang nakaturo sa maling isa sa dalawa. Ang dapat magtugma ay isang tanikala: ang pampublikong patakaran ay umaabot sa pambalot, at ang sariling backend na koneksyon ng pambalot ay umaabot sa tunay na VPN socket. Apat na pagtalon ang nagdadala ng tanikalang iyon, at alinman sa mga ito ay maaaring tapusin ang pagsisiyasat nang maaga.

Dalawang socket, dalawang may-ari, isa sa kanila ay pampubliko

Tinatapos ng pambalot ang TLS para sa panlabas na koneksyon at ipinapasa ang na-decrypt na byte stream sa isang ordinaryong tagapakinig ng OpenVPN TCP. Ang mga ito ay magkakahiwalay na socket na may magkakahiwalay na file ng configuration, kaya ang pag-edit ng isa ay iniiwan ang isa pang hindi nagalaw at mukha pa ring malusog. Nangangahulugan din ito na ang dalawa ay maaaring lumayo sa isa't isa kapag ang isa ay binago nang wala ang isa.

Ang pagtatrabaho mula sa makina mismo ay nagpapatunay ng napakakaunti tungkol sa pampublikong landas. Ang direktang koneksyon sa orihinal na port ay lumalaktaw sa pambalot, ang koneksyon sa pambalot sa address nitong LAN ay lumalaktaw sa salin, at tanging ang buong ayos sa panig ng kliyente ang nagsasanay ng ginagawa ng panlabas na gumagamit. Kailangan ding basahin nang mabuti ang mga pangalan, dahil ang localhost ay nangangahulugan ng host na nagpapatakbo ng partikular na component na iyon, at hindi ang host na nagkataong tinitipa mo. Itago ang pagkakaibang iyon sa iyong mga tala, dahil ang pagsubok na naitala nang hindi isinasaad ang pagtalong sakop nito ay nag-aanyaya ng paghahambing ng dalawang magkaibang bagay.

Saan talaga lumalapag ang pagpapasa

Mas madaling hawakan ang tanikala bilang apat na pagtalon kaysa tatlong numero ng port, dahil ang parehong numero ay maaaring mangahulugan ng iba't ibang bagay sa bawat dulo. Basahin ang talahanayan nang hilera-hilera: bawat hilera ay isang socket na dapat tumanggap ng koneksyon at pagkatapos ay buksan ang susunod. Kapag ang isang hilera ay nakaturo sa maling katambal, ang sintomas sa huling hanay ang siyang iniuulat ng gumagamit.

HopListens onMust reachSymptom when it points elsewhere
Client machineA local plaintext portThe wrapper's public TLS addressPlain text offered to a TLS endpoint
Router forwardPublic TCP 443The wrapper host on its translated portWrapper records no connection at all
Wrapper, server modeIts accepted port, 8443 hereThe native VPN socket on loopbackHandshake completes, then silence
Native VPN listenerLoopback TCP portIts peer, over TCP onlyA UDP socket behind a byte-stream relay

Ang patakarang nakaturo sa orihinal na port ng VPN sa halip na sa pambalot ay lumalaktaw nang buo sa pagtatapos ng TLS, at ito ang pinakakaraniwang anyo ng pagkakamaling ito: binubuksan ng kliyente ang pakikipagkamay sa isang tagapakinig na umaasa ng OpenVPN framing, kaya ang koneksyon ay maaaring bumukas at pagkatapos ay tumigil. Tiyakin ang isinalin na port laban sa file ng configuration ng pambalot at hindi laban sa memorya, dahil ang susunod na taong mag-e-edit ng file na iyon ay maaaring pumili ng ibang numero. Ipinapakita ng dalawang utos sa ibaba ang dalawang panig ng tanong na iyon nang sabay.

grep -nE '^[[:space:]]*(accept|connect)' /etc/stunnel/stunnel.conf
ss -lntp | grep -E ':443|:8443|:1194'

Ang address ng pagkakatali na tumatanggi sa iyo

Ang linyang accept na nakatali sa 127.0.0.1 ay sumasagot lamang sa host mismo, kaya ang pagpapasang dumarating sa address ng LAN ay hindi makakakonekta at ang kliyente ay makakakita ng pagtanggi na parang problema sa filter ng packet. Tingnan ang socket bago hawakan ang firewall, dahil ang socket ang mas murang sagot. Alinman ay ibigkis ang pambalot sa interface na pinupuntirya ng pagpapasa, o panatilihin ito sa loopback at gawing maabot ng pagpapasa ang loopback sa pamamagitan ng isang bagay na talagang gumagana. Ito ay dalawang disenyo, at bawat isa ay nangangailangan ng sariling patakaran.

Ang paghahalo sa kanila ay kung paano nagiging hindi maabot mula sa labas ang isang gumaganang pambalot habang ang bawat file ay mukhang tama. Ang pagsusuring nasa ibaba ay isang utos lamang, at sinasagot nito ang isang tanong na hindi kayang sagutin ng pagsusuri ng mga patakaran ng firewall. Kung ang output ay nagpapakita ng address na loopback habang ang pagpapasa ay nakaturo sa address ng LAN, ang pagwawasto ay nasa linyang accept at hindi sa filter ng packet.

ss -lntp '( sport = :8443 )'

Ano ang talagang pinatunayan ng lokal na pagsubok

Ang tagumpay na naitala nang hindi isinasaad ang pagtalong sakop nito ay hindi ebidensya tungkol sa iba pang pagtalon. Itala kung aling address ang ginamit ng pagsubok at aling proseso ang sumagot. Pagkatapos ay ulitin mula sa labas ng network at hindi mula sa telepono sa parehong Wi-Fi, dahil nag-iiba ang pag-uugali ng hairpin sa mga router at ang isang koneksyon na hindi kailanman umalis sa LAN ay maaaring masiyahan ang isang kliyente nang hindi man lang kasangkot ang pagpapasa. Tanging ang ikalawang pagtatangkang iyon ang nagsasanay ng landas na tinatahak ng isang estranghero.

Kapag nabigo ang pagtatangka, sundan ang isang koneksyon sa parehong log: ang mga linyang tinanggap at nakakonekta ng pambalot, pagkatapos ang log ng session ng daemon ng VPN mismo. Ang unang hangganan na walang naitala ay kung saan nararapat ang susunod na pagbabago. Kapag sinimulan na ng OpenVPN na ihambing ang mga opsyon ng katambal, hatulan ang mga mensaheng iyon ayon sa mga patakaran ng implementasyong iyon. Ang babala tungkol sa hindi pagsasang-ayon ng link-mtu ay hindi awtomatikong nakamamatay, ang pagpirmi ng link-mtu sa 1500 ay hindi nagpapatunay na tumigil ang fragmentation, at ang negosasyon ng cipher ay kabilang sa panloob na configuration ng OpenVPN at hindi sa pagpapasa ng router.

nc -vz 127.0.0.1 1194
journalctl -u stunnel -n 50 --no-pager

Sakop ng mga probe na iyon ang backend socket at ang log ng pambalot, na naghihiwalay ng tinanggihang backend mula sa tinanggihang pakikipagkamay. Patakbuhin ang mga ito habang may isang pagtatangkang nagaganap at hindi pagkatapos. Ang mga timestamp mula sa isang pagtatangka ang nagpapatiwasay sa paghahambing.

Dalawang pagkakakilanlan, dalawang pagkakasunod-sunod ng pagpalya

Ang panlabas na sertipiko ay pag-aari ng pambalot at ang panloob na pagkakakilanlan ay pag-aari ng OpenVPN, at maaaring magmula sila sa magkaibang awtoridad. Ang pagpapatay sa alinman sa dalawang pagsusuri upang magmukhang malusog ang isang landas ay nagpapalit ng tunay na proteksyon sa isang kosmetikong resulta. Panatilihin ang dalawang beripikasyon at i-debug ang mga ito nang sunud-sunod, dahil pinapangalanan ng pagkakasunod-sunod ng mga mensahe ang antas: ang problema sa sertipiko ng pambalot ay lumilitaw bago pa man mapagkasunduan ang anumang opsyon ng VPN, samantalang ang pagpalya ng panloob na pagkakakilanlan ay lumilitaw lamang kapag naitatag na ang stream.

manwal ng stunnel ay tumutukoy nang tumpak sa accept, connect at client mode, at ang mga seksyong iyon ay sumasagot sa tanong tungkol sa socket nang mas mabilis kaysa hulaan. Kapag hindi mo pa rin masabi kung aling antas ang sumagot, basahin ang sertipikong ipinakita ng pampublikong port gamit ang utos sa ibaba. Ang sertipiko ng pambalot sa output ay nangangahulugan na naabot ng pagpapasa ang pambalot, at ang katahimikan o error sa protocol ay nangangahulugan na hindi. Ang nag-iisang pagkakaibang iyon ay nakakatipid ng mas maraming oras kaysa sa alinmang iba pang pagsusuri dito.

openssl s_client -connect vpn.example:443 -servername vpn.example </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer

Kaugnay na mga artikulo