Preglednik otvara VPN ime hosta preko HTTPS-a bez prigovora, a SSTP klijent ipak odbija da se poveže. Ništa u tom paru nije proturječno. SSTP koristi TLS kao vanjski transport, a zatim pokreće vlastiti zahtjev i PPP korisni teret unutar te veze, pa uspješno učitavanje stranice dokazuje samo jednu usku stvar: host odgovara na GET na portu 443. Klijent postavlja drugo pitanje, a server mu može odgovoriti loše.

Stranica se učitava, a tunel ne

Ljudi posežu za testom u pregledniku jer je brz, a zatim rezultat uzimaju kao dokaz da je server dostupan i konfigurisan. To je dokaz o GET-u na putanju koju je otvorila adresna traka, ništa više. VPN razgovor počinje nakon istog TLS rukovanja, ali šalje metodu i putanju koju web stranica nikada ne koristi. Zato odgovor 200 za preglednik ne govori ništa o tome postoji li SSTP krajnja točka.

Odvojite dva zapažanja i potraga postaje kraća. Transport i lanac certifikata rade, a nešto u razmjeni protokola iznad njih ne radi. To je druga istraga od pokvarenog porta ili isteklog certifikata i traži drugačije dokaze.

Šta SSTP klijent zapravo šalje

Klijent šalje HTTP zahtjev metodom SSTP_DUPLEX_POST na putanju /sra_{GUID}/, a zatim drži tijelo veze otvorenim kao dvosmjerni tok koji nosi PPP okvire. Ispravan server odgovara HTTP/1.1 200 i prestaje da se ponaša kao web server. Bilo šta drugo je potpis: 405 ili 404 znači da krajnje točke nema, 301 ili 302 znači da nešto preusmjerava zahtjev, a trenutni FIN znači da je proxy ili server zatvorio tok.

Zato meta mora biti SSTP server, a ne web server s prikačenim TLS certifikatom. Metoda, putanja i dugotrajno tijelo su zahtjevi protokola, pa obrnuti proxy ne može dodati ih samo konfiguracijom. Proxy koji savršeno prosljeđuje običan HTTPS ipak može odbiti metodu koju ne prepoznaje.

Gdje proxy ili web server prekida tok

Posrednik pregleda red HTTP zahtjeva prije nego bilo šta proslijedi, a prilagođena metoda s neobičnom putanjom može pasti njegova pravila. Neki uređaji poslužuju normalnu stranicu dok odbijaju ili prekidaju tunel, pa klijent prijavljuje vezu koja počne i zatim umre umjesto čistog odbijanja. Drugi prihvate zahtjev, pa primijene tajmaut za tijelo ili mirovanje koji PPP keepalive-i ne mogu preživjeti. Oboje izgleda isto s klijentove strane, zato je faza koja je pala važnija od teksta greške.

Dijeljenje porta 443 između web stranice i SSTP-a je odluka o rutiranju, a ne obećanje da svaki hop obrađuje oba razgovora na isti način. Ako je na putu balanser opterećenja, firewall ili TLS terminator, dodajte ga na listu sumnjivaca prije nego dirnete VPN konfiguraciju.

Testirajte faze odvojeno

Izvršite provjere po redu i zaustavite se na prvom neuspjehu, jer svaka faza isključuje drugi sloj. TLS sonda ispod odvaja identitet certifikata od svega što SSTP radi. Zamijenite ime hosta svojom krajnjom točkom i pročitajte subject i lanac koje ispisuje.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com

Zatim preslikajte preostale dokaze na faze umjesto da pogađate iz greške klijenta. Tabela ispod je kontrolna lista za tiket, s potpisom koji odvaja jedan neuspjeh od sljedećeg.

StageWhat it provesFailure signature
TCP to 443A listener exists and the path is openTimeout or connection refused
TLS with SNIThe certificate matches the name you useName mismatch or untrusted chain
SSTP_DUPLEX_POST exchangeThe endpoint is an SSTP server405, 404, 301 or an early FIN
PPP authenticationThe user credential was acceptedAuth failure after a 200 response
Inner routingA permitted destination is reachableTunnel up, no reply from the target

U tiket zapišite posljednju fazu koja je uspjela umjesto da pišete "nema veze". MS-SSTP specifikacija dokumentuje zahtjev i PPP razmjenu koji slijede nakon TLS rukovanja i referenca je za to zašto test u pregledniku ne može zamijeniti nijedno od toga.

Prvo identitet, zatim PPP

TLS identitet i PPP autentifikacija su uzastopni, ne alternativni, i njihovo miješanje vodi ljude na pogrešnu postavku servera. Klijent prvo provjeri certifikat servera i njegovu namjenu, zatim PPP pregovara vlastito stanje i autentificira korisnika metodom izazov-odgovor ili EAP. Problem s certifikatom daje drugačiju grešku od odbijene lozinke i nijedna greška ne opisuje fazu koju pokriva ona druga.

Zamjena imena hosta adresom ili preskakanje upozorenja o certifikatu uklanja provjeru koja bi identificirala neuspjelu fazu umjesto da je popravi. Zadržite upozorenje i pročitajte ga. Ne resetirajte PPP lozinku kad HTTP razmjena nikada nije stigla do SSTP ponašanja, jer podaci za prijavu nikada nisu traženi.

Povezani članci