OpenVPN stunnel atzean: birbidali bilgarria, ez 1194 portua
Bi entzule, hiru portu. Egiaztatu birbidalketa non lurreratzen den, bilgarria non lotzen den, non konektatzen den, proba lokal batek zer saltatu zuen eta bi identitateak.
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.
| Hop | Listens on | Must reach | Symptom when it points elsewhere |
|---|---|---|---|
| Client machine | A local plaintext port | The wrapper's public TLS address | Plain text offered to a TLS endpoint |
| Router forward | Public TCP 443 | The wrapper host on its translated port | Wrapper records no connection at all |
| Wrapper, server mode | Its accepted port, 8443 here | The native VPN socket on loopback | Handshake completes, then silence |
| Native VPN listener | Loopback TCP port | Its peer, over TCP only | A 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