SSTP užėmė 443 prievadą: kodėl Apache nepaleidžiamas
Nepavykstanti svetainė nėra ta, kuri laiko 443. Windows SSTP rezervuoja prievadą per HTTP steką: perkelkite klausytoją, pastatykite IIS prieš jį arba perkelkite svetainę.
Apache nustoja atsakinėti į 443 tą popietę, kai kas nors įjungia gaunamus VPN ryšius, ir jo klaidų žurnalas kaltina bind, o ne rezervaciją, kuri yra už jo. Windows Routing and Remote Access tuo metu įjungia SSTP, o SSTP klausytojas per HTTP steką pareikalauja TCP 443 dar prieš autentifikuojant bet kurį klientą. Reikalavimas galioja net tada, kai trūksta sertifikato, pavadinimas neteisingas arba kiekvienas handshake atmetamas, todėl VPN, į kurį niekas negali prisijungti, vis tiek užima prievadą. Pirmiausia perskaitykite klausymosi lentelę; PID, turintis 443, nusprendžia, kuri iš toliau pateiktų pataisų jums apskritai atvira.
Rezervacija pergyvena sulaužytą sertifikatą
SSTP įvynioja PPP į TLS sesiją, todėl jam reikia 443 ir todėl jis eina per tarpinius serverius, kurie išmeta kitus tunelius. Klausytojas nėra socket, kurį VPN tarnyba atsidaro sau: SstpSvc registruoja jį branduolio HTTP tvarkyklėje, todėl prievadas lieka rezervuotas tol, kol tarnyba veikia. Ta registracija niekada neklausia sertifikato, o tai reiškia, kad pasibaigęs pavadinimas, netinkamas subject arba visai jokio sertifikato palieka 443 užimtą. Tada gedimai skyla dviem kryptimis: atmesti handshake patenka į System žurnalą po RasSstp, o web serveris gali tik pranešti, kad negalėjo prisirišti.
netstat -aon | findstr :443
tasklist /svc /fi "PID eq <pid>"
Pirmoji eilutė grąžina savininką PID; antroji įvardija už jo esančią tarnybą, o atsakymas paprastai yra HTTP tarnyba arba RRAS stekas. Kai tasklist atsako bendru pagrindinio kompiuterio procesu, skaitykite tarnybos stulpelį, o ne spėliokite iš proceso pavadinimo.
RasSstp įspėjimus verta skaityti tik po to, nes jie aprašo nepavykusį handshake ir nieko nesako apie rezervaciją, kuri sukėlė susidūrimą. VPN galinis taškas, atmetantis kiekvieną klientą, vis tiek valdo prievadą. Žurnalą traktuokite kaip antrą klausimą, o ne pirmą.
IIS dalijasi tvarkykle, Apache atidaro socket
IIS perduoda savo bindings tai pačiai branduolio tvarkyklei, kurią naudoja SSTP, ir ta tvarkyklė atskiria gaunamus ryšius pagal pagrindinio kompiuterio vardą ir URL priešdėlį, todėl abiem tarnyboms galima liepti norėti 443, nė vienai nenepavykstant. Apache ir nginx elgiasi priešingai: jie kviečia bind savo socket, o operacinė sistema atsisako, nes adresas jau užimtas. Nė vienoje konfigūracijoje nėra nieko blogo; skirtumas yra tame, kuris API valdo prievadą. Štai kodėl įjungus VPN viena svetainė viename pagrindiniame kompiuteryje nukrenta, o identiška svetainė kitame lieka nepaliesta.
Ši asimetrija nulemia taisymo formą. Jei IIS jau yra priekinės durys, susidūrimas tampa priešdėlių, bindings ir sertifikatų klausimu. Jei Apache yra priekinės durys, tai arba jis pasitraukia nuo 443, arba tai daro SSTP klausytojas, o kitas skyrius apima abu judesius.
Pasirinkite, kuri tarnyba pasilieka 443
Klausytojo prievadas gyvena vienoje registro reikšmėje, dešimtainiame DWORD po Sstpsvc parametrų raktu. Pakeiskite reikšmę, iš naujo paleiskite Routing and Remote Access ir iš klausymosi lentelės patvirtinkite, kad senas prievadas laisvas.
reg query "HKLM\SYSTEM\CurrentControlSet\Services\Sstpsvc\Parameters" /v ListenerPort
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Sstpsvc\Parameters" /v ListenerPort /t REG_DWORD /d 4443 /f
Restart-Service RemoteAccess
Pasirinkite prievadą, kurio niekas kitas pagrindiniame kompiuteryje nenori, ir įveskite jį dešimtaine: reg add išsaugo DWORD tiksliai taip, kaip parašyta, todėl šešioliktainiu sumanyta reikšmė atsiduria kaip kitas prievadas. Jei užklausa sako, kad reikšmės nėra, antroji eilutė ją sukuria. Restart-Service RemoteAccess atjungia visus, kurie prisijungę, o tai verta suplanuoti. Po to dar kartą paleiskite klausymosi patikrą, nes pasenęs įrašas 443 reiškia, kad tarnyba išlaikė seną registraciją.
Klausytojo perkėlimas turi kainą, kurios registro pakeitimas nerodo. Įprasti SSTP klientai renkasi 443, todėl kiekvienam kliento profiliui reikia naujo prievado, o srautas nustoja priminti web užklausą viskam, kas tikrina kelią. Tinkle, kuris toleruoja tik į HTTPS panašų srautą, tai pašalina didžiąją dalį priežasties, dėl kurios buvo pasirinktas SSTP. Maža, valdoma klientų populiacija tai sugeria; vieša ar BYOD naudotojų bazė ne.
Kitas judesys palieka 443 prie IIS ir traktuoja Apache kaip backend, į kurį tarpinis serveris persiunčia. Tai išlaiko SSTP numatytąją reikšmę ir palieka vieną prievado savininką, bet už persiųstas antraštes, kliento adresą, kurio programa nebemato tiesiogiai, ir backend, kuris turi kalbėti protokolu, kurį tarpinis serveris iš tikrųjų siunčia.
Įrodykite savininką, sertifikatą ir handshake iš eilės
Užbaigtas TCP ryšys įrodo, kad klausytojas egzistuoja, ir nieko daugiau, todėl prievadų skenavimas gali atrodyti sveikas, kol tunelis vis dar nepavyksta. Keturi etapai nepavyksta skirtingai, o taisymas, nukreiptas į etapą, kurio nesugriovėte, paprastai pagilina susidūrimą. Apdorokite juos iš eilės ir sustokite ten, kur atsakymas išsiskiria.
netstat -aon | findstr :443
certutil -store My
Get-WinEvent -LogName System -ProviderName RasSstp -MaxEvents 20
Pirmoji eilutė įvardija PID, laikantį 443, ir tai turėtų būti tarnyba, kurią ką tik sukonfigūravote. Antroji išvardija mašinos sertifikatus su jų subject, todėl vardas, nesutampantis su adresu kliento profilyje, iškart krinta į akis. Įvykių užklausa grąžina naujausius SSTP įrašus, o handshake, kuris niekada nepasiekia PPP autentifikacijos, palieka kitokį įrašą nei tas, kuris autentifikuojamas ir tada atmetamas. Paskutinis etapas matomas tik kliente, kur įrašas arba praneša prisijungta, arba įvardija PPP klaidą.
Kai vienas pagrindinis kompiuteris turi atlikti abu darbus, sąmoningai pasirinkite 443 savininką ir užrašykite pasirinkimą, nes kitaip kitas žmogus, įjungsiantis funkciją, vėl atras šį susidūrimą. Vaidmenų atskyrimas išlieka švaresnis atsakymas: viešas web serveris ir nuotolinės prieigos galinis taškas turi atskirus pataisų, sertifikatų ir paleidimo ciklus, ir tie ciklai susitinka pagal savo grafiką. Bet kuriuo atveju perdavimo pastaboje palikite klausymosi patikrą, registro kelią ir pasirinktą prievadą.