Instanca e emërtuar e SQL Server përmes VPN: zbulimi, jo porta 1433
Një instancë e emërtuar pyet SQL Browser për një port përpara se të lidhet. Nëse emri dështon përmes VPN, por tcp:host,port funksionon, zbulimi është boshllëku.
Shumica e njerëzve e trajtojnë emrin e hostit të SQL Server si një adresë të plotë, dhe VPN-në si diçka që ose lejohet ose jo. Në praktikë një instancë e emërtuar e detyron klientin të bëjë një kërkim të dytë pas DNS, dhe pikërisht atë kërkim tuneli e thyen më shpesh. Një pikë fundore e qartë e shmang atë, prandaj tcp:host,port mund të funksionojë ndërsa host\INSTANCE skadon. Diferenca është midis gjetjes së shërbimit dhe marrjes së lejes për ta përdorur.
Miti: një emër hosti do të thotë një port
Emri i hostit zgjidhet në një adresë, dhe aty mbaron puna e tij. Një instancë e emërtuar shton një emër instance që serveri duhet ta përkthejë në një port TCP, dhe klienti nuk mund ta hamendësojë. Porta 1433 është parazgjedhja për një instancë të parazgjedhur, jo një veti e çdo instance në makinë. Trajtimi i të dyjave si e njëjta gjë prodhon simptomën klasike: ping funksionon, DNS funksionon, skanimi i 1433 nuk tregon asgjë, dhe përfundimi është se rrjeti bllokon SQL.
Një supozim i dytë dështon në të njëjtën mënyrë: se hapja e TCP 1433 mjafton. Nëse instanca dëgjon diku tjetër, një 1433 e hapur provon vetëm se atje është diçka tjetër. Porta duhet të përputhet me dëgjuesin, dhe se dëgjuesi është një detaj konfigurimi në anën e serverit kjo duhet pyetur në vend që të supozohet.
Çfarë bën në të vërtetë klienti me një instancë të emërtuar
Pas zgjidhjes së hostit, klienti dërgon një kërkesë zbulimi te SQL Server Browser përmes UDP 1434 dhe pyet se cilën portë përdor instanca e emërtuar. Shërbimi i shfletuesit përgjigjet nga regjistri i vetë serverit, dhe më pas klienti hap një lidhje TCP me atë portë. Dy protokolle dhe dy porta përfshihen përpara se të provohet edhe një hyrje.
nslookup sqlhost.corp.example
nc -vzu sqlhost.corp.example 1434
Get-Service -Name SQLBrowser
Prandaj një bllokim vetëm i UDP prodhon një skadim që duket si host i vdekur. Nëse shërbimi i shfletuesit është ndaluar ose i çaktivizuar, kërkesa e zbulimit mbetet pa përgjigje edhe pse motori i bazës së të dhënave punon dhe porta e tij TCP është e hapur. Nëse instanca është konfiguruar me një portë statike, klienti prapë pyet, përveç nëse i është dhënë pika fundore drejtpërdrejt. Secili prej këtyre dështimeve duket njësoj në mesazhin e gabimit të aplikacionit, dhe atyre u duhen rregullime të ndryshme.
Shërbimi i shfletuesit është një komoditet zbulimi, jo baza e të dhënave. Ndalimi i tij nuk e ndal motorin, dhe nisja e tij nuk hap portën TCP të instancës.
Pse pika fundore e qartë funksionon kur emri nuk funksionon
Një pikë fundore e qartë e heq kërkimin nga sekuenca: klienti lidhet drejtpërdrejt me adresën dhe portën që përmendët. Kjo është së pari një diagnozë, jo automatikisht një rregullim i përhershëm, sepse porta mund të ndryshojë nëse instanca rikonfigurohet më vonë në një dinamike. Krahasoni të dyja format me të njëjtin klient dhe të njëjtin llogari përpara se të nxirrni përfundime.
sqlcmd -S "tcp:sqlhost.corp.example,51433" -U app_login -Q "SELECT @@SERVERNAME"
Test-NetConnection sqlhost.corp.example -Port 51433
Nëse forma e qartë funksionon dhe forma e emërtuar dështon, zbulimi është boshllëku, dhe ju mund të zgjidhni si ta mbyllni: lejoni UDP 1434 përmes tunelit, ose kërkoni nga administratori të fiksojë një portë statike dhe të dokumentojë pikën fundore. Të dyja janë vendime të qëllimshme me kosto të ndryshme mirëmbajtjeje. Hapja e çdo porte në interval nuk është asnjëra prej tyre, dhe është opsioni që zakonisht propozohet në fund të një dite të gjatë. Regjistroni zgjedhjen atje ku jetojnë vargjet e lidhjes.
Nëse asnjëra formë nuk funksionon, problemi është mbi zbulimin. Kontrolloni dëgjuesin, rrugën dhe rregullin e aksesit për portën që instanca përdor në të vërtetë përpara se të fajësoni shërbimin e shfletuesit.
Pas zbulimit: vërtetimi dhe identiteti janë të ndara
Një dështim hyrjeje është një ngjarje e ndryshme nga një skadim, dhe identiteti VPN nuk bëhet hyrje SQL për shkak të tunelit. Pasi klienti arrin portën e duhur, motori i bazës së të dhënave zbaton vërtetimin dhe lejet e veta. Përzierja e dy fazave në një tiketë të vetme është mënyra se si një problem zbulimi i caktohet ekipit të gabuar. Lexoni numrin e gabimit përpara se të ndryshoni çdo gjë.
Mbani emrin e hostit të dokumentuar nëse drejtuesi vërteton certifikatën e serverit, sepse lidhja me adresë numerike mund të ndryshojë atë kontroll në vend që të zgjidhë problemin origjinal. Drejtuesit e fundit të Microsoft kriptojnë si parazgjedhje, kështu që një mospërputhje emri shfaqet si gabim certifikate pas një lidhjeje TCP të suksesshme. Ky është përparim, jo një dështim i ri.
Miti që duhet braktisur është se emri i hostit të SQL Server është një adresë e plotë. Është një host plus, për një instancë të emërtuar, një kërkim që tuneli mund të mos e mbajë. Emërtoni portën, emërtoni rrugën e zbulimit, dhe dështimi tjetër do t'ju thotë cilin shtresë të rregulloni.