VPN bloķēts tīklā, kurā atļauts tikai tīmeklis? Strādājiet pa slāņiem
Pārlūks strādā, tunelis mirst. Izlasiet curl laika fāzes, pārbaudiet starpniekserveri, noskaidrojiet, vai 443 patiešām ir atļauts, un pēc tam ierakstiet, kas pameta mašīnu.
Kampusa vai viesnīcas tīkls, kurā pārlūks strādā un katrs tunelis mirst, nav viena problēma, bet četri slāņi. Ceļš var atļaut tikai TCP 443, pieprasīt autentificētu starpniekserveri, pārbaudīt rokas sitienu vai vienkārši ar politiku aizliegt attālinātu piekļuvi. To apstrāde secīgi ļauj izvairīties no jauna klienta iegādes tīkla noteikuma labošanai. Tālākā instrukcija aizņem apmēram desmit minūtes un beidzas ar rakstisku atbildi, kurš slānis jūs noraidīja.
Pierādiet, kurš slānis atsakās no savienojuma
Nesāciet ar VPN klientu. Sāciet ar vienkāršu HTTPS pieprasījumu uz to pašu resursdatoru un lasiet laika fāzes, jo neveiksmīgā fāze pasaka, kura ierīce ir atbildīga:
curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect} code=%{http_code}\n' \
--max-time 8 https://vpn.example.net/
Nav atbildes un nav connect laika nozīmē, ka TCP nekad netika pabeigts, tāpēc spēlē ir ugunsmūris, starpniekservera prasība vai nepareizs galamērķis. connect laiks bez tls laika nozīmē, ka kaut kas vidū pieņēma savienojumu un pēc tam apturēja rokas sitienu, un tieši tā pārbaudošs starpniekserveris izskatās no klienta puses.
Tagad pārbaudiet sertifikātu, kuru jūs faktiski saņemat. Tas ir ātrākais veids, kā noskaidrot, vai runājat ar serveri vai ar starpkasti, kas parakstīja sesiju no jauna:
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/null
Izlasiet izdevēja rindu. Jūsu pašu CA nozīmē, ka esat sasniedzis pakalpojumu; uzņēmuma vai ierīces izdevējs nozīmē, ka filtrs izbeidza savienojumu un izlemj, kas notiks tālāk. Ierakstiet abas izvades ar laikatzīmi, jo tas pats tests stundu vēlāk viesu tīklā var dot citu atbildi.
Starpniekserveri apzināts klients maina pirmo paketi, nevis politiku
Ja tīkls pieprasa CONNECT caur autentificētu starpniekserveri, tas jāpasaka VPN klientam, citādi tas mēģinās atvērt ligzdu uz adresi, kuru nevar maršrutēt. Pārbaudiet starpniekserveri atsevišķi no klienta, lai kļūmei būtu viens skaidrojums:
https_proxy=http://proxy.example.edu:3128 curl -v -o /dev/null https://vpn.example.net/
sudo openvpn --config /etc/openvpn/corp.conf --proto tcp-client \
--remote vpn.example.net 443 --verb 4
Pirmā komanda pierāda, ka starpniekserveris pārnesīs galamērķi. Otrā lūdz klientam izmantot TCP uz 443, vienīgo transportu, ko lielākā daļa tikai tīmekļa ceļu vispār pārsūta. Ja pirmā izdodas un otrā joprojām neizdodas, starpniekserveris nav šķērslis.
Daži klienti lasa operētājsistēmas starpniekserveri, nevis pārrakstījumu, un daži nelasa nevienu. Pārbaudiet lietojumprogrammas dokumentāciju, pirms pieņemat, ka sistēmas iestatījums ir spēkā. Klients, kas galapunktu atrisina ar atrisinātāju, kuru starpniekserveris neapkalpo, arī šeit cietīs, un tāpēc DNS maiņa var izskatīties kā labojums, kad tā ir tikai apkārtceļš.
Pievērsiet uzmanību arī vadīšanas modelim. Filtrēts tīkls var atbildēt uz piegādātāja noteikšanas resursdatora nosaukumu ar kaut ko savu, kas maina, kuru starpniekservera profilu klients izvēlas. Nebūvējiet procesu ap šo savdabību. Tā atšķiras atkarībā no vietas, mainās bez paziņojuma, un tā nav kaut kas, ko jūs varat atbalstīt kādam citam.
Ports 443 ir sasniedzams, nevis atļauts
Tuneļa ietīšana TLS 443 portā atrisina sasniedzamību un neko citu. Filtrs, kas pārbauda portu, to laidīs cauri; filtrs, kas ņem rokas sitiena nospiedumu, nelaidīs, un šifrētais klienta sveiciens slēpj servera nosaukumu tikai tad, ja abi gali to atbalsta. Palaidiet testu un noskaidrojiet, aiz kāda filtra jūs esat, nevis ceriet.
Ir arī veiktspējas izmaksas, ko cilvēki atklāj vēlāk. Uzticams transports uzticama transporta iekšienē pastiprina zudumus, jo iekšējais steks atkārtoti sūta segmentus, ko ārējais jau atkārtoti nosūtīja. Tīrā līnijā to neviens nepamana. Pārslogotā kampusa bezvadu tīklā tunelis kļūst neizmantojams tieši tad, kad tas jums vajadzīgs, un grafiks izskatās kā pakešu zudums, lai gan nekas netiek apzināti izmests.
UDP parasti ir pirmais upuris, un to ir vērts apstiprināt, nevis pieņemt. Ja WireGuard vai noklusējuma OpenVPN nekad nepabeidz rokas sitienu, kamēr TCP 443 strādā, tīkls met UDP, un nekāda atslēgu reģenerācija to nemainīs:
sudo wg show
dig +short vpn.example.net
dig +short vpn.example.net @1.1.1.1
Tukša rokas sitiena laikatzīme blakus partnerim, kas vakar strādāja, ir UDP atbilde. Divi DNS vaicājumi atbild uz citu jautājumu: ja vietējais atrisinātājs un publisks atrisinātājs nevienojas par galapunkta adresi, jūs vada, un transporta arguments ir nepareizais.
Pārbaudiet, kas patiešām pameta mašīnu
Klienta žurnāli apraksta, kam klients tic. Ieraksts apraksta, ko redzēja tīkls, un atšķirība starp abiem ir vieta, kur tiek atrisināta lielākā daļa šo gadījumu:
sudo tcpdump -ni any -c 20 'tcp port 443 and host 203.0.113.10'
sudo ss -tunp | grep -E ':(443|1194|51820)\b'
Ja redzat SYN paketes un nav SYN-ACK, bloks ir augšpusē, un klients ir nevainīgs. Ja redzat pabeigtu rokas sitienu uz adresi, kas nav servera adrese, jūs runājat ar starpniekserveri vai pārtvērēju. Ja neredzat neko, pārbaudiet, vai ierakstījāt pareizajā saskarnē, pirms kaut ko secināt.
Ligzdu saraksts pārtver smalkāku gadījumu: otrs tunelis jau tur noklusējuma maršrutu. Divi klienti, kas cīnās par maršrutēšanas tabulu, rada periodiskas kļūmes, kas izskatās tieši kā bloķēts tīkls, un ieraksts parādīs satiksmi, kas iziet pa saskarni, kuru negaidījāt.
Atritināšana un piezīme, ko ir vērts saglabāt
Atsauciet izmaiņas apgrieztā secībā, kā tās veicāt. Noņemiet starpniekservera mainīgos, apturiet manuāli palaisto klientu un noņemiet jebkuru pievienoto maršruta vai atrisinātāja pārrakstījumu:
unset https_proxy http_proxy
sudo systemctl stop openvpn-client@corp
sudo ip route show default
Manuāli palaista klienta atstāšana darboties ir veids, kā portatīvais dators nākamajā biroja apmeklējumā paliek ar salauztu tīklu. Čaulas profilā atstāti starpniekservera mainīgie pēc nedēļām salauž nesaistītus rīkus, un cilvēks, kas tos atkļūdo, nesaistīs abus notikumus.
Pēc tam uzrakstiet četras rindas: tīkls, laikatzīme, neveiksmīgā fāze un redzētais izdevējs. Ceļš, kas strādā vienā kampusā un neizdodas nākamajā, ir normāli, un nākamajam cilvēkam jāzina, vai atšķirība bija starpniekserveris, atrisinātājs vai filtrs. Ja atbilde ir, ka tīkls aizliedz attālinātu piekļuvi, apstājieties tur un palūdziet administratoram atbalstīto ceļu, nevis nesiet apkārtceļu politikā, kuru neesat lasījis.