Jarri TLS bilgarri bat OpenVPN aurretik eta hedapenak bigarren entzule bat irabazten du, horietatik bakarra begiratu beharko luke internetera inoiz. Tunela makinatik bertatik funtzionatzen duenean eta kanpotik huts egiten duenean, birbidalketa normalean bien arteko okerrean zuzenduta egoten da. Lerrokatu behar dena kate bat da: arau publikoa bilgarririk iristen da, eta bilgarriaren backend konexio propioak benetako VPN socket-era iristen da. Lau jauzik daramate kate hori, eta edozeinek ikerketa goiz amai dezake.

Bi socket, bi jabe, bat publikoa

Bilgarriak kanpoko konexioarentzako TLS amaitzen du eta deskifratutako byte korrontea OpenVPN TCP entzule arrunt bati pasatzen dio. Hauek socket bereiziak konfigurazio fitxategi bereiziekin dira, beraz bat editzeak bestea ukitu gabe eta itxuraz osasuntsu uzten du. Gainera, biak elkarrengandik urrun daitezke bat bestea gabe aldatzen denean.

Makina beretik lan egiteak, beraz, oso gutxi frogatzen du bide publikoaz. Portu natiborako konexio zuzenak bilgarria saltatzen du, bilgarrira haren LAN helbidean egindako konexioak itzulpena saltatzen du, eta bezeroaren aldeko ezarpen osoak bakarrik praktikatzen du kanpoko erabiltzaile batek egiten duena. Izenak ere arretaz irakurri behar dira, localhost osagai hori exekutatzen duen ostalaria esan nahi baitu, ez kasualitatez idazten ari zaren ostalaria. Mantendu bereizketa hori zure oharretan, estali zuen jauzirik gabe erregistratutako proba batek bi gauza desberdin alderatzera gonbidatzen baitu.

Birbidalketa non lurreratzen den benetan

Kateari errazago eusten zaio lau jauzi gisa hiru portu-zenbaki gisa baino, zenbaki berak esanahi desberdina izan baitezake mutur bakoitzean. Irakurri taula errenkadan: errenkada bakoitza konexio bat onartu eta gero hurrengoa ireki behar duen socket bat da. Errenkada bat bikote okerrean zuzentzen denean, azken zutabeko sintoma da erabiltzaileak jakinarazten duena.

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

VPN portu natiboa bilgarriaren ordez helburutzat hartzen duen arauak TLS amaiera erabat saltatzen du, eta hori da errore horren bertsio ohikoena: bezeroak OpenVPN markoa espero duen entzule batekin eskuko keinu bat irekitzen du, beraz konexioa ireki eta gero trabatu daiteke. Egiaztatu itzulitako portua bilgarriaren konfigurazio fitxategiaren aurka, ez memoriaren aurka, fitxategi hori editatzeko hurrengo pertsonak beste zenbaki bat aukeratu baitu. Beheko bi aginduek galdera horren bi aldeak aldi berean erakusten dituzte.

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

Ukatzen zaituen lotura-helbidea

127.0.0.1-ri lotutako accept lerroak ostalariari berari bakarrik erantzuten dio, beraz LAN helbidera iristen den birbidalketa ezin da konektatu eta bezeroak pakete-iragazki arazo baten modukoa dirudien ukapena ikusten du. Begiratu socketa suebakia ukitu aurretik, socketa baita erantzun merkeagoa. Edo lotu bilgarria birbidalketak helburutzat hartzen duen interfazera, edo mantendu loopback-en eta egin birbidalketa loopback-era benetan funtzionatzen duen zerbaiten bidez irits dadin. Bi diseinu dira, eta bakoitzak bere araua behar du.

Biak nahastea da bilgarri bat lanean ari dena kanpotik iristezin bihurtzeko modua, fitxategi guztiak zuzenak diruditela. Beheko egiaztapena agindu bakarra da, eta suebakiko arauen berrikuspenak erantzun ezin duen galdera erantzuten du. Irteerak loopback helbidea erakusten badu birbidalketa LAN helbidera zuzentzen den bitartean, konponketa accept lerroan dago, ez pakete-iragazkian.

ss -lntp '( sport = :8443 )'

Zer frogatu zuen proba lokalak benetan

Estali zuen jauzirik gabe erregistratutako arrakastak ez du beste jauzien inguruko frogarik ematen. Idatzi probak zein helbide erabili zuen eta zein prozesuk erantzun zuen. Gero errepikatu sarearen kanpotik, ez Wi-Fi bereko telefono batetik, horrelakoa itzultzeko portaera desberdina baita bideratzaileen artean eta LANetik inoiz irten ez den konexio batek bezero bat ase dezake birbidalketa erabat parte hartu gabe. Bigarren saiakera horrek bakarrik praktikatzen du ezezagun batek egiten duen bidea.

Saiakerak huts egiten duenean, jarraitu konexio bakarra bi erregistroetan zehar: bilgarriaren onartutako eta konektatutako lerroak, gero VPN daemonaren beraren saio-erregistroa. Ezer erregistratzen ez duen lehen muga da hurrengo aldaketaren lekua. OpenVPN bikotearen aukerak konparatzen hasten denean, epaitu mezu horiek ezarpen horren arauen arabera. link-mtu koherentzia ezaren abisua ez da automatikoki hilgarria, link-mtu 1500ean finkatzeak ez du frogatzen zatikatzea gelditu denik, eta zifratzearen negoziazioa OpenVPN konfigurazio barnekoari dagokio, ez bideratzailearen birbidalketari.

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

Sonda horiek backend socketa eta bilgarriaren erregistroa estaltzen dituzte, eta horrek ukatutako backend bat ukatuako eskuko keinu batetik bereizten du. Exekutatu saiakera bakarra martxan dagoen bitartean, ez geroago. Saiakera bakarreko denbora-zigiluek egiten dute konparazioa fidagarri.

Bi identitate, bi hutsegite ordena

Kanpoko ziurtagiria bilgarriarena da eta barneko identitatea OpenVPN-ena, eta agintaritza desberdinetatik etor daitezke. Bi egiaztapenetako edozein desgaitzeak benetako babesa emaitza kosmetiko baten truke trukatzen du. Mantendu bi egiaztapenak eta araztu itzazu ordenan, mezuen sekuentziak geruza izendatzen baitu: bilgarriaren ziurtagiri arazoa edozein VPN aukera negoziatu aurretik agertzen da, barneko identitatearen hutsegitea korrontea ezarri ondoren bakarrik agertzen den bitartean.

stunnel eskuliburua accept, connect eta bezero modua zehaztasunez definitzen ditu, eta atal horiek socket galderari asmatzea baino azkarrago erantzuten diote. Oraindik ezin baduzu esan zein geruzak erantzun zuen, irakurri portu publikoak aurkezten duen ziurtagiria beheko aginduarekin. Irteeran bilgarriaren ziurtagiria egoteak birbidalketa bilgarririk iritsi zela esan nahi du, eta isiltasunak edo protokolo errore batek ez zuela iritsi. Bereizketa bakar horrek hemen beste edozein egiaztapenek baino denbora gehiago aurrezten du.

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

Erlazionatutako artikuluak