Aseta TLS-ümbris OpenVPN ette ja juurutus saab teise kuulaja, millest ainult üks peaks kunagi internetti vaatama. Kui tunnel töötab samalt masinalt ja ebaõnnestub väljastpoolt, on suunamine tavaliselt suunatud kahest valele. Kokku peab sobima kett: avalik reegel jõuab ümbriseni ja ümbrise enda taustühendus jõuab päris VPN-pesani. Neli hüpet kannavad seda ketti ja ükskõik milline neist võib uurimise varakult lõpetada.

Kaks pesa, kaks omanikku, üks neist avalik

Ümbris lõpetab TLS-i välimise ühenduse jaoks ja annab dekrüpteeritud baidivoo edasi tavalisele OpenVPN TCP kuulajale. Need on eraldi pesad eraldi konfiguratsioonifailidega, seega ühe muutmine jätab teise puutumata ja endiselt näiliselt terveks. See tähendab ka, et need kaks võivad lahku triivida, kui ühte muudetakse ilma teiseta.

Töötamine masinalt endalt tõestab seega avaliku tee kohta väga vähe. Otseühendus põlispordile jätab ümbrise vahele, ühendus ümbrisega selle LAN-aadressil jätab tõlke vahele, ja ainult kliendipoolne täielik seade harjutab seda, mida teeb väline kasutaja. Ka nimesid tuleb hoolikalt lugeda, sest localhost tähendab hosti, kus see konkreetne komponent töötab, mitte hosti, kuhu te parasjagu trükite. Hoidke see erinevus oma märkmetes, sest test, mis registreeriti ilma hüppeta, mida see kattis, kutsub üles võrdlema kahte erinevat asja.

Kuhu suunamine tegelikult maandub

Ketti on lihtsam hoida nelja hüppena kui kolme pordi numbrina, sest sama number võib kummaski otsas tähendada erinevat asja. Lugege tabelit rida-realt: iga rida on üks pesa, mis peab vastu võtma ühenduse ja seejärel avama järgmise. Kui rida on suunatud vale partneri poole, on viimases veerus olev sümptom see, mida kasutaja raporteerib.

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

Reegel, mis sihib põlist VPN-porti, mitte ümbrist, jätab TLS-i lõpetamise täielikult vahele, mis on selle vea kõige levinum variant: klient avab kätluse kuulajaga, kes ootab OpenVPN-i raamimist, seega ühendus võib avaneda ja siis takerduda. Kinnitage tõlgitud port ümbrise konfiguratsioonifaili vastu, mitte mälu vastu, sest järgmine inimene, kes seda faili muudab, võis valida teise numbri. Kaks allolevat käsku näitavad selle küsimuse mõlemat poolt korraga.

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

Sidumisaadress, mis keeldub sinust

127.0.0.1-ga seotud accept-rida vastab ainult hostile endale, seega LAN-aadressile saabuv suunamine ei saa ühenduda ja klient näeb keeldumist, mis kõlab paketifiltri probleemina. Vaadake pesa enne tulemüüri puutumist, sest pesa on odavam vastus. Siduge ümbris kas liidesega, mille poole suunamine sihib, või jätke see loopbackile ja tehke, et suunamine jõuaks loopbackini millegi kaudu, mis tõesti töötab. Need on kaks kavandit ja kumbki vajab oma reeglit.

Nende segamine on põhjus, miks töötav ümbris muutub väljast kättesaamatuks, samal ajal kui iga fail näib korras. Allolev kontroll on üks käsk ja vastab küsimusele, millele tulemüürireeglite ülevaatus vastata ei suuda. Kui väljund näitab loopbacki aadressi, samal ajal kui suunamine sihib LAN-aadressi, kuulub parandus accept-reale, mitte paketifiltrisse.

ss -lntp '( sport = :8443 )'

Mida kohalik test tegelikult tõestas

Edu, mis on registreeritud ilma hüppeta, mida see kattis, ei ole tõend teiste hüpete kohta. Märkige üles, millist aadressi test kasutas ja milline protsess vastas. Seejärel korrake väljastpoolt võrku, mitte samas Wi-Fi-võrgus olevast telefonist, sest juuksenõela käitumine erineb ruuterite vahel ja ühendus, mis ei lahkunud kunagi LAN-ist, võib kliendi rahuldada ilma, et suunamine üldse osaleks. Ainult see teine katse treenib teed, mille võõras läbib.

Kui katse ebaõnnestub, jälgige ühte ühendust mõlemas logis: ümbrise vastuvõetud ja ühendatud read, seejärel VPN-deemoni enda sessioonilog. Esimene piir, mis ei registreeri midagi, on koht, kuhu järgmine muudatus kuulub. Kui OpenVPN hakkab partneri valikuid võrdlema, hinnake neid sõnumeid selle teostuse reeglite järgi. Hoiatus link-mtu ebakõla kohta ei ole automaatselt fataalne, link-mtu kinnitamine 1500 juurde ei tõesta, et killustamine on lõppenud, ja šifri läbirääkimine kuulub sisemise OpenVPN-i konfiguratsiooni, mitte ruuteri suunamise juurde.

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

Need sondid katavad taustapesa ja ümbrise logi, mis eristab keeldutud tausta tagasilükatud kätlusest. Käivitage neid ühe katse ajal, mitte hiljem. Ühe katse ajatemplid on see, mis teeb võrdluse usaldusväärseks.

Kaks identiteeti, kaks rikkejärjekorda

Välimine sertifikaat kuulub ümbrisele ja sisemine identiteet OpenVPN-ile ning need võivad pärineda erinevatelt asutustelt. Mõlema kontrolli keelamine, et tee näeks terve välja, vahetab tõelise kaitse kosmeetilise tulemuse vastu. Hoidke mõlemad kontrollid alles ja siluge neid järjekorras, sest sõnumite jada nimetab kihi: ümbrise sertifikaadi probleem ilmub enne mis tahes VPN-valiku läbirääkimist, samas kui sisemise identiteedi rike ilmub alles siis, kui voog on loodud.

stunneli käsiraamat määratleb täpselt accept, connect ja kliendirežiimi ning need jaotised vastavad pesa küsimusele kiiremini kui oletamine. Kui te ei suuda ikka öelda, milline kiht vastas, lugege sertifikaati, mida avalik port esitab, alloleva käsuga. Ümbrise sertifikaat väljundis tähendab, et suunamine jõudis ümbriseni, ja vaikus või protokolliviga tähendab, et ei jõudnud. See üks erinevus säästab rohkem aega kui ükski teine kontroll siin.

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

Seotud artiklid