OpenVPN pordil 443 ikka blokeeritud? Vaata, mida võrk uurib
Port 443 muudab numbrit, mitte protokolli kuju. Kui tee uurib või lõpetab TLS-i, on järgmised testid ümbris ja õige hosti marsruut.
Tunnel ühendub koduliinilt ja jääb hotelli- või kontorivõrgus seisma, ning serveri viimine pordile 443 ei muutnud midagi. See tulemus on piisavalt tavaline, et omada kuju: port oli lihtne osa, ja ülejäänud otsus kuulub kõigele, mis istub kliendi ja serveri vahel. Kaks küsimust lahendavad enamiku juhtumeid, ja kumbki ei käsitle šifreid. Kas võrk aktsepteerib TLS-i kätlust sellele aadressile, ja kas klient hoiab marsruuti oma ümbrise juurde, kui tunnel on üleval?
Kätlus reedab rohkem kui number
Päris VPN-kuulaja TCP 443 peal räägib oma protokolli juba esimesest paketist. ClientHello-l on versiooniväli, juhuslik väärtus ja laienduste loend, ning seade, mis loeb paar sada baiti, näeb erinevust ilma midagi dekrüpteerimata. Pordinumbreid on odav rahuldada, ja protokolli kuju on see, mida filter tegelikult kontrollib. Reeglid kirjutatakse tavaliselt ka protokolli kaupa, seega TLS-i uuriv poliitika ei ütle UDP kohta midagi.
Läbipaistev puhverserver, mis nõuab kehtivat TLS-seanssi, katkestab ühenduse seadistamise ajal, sageli pärast TCP kätluse lõppemist. See detail loeb hiljem, sest see tähendab, et kliendi logi lõpeb pärast pesa loomist.
Voo ümbritsemine loob kaks rikkekohta
TLS-ümbris nagu stunnel taastab oodatud kuju: klient ühendub kohaliku kuulajaga, ümbris avab serveriga pärise TLS-seansi pordil 443, ja teine ümbris serveris edastab dekrüpteeritud baidid VPN-deemonile. Väline seanss näeb nüüd välja nagu iga teine HTTPS-ühendus. VPN-deemon serveris peaks kuulama ainult loopbackil, sest mitte miski väljaspool ümbrist ei pea selleni jõudma.
Selle kavandi jaoks peavad kolm eraldi asja kokku langema. Kliendi profiil osutab kohalikule kuulajale, serveri sertifikaat vastab nimele, mida klient kontrollib, ja serveripoolne edastus sihib porti, mida deemon tõesti kasutab. Eksides ükskõik millises neist, sureb ühendus enne, kui VPN-kiht kätte jõuab. Siis ilmub sertifikaadi lahknevus ümbrise veana, mitte VPN-i veana, ja seetõttu tasub mõlemat logi kõrvuti lugeda.
Marsruut ümbrise juurde on lõks
Kui tunnel üles tuleb, osutab vaikemarsruut sellesse, ja väline TLS-seanss vajab teed, mis ei lähe sellesse tunnelisse, mida ta kannab. Tavaline VPN-klient kaitseb aadressi, millele ta helistab; ümbritsetud klient helistab oma loopbackile, seega on ümbrise sihtaadress selle kaitse jaoks nähtamatu.
sudo ip route add 198.51.100.20 via 192.168.0.1
sudo openvpn --config client.ovpn
sudo ip route del 198.51.100.20
Täpsed aadressid täidad ise, ja marsruut peab eksisteerima kogu ühenduse eluea, mitte ainult käivitamisel. Väike ümbrise skript, mis lisab marsruudi enne klienti ja eemaldab selle pärast, on usaldusväärsem kui meelde jäetud käsk.
Androidis on selle erandi vaste rakendusepõhine säte: välista ümbrise rakendus tunnelist, et selle enda liiklus väljuks mobiilse ühenduse kaudu. Ilma välistamiseta suunatakse ümbris tunnelisse, mida ta püüab ehitada, ja taasthenduse tsükkel näeb välja nagu serveri probleem.
Lugege ajastust enne, kui midagi muudate
Seanss, mis sureb iga kord pärast sama intervalli, on poliitika allkiri, mitte krüptograafiline tõrge, ja pikaajalised voolupiirangud tekitavad täpselt sellise mustri. Ühendus, mis lähtestatakse kohe pärast kätlust, viitab puhverserverile, kellele sertifikaadiahel ei meeldinud.
Võrdle tavalise HTTPS-saidi sertifikaadi väljaandjat mõlemast võrgust. Kui väljaandja erineb piiratud võrgus, lõpetab miski TLS-i keskel, ja ükski ümbris ei jää sellest vaheltlõikest muutumatuna ellu. Sama võrdlus ütleb, kas blokk sihib sinu serveri nime või iga TLS-seanssi sellel aadressil.
Kirjuta vaadeldud käitumine üles: kui kaua seanss kestis, kas pesa avanes, kas ümbris logis kätluse. Igaüks neist kitsendab järgmist testi.
Testige korraga üht muutujat
Kontrolli kõigepealt UDP-d, sest mõned võrgud viskavad selle täielikult ära ja UDP tõrge ei ütle 443 kohta midagi. Seejärel proovi TCP 443 ilma ümbriseta, siis ümbrist pordil 443. Loe kliendi logi igal sammul ja peatu niipea, kui käitumine muutub.
Muuda katse kohta üht elementi. Uus port, uus ümbris ja uus šiffer samas jooksus jätavad sind olukorda, kus ei saa öelda, milline kolmest loeb.