Vendosni një mbështjellës TLS përpara OpenVPN dhe vendosja fiton një dëgjues të dytë, nga të cilët vetëm njëri duhet të përballet ndonjëherë me internetin. Kur tuneli funksionon nga e njëjta makinë dhe dështon nga jashtë, përcjellja zakonisht drejtohet nga i gabuari i të dyve. Ajo që duhet të përputhet është një zinxhir: rregulli publik arrin te mbështjellësi, dhe lidhja vetjake backend e mbështjellësit arrin te priza e vërtetë VPN. Katër kërcime mbajnë këtë zinxhir dhe kushdo prej tyre mund ta përfundojë hetimin herët.

Dy priza, dy pronarë, njëri prej tyre publik

Mbështjellësi përfundon TLS për lidhjen e jashtme dhe e kalon rrjedhën e bajteve të çkriptuar te një dëgjues i thjeshtë OpenVPN TCP. Këto janë priza të veçanta me skedarë konfigurimi të veçantë, kështu që redaktimi i njërës e lë tjetrën të paprekur dhe ende në dukje të shëndoshë. Do të thotë gjithashtu se të dyja mund të largohen nga njëra-tjetra sa herë që njëra ndryshon pa tjetrën.

Puna nga vetë makina pra provon shumë pak për rrugën publike. Një lidhje e drejtpërdrejtë me portën amtare e anashkalon mbështjellësin, një lidhje me mbështjellësin në adresën e tij LAN e anashkalon përkthimin, dhe vetëm rregullimi i plotë në anën e klientit ushtron atë që bën një përdorues i jashtëm. Edhe emrat duhet lexuar me kujdes, sepse localhost nënkupton hostin që ekzekuton pikërisht atë komponent dhe jo hostin ku ju shtypni rastësisht. Mbajeni atë dallim në shënimet tuaja, sepse një test i regjistruar pa kërcimin që mbulonte fton një krahasim midis dy gjërave të ndryshme.

Ku zbret vërtet përcjellja

Zinxhiri mbahet më lehtë si katër kërcime sesa si tre numra portash, sepse i njëjti numër mund të thotë gjëra të ndryshme në çdo skaj. Lexoni tabelën rresht pas rreshti: çdo rresht është një prizë që duhet të pranojë një lidhje dhe më pas të hapë tjetrën. Kur një rresht drejtohet nga partneri i gabuar, simptomi në kolonën e fundit është ai që raporton përdoruesi.

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

Një rregull që synon portën amtare VPN në vend të mbështjellësit e anashkalon plotësisht përfundimin e TLS, dhe kjo është forma më e zakonshme e këtij gabimi: klienti hap një shtrëngim duar me një dëgjues që pret kornizimin OpenVPN, kështu që lidhja mund të hapet dhe më pas të ngecë. Konfirmoni portën e përkthyer në skedarin e konfigurimit të mbështjellësit dhe jo në kujtesë, sepse personi i radhës që redakton atë skedar mund të ketë zgjedhur një numër tjetër. Dy komandat më poshtë tregojnë të dyja anët e kësaj çështjeje njëkohësisht.

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

Adresa e lidhjes që ju refuzon

Një rresht accept i lidhur me 127.0.0.1 i përgjigjet vetëm vetë hostit, kështu që një përcjellje që arrin në adresën LAN nuk mund të lidhet dhe klienti sheh një refuzim që tingëllon si problem i filtrit të paketave. Shikoni prizën përpara se të prekni murin e zjarrit, sepse priza është përgjigjja më e lirë. Ose lidhni mbështjellësin me ndërfaqen ku synon përcjellja, ose mbajeni në loopback dhe bëni që përcjellja të arrijë loopback përmes diçkaje që funksionon vërtet. Këto janë dy projekte dhe secili ka nevojë për rregullin e vet.

Përzierja e tyre është mënyra se si një mbështjellës funksional bëhet i paarritshëm nga jashtë ndërsa çdo skedar duket i saktë. Kontrolli më poshtë është një komandë e vetme dhe i përgjigjet një pyetjeje që një rishikim i rregullave të murit të zjarrit nuk mundet. Nëse dalja tregon një adresë loopback ndërsa përcjellja synon adresën LAN, korrigjimi i takon rreshtit accept dhe jo filtrit të paketave.

ss -lntp '( sport = :8443 )'

Çfarë provoi vërtet testi lokal

Një sukses i regjistruar pa kërcimin që mbulonte nuk është provë për kërcimet e tjera. Shënoni cilën adresë përdori testi dhe cili proces u përgjigj. Pastaj përsëriteni nga jashtë rrjetit dhe jo nga një telefon në të njëjtin Wi-Fi, sepse sjellja e kapëses ndryshon mes ruterave dhe një lidhje që nuk doli kurrë nga LAN-i mund të kënaqë një klient pa qenë përcjellja fare e përfshirë. Vetëm ai provim i dytë ushtron rrugën që ndjek një i huaj.

Kur provimi dështon, ndiqni një lidhje të vetme në të dy regjistrat: rreshtat e pranuara dhe të lidhura të mbështjellësit, pastaj regjistri i sesionit të demonit VPN. Kufiri i parë që nuk regjistron asgjë është vendi i ndryshimit të radhës. Pasi OpenVPN fillon të krahasojë opsionet e partnerit, gjykoni ato mesazhe sipas rregullave të asaj implementimi. Një paralajmërim për mospërputhje link-mtu nuk është automatikisht fatal, fiksimi i link-mtu në 1500 nuk provon që fragmentimi është ndalur, dhe negocimi i shifrës i takon konfigurimit të brendshëm të OpenVPN dhe jo përcjelljes së ruterit.

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

Ato sonda mbulojnë prizën backend dhe regjistrin e mbështjellësit, gjë që ndan një backend të refuzuar nga një shtrëngim duar i refuzuar. Ekzekutoni ato ndërsa një provim i vetëm është në zhvillim e sipër dhe jo pas tij. Vulat kohore nga një provim i vetëm janë ajo që e bën krahasimin të besueshëm.

Dy identitete, dy rende dështimi

Certifikata e jashtme i takon mbështjellësit dhe identiteti i brendshëm i takon OpenVPN, dhe ato mund të vijnë nga autoritete të ndryshme. Çaktivizimi i njërës prej dy kontrolleve për ta bërë një rrugë të duket e shëndoshë shkëmben një mbrojtje reale me një rezultat kozmetik. Mbani të dy verifikimet dhe korrigjoni ato sipas radhës, sepse sekuenca e mesazheve emërton shtresën: një problem certifikate i mbështjellësit shfaqet përpara se të negociohet ndonjë opsion VPN, ndërsa një dështim i identitetit të brendshëm shfaqet vetëm pasi rrjedha të jetë vendosur.

manualet e stunnel përcaktojnë saktësisht accept, connect dhe modalitetin e klientit, dhe ato seksione i përgjigjen pyetjes së prizës më shpejt sesa hamendja. Kur ende nuk mund të thoni cila shtresë u përgjigj, lexoni certifikatën që paraqet porta publike me komandën më poshtë. Një certifikatë e mbështjellësit në dalje do të thotë që përcjellja arriti te mbështjellësi, dhe heshtja ose një gabim protokolli do të thotë që nuk arriti. Ai dallim i vetëm kursen më shumë kohë sesa çdo kontroll tjetër këtu.

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

Artikuj të ngjashëm