Setzt en TLS-Wrapper virun OpenVPN an d'Deployment kritt en zweeten Hörer, vun deem nëmmen een je emol sollt an d'Internet kucken. Wann den Tunnel vun der selwechter Maschinn aus funktionéiert a vun dobaussen feelt, ass d'Weiderleedung meeschtens op déi falsch vun den zwee gezilt. Wat muss zesummepassen ass eng Kette: d'ëffentlech Regel erreecht de Wrapper, an dem Wrapper seng eege Backend-Verbindung erreecht de richtege VPN-Socket. Véier Spréng droen déi Kette, a jiddweree vun hinne kann d'Untersuchung fréi ophalen.

Zwee Sockets, zwee Besëtzer, ee vun hinnen ëffentlech

De Wrapper beendet TLS fir d'äussert Verbindung a gëtt den entschlësselten Byte-Stroum un en einfachen OpenVPN TCP-Lauschterer weider. Dat sinn getrennte Sockets mat getrennte Konfiguratiounsfichieren, also léisst eng Ännerung un engem den aneren onberéiert an nach ëmmer scheinbar gesond. Et bedeit och, datt déi zwee auserneekënne kënnen, wann een ouni deen aneren geännert gëtt.

Vun der Maschinn selwer aus ze schaffen beweist also ganz wéineg iwwer de ëffentleche Wee. Eng direkt Verbindung op den nativen Port spréngt de Wrapper, eng Verbindung op de Wrapper op senger LAN-Adress spréngt d'Iwwersetzung, a just déi komplett Ariichtung op der Client-Säit üübt dat, wat en Ausse stehende maachet. Nimm missen och suergfälteg geliest ginn, well localhost den Host bedeit, deen déi bestëmmte Komponent bedreift, an net den Host, op deem Dir just tippt. Halt deen Ënnerscheed an Ären Notizen, well en Test, deen ouni de Sprong festgehale gëtt, deen en iwwerdeckt huet, zu engem Verglach tëscht zwee verschiddenen Dinge invitéiert.

Wou d'Weiderleedung tatsächlech landt

D'Kette léisst sech als véier Spréng méi einfach halen wéi als dräi Portsnummeren, well déiselwecht Nummer op all Enn eppes anescht bedeite kann. Liest d'Tabell Zeil fir Zeil: all Zeil ass ee Socket, dee muss eng Verbindung unhuelen an duerno déi nächst opmaachen. Wann eng Zeil op de falsche Partner gezilt ass, ass de Symptom an der leschter Spalt dat, wat de Benotzer mellen.

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

Eng Regel, déi op den nativen VPN-Port amplaz vum Wrapper zilt, spréngt d'TLS-Beendung komplett, an dat ass déi heefegst Form vun dësem Fehler: de Client mécht en Handshake mat engem Lauschterer op, dee OpenVPN-Rahmung erwaart, sou datt d'Verbindung sech ka opmaachen an duerno stoe bleiwen. Bestätegt de iwwersetzte Port géint dem Wrapper seng Konfiguratiounsfichier an net géint d'Erënnerung, well déi nächst Persoun, déi déi Fichier ännert, vläicht eng aner Nummer gewielt huet. Déi zwou Kommandoen hei drënner weisen déi zwou Säiten vun där Fro op eemol.

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

D'Bindadress, déi Iech ofweist

Eng accept-Zeil, déi un 127.0.0.1 gebonnen ass, äntwert nëmmen dem Host selwer, also kann eng Weiderleedung, déi op der LAN-Adress ukommt, sech net verbannen an de Client gesäit eng Oflehnung, déi wéi e Paketfilterproblem kléngt. Kuckt de Socket u virum Firewall, well de Socket ass déi méi bëlleg Äntwert. Entweder bënnt de Wrapper un d'Interface, op déi d'Weiderleedung zilt, oder haalt en op loopback a maacht, datt d'Weiderleedung loopback iwwer eppes erreecht, wat wierklech funktionéiert. Dat sinn zwou Designen, an alleng vun hinnen brauch seng eege Regel.

Si ze vermëschen ass de Grond, firwat en funktionéierende Wrapper vun dobausse onerreechbar gëtt, wärend all Fichier richteg ausgesäit. D'Kontroll hei drënner ass ee eenzegen Kommando, an si beäntwert eng Fro, déi eng Iwwerpréiwung vun de Firewall-Reegele net kann. Wann d'Ausgab eng loopback-Adress weist, wärend d'Weiderleedung op d'LAN-Adress zilt, gehéiert d'Korrektur an d'accept-Zeil an net an de Paketfilter.

ss -lntp '( sport = :8443 )'

Wat den lokalen Test tatsächlech bewisen huet

En Erfolleg, dee festgehale gëtt ouni de Sprong, deen en iwwerdeckt huet, ass keng Beweis iwwer déi aner Spréng. Notéiert, wéi eng Adress den Test benotzt huet a wéi ee Prozess geäntwert huet. Widderhuelt et duerno vun ausserhalb vum Netzwierk amplaz vun engem Telefon am selwechten Wi-Fi, well d'Hoerklammer-Verhalen tëscht Routeren ënnerschiddlech ass an eng Verbindung, déi den LAN ni verlooss huet, e Client zefridde stellen, ouni datt d'Weiderleedung iwwerhaapt bedeelegt ass. Nëmmen deen zweeten Versuch üübt de Wee, deen en Unbekannte hëlt.

Wann de Versuch feelt, suivéiert eng eenzeg Verbindung iwwer béid Loggen: dem Wrapper seng ugehollen an ugeschloss Zeilen, duerno dem VPN-Daemon säi eegene Sessiounslog. Déi éischt Grenz, déi näischt festhält, ass dee Punkt, wou déi nächst Ännerung gehéiert. Wann OpenVPN d'Peer-Optiounen ufänkt ze vergläichen, beurteelt déi Messagen no de Reegele vun där Implementéierung. Eng Warnung iwwer eng link-mtu-Inkonsistenz ass net automatesch fatal, link-mtu op 1500 ze setzen beweist net, datt d'Fragmentéierung opgehalen huet, an d'Cipher-Verhandlung gehéiert zu der innerer OpenVPN-Konfiguratioun an net zu der Weiderleedung vum Router.

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

Déi Sonden decken de Backend-Socket an de Wrapper-Log of, wat en ofgelehnte Backend vun engem ofgelehnten Handshake trennt. Fuert se aus, wärend een eenzegen Versuch leeft, an net duerno. D'Zäitstempel vun engem eenzegen Versuch sinn dat, wat de Vergläich vertrauenswierdeg mécht.

Zwou Identitéiten, zwou Feelerordnungen

D'äussert Zertifikat gehéiert zum Wrapper an déi innen Identitéit gehéiert zu OpenVPN, an si kënne vun ënnerschiddlechen Autoritéiten kommen. Eng vun deenen zwou Kontrollen auszeschalten, fir datt e Wee gesond ausgesäit, tauscht e richtege Schutz géint en kosmetescht Resultat. Behaalt béid Verifikatiounen a debugt se an der Reihenfolge, well d'Reihenfolge vun de Messagen d'Schicht nennt: e Problem mam Wrapper-Zertifikat erschéngt, ier eng Optioun vun OpenVPN verhandelt gëtt, wärend en Feeler vun der innerer Identitéit eréischt erschéngt, wann de Stroum etabléiert ass.

Den stunnel-Handbuch definéiert accept, connect an de Clientmodus präzis, an déi Sektiounen äntwerten d'Socket-Fro méi séier wéi roden. Wann Dir nach ëmmer net kënnt soen, wéi eng Schicht geäntwert huet, liest d'Zertifikat, dat den ëffentleche Port presentéiert, mam Kommando hei drënner. En Wrapper-Zertifikat an der Ausgab bedeit, datt d'Weiderleedung de Wrapper erreecht huet, a Stille oder e Protokollfehler bedeit, datt se et net huet. Dee eenzegen Ënnerscheed spuert méi Zäit wéi all aner Kontroll hei.

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

Ähnlech Artikelen