OpenVPN na 443 još blokiran? Provjerite što mreža pregledava
Port 443 mijenja broj, ne oblik protokola. Ako put pregledava ili prekida TLS, omotač i ispravna ruta do hosta sljedeći su testovi.
Tunel se spaja s kućne linije i zastaje na hotelskoj ili uredskoj mreži, a premještanje poslužitelja na port 443 nije promijenilo ništa. Taj je rezultat dovoljno čest da ima oblik: port je bio lakši dio, a ostatak odluke pripada svemu što stoji između klijenta i poslužitelja. Dva pitanja rješavaju većinu slučajeva i nijedno nije o šiframa. Prihvaća li mreža TLS rukovanje na tu adresu i zadržava li klijent rutu do vlastitog omotača dok je tunel podignut?
Rukovanje odaje više od broja
Izvorni VPN slušatelj na TCP 443 govori svoj protokol od prvog paketa. ClientHello ima polje verzije, slučajnu vrijednost i popis proširenja, a uređaj koji pročita nekoliko stotina bajtova može razliku prepoznati bez ikakva dešifriranja. Brojeve portova lako je zadovoljiti, a oblik protokola ono je što filtar zapravo provjerava. Pravila se obično pišu i po protokolu, pa politika koja pregledava TLS ne govori ništa o UDP-u.
Transparentni proxy koji inzistira na valjanoj TLS sesiji prekida vezu tijekom postavljanja, često nakon što TCP rukovanje završi. Taj je detalj važan kasnije, jer znači da klijentski zapis staje nakon uspostave socketa.
Omotavanje toka stvara dvije točke kvara
TLS omotač poput stunnela vraća očekivani oblik: klijent se spaja na lokalni slušatelj, omotač otvara pravu TLS sesiju prema poslužitelju na 443, a drugi omotač na poslužitelju prosljeđuje dešifrirane bajtove VPN daemonu. Vanjska sesija sada izgleda kao svaka druga HTTPS veza. VPN daemon na poslužitelju trebao bi slušati samo na loopbacku, jer ništa izvan omotača ne treba do njega.
Za taj dizajn moraju se poklopiti tri odvojene stvari. Profil klijenta pokazuje na lokalni slušatelj, poslužiteljev certifikat odgovara imenu koje klijent provjerava, a prosljeđivanje na strani poslužitelja cilja port koji daemon stvarno koristi. Pogriješite li u bilo kojoj, veza umire prije nego dođe do VPN sloja. Tada se nesklad certifikata pojavljuje kao pogreška omotača, a ne kao VPN pogreška, i zato oba zapisa vrijedi čitati usporedo.
Ruta do omotača je zamka
Kad se tunel podigne, zadana ruta pokazuje u njega, a vanjska TLS sesija treba put koji ne ulazi u tunel koji prenosi. Običan VPN klijent štiti adresu na koju bira; omotani klijent bira vlastiti loopback, pa je odredišna adresa omotača nevidljiva toj zaštiti.
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
Točne adrese popunjavate sami, a ruta mora postojati cijeli život veze, ne samo pri pokretanju. Mala skripta omotač koja dodaje rutu prije klijenta i uklanja je poslije pouzdanija je od zapamćene naredbe.
Na Androidu je ekvivalent te iznimke postavka po aplikaciji: isključite aplikaciju omotač iz tunela da njezin vlastiti promet izlazi preko mobilne veze. Bez isključenja omotač se usmjerava u tunel koji pokušava izgraditi, a petlja ponovnog spajanja izgleda kao problem poslužitelja.
Pročitajte vrijeme prije nego što bilo što promijenite
Sesija koja umire nakon istog intervala svaki put potpis je politike, a ne kriptografska pogreška, a dugotrajna ograničenja protoka daju upravo takav uzorak. Veza koja se resetira odmah nakon rukovanja upućuje na proxy kojem se nije svidio lanac certifikata.
Usporedite izdavatelja certifikata običnog HTTPS sitea s obje mreže. Ako se izdavatelj razlikuje na ograničenoj mreži, nešto prekida TLS u sredini i nijedan omotač neće preživjeti to presretanje nepromijenjen. Ista usporedba kaže cilja li blokada ime vašeg poslužitelja ili svaku TLS sesiju na toj adresi.
Zapišite opaženo ponašanje: koliko je sesija trajala, je li socket otvoren, je li omotač zabilježio rukovanje. Svaki od tih podataka sužava sljedeći test.
Testirajte jednu varijablu odjednom
Prvo provjerite UDP, jer ga neke mreže potpuno odbacuju i UDP neuspjeh ne govori ništa o 443. Zatim pokušajte TCP 443 bez omotača, pa omotač na 443. Čitajte klijentski zapis na svakom koraku i zaustavite se čim se ponašanje promijeni.
Mijenjajte jedan element po pokušaju. Novi port, novi omotač i nova šifra u istom prolazu ostavljaju vas bez odgovora koje je od troje bilo važno.