Benoemde SQL Server-eksimplaar oer VPN: ûntdekking, net poarte 1433
In benoemd eksimplaar freget SQL Browser om in poarte foar't it ferbynt. As de namme oer de VPN mislearret mar tcp:host,port wurket, is ûntdekking it gat.
De measte minsken behannelje in SQL Server-hostnamme as in folslein adres, en in VPN as eat dat wol of net tastien is. Yn de praktyk lit in benoemd eksimplaar de klant nei DNS in twadde syk dwaan, en krekt dy syk is it part dat in tunnel it faakst brekt. In eksplisyt einpunt giet deromhinne, dêrom kin tcp:host,port wurkje wylst host\INSTANCE ferrint. It ferskil is tusken de tsjinst fine en tastimming krije om him te brûken.
De myte: ien hostnamme betsjut ien poarte
De hostnamme lost op nei in adres, en dêr einiget syn wurk. In benoemd eksimplaar foeget in eksimplaarnamme ta dy't de server nei in TCP-poarte oersette moat, en de klant kin dy net riede. Poarte 1433 is de standert foar in standert eksimplaar, net in eigenskip fan elk eksimplaar op de masine. As men beide as itselde ding behannelet, ûntstiet it klassike symptoom: ping wurket, DNS wurket, de skan fan 1433 lit neat sjen, en de konklúzje is dat it netwurk SQL blokkearet.
In twadde oanname mislearret op deselde wize: dat it iepenjen fan TCP 1433 genôch is. As it eksimplaar earne oars lústert, bewiist in iepen 1433 allinnich dat dêr eat oars is. De poarte moat by de lústerer passe, en dat de lústerer in konfiguraasjedetail oan serverkant is, dat moat men freegje ynstee fan it te mienjen.
Wat de klant eins docht mei in benoemd eksimplaar
Nei it oplossen fan de host stjoert de klant in ûntdekkingsfersyk nei SQL Server Browser oer UDP 1434 en freget hokker poarte it benoemde eksimplaar brûkt. De browser-tsjinst antwurdet út it eigen register fan de server, en dêrnei iepenet de klant in TCP-ferbining nei dy poarte. Twa protokollen en twa poarten binne belutsen foar't der sels in oanmelding besocht wurdt.
nslookup sqlhost.corp.example
nc -vzu sqlhost.corp.example 1434
Get-Service -Name SQLBrowser
Dêrom jout in blokkade fan allinnich UDP in tiidferrin dat op in deade host liket. As de browser-tsjinst stoppe of útskeakele is, bliuwt it ûntdekkingsfersyk ûnbeantwurde, ek al rint de databasemotor en is syn TCP-poarte iepen. As it eksimplaar mei in statyske poarte konfigurearre is, freget de klant dochs, útsein as it einpunt him direkt jûn is. Elk fan dy flaters liket itselde yn 'e flatermelding fan 'e applikaasje, en se hawwe ferskate reparaasjes nedich.
De browser-tsjinst is in gemak foar ûntdekking, net de database. It stopjen derfan stoppet de motor net, en it starten derfan iepenet de TCP-poarte fan it eksimplaar net.
Wêrom't it eksplisite einpunt wurket as de namme dat net docht
In eksplisyt einpunt hellet de syk út 'e folchoarder: de klant ferbynt streekrjocht mei it adres en de poarte dy't jo neamden. Dat is earst in diagnoaze, net automatysk in bliuwende oplossing, want de poarte kin feroarje as it eksimplaar letter nei in dynamyske omset wurdt. Ferlykje de beide foarmen mei deselde klant en deselde account foar't jo konklúzjes lûke.
sqlcmd -S "tcp:sqlhost.corp.example,51433" -U app_login -Q "SELECT @@SERVERNAME"
Test-NetConnection sqlhost.corp.example -Port 51433
As de eksplisite foarm slagget en de benoemde foarm mislearret, is ûntdekking it gat, en jo kinne kieze hoe't jo it tinke: UDP 1434 troch de tunnel tastean, of de behearder freegje in statyske poarte fêst te setten en it einpunt te dokumintearjen. Beide binne bewuste besluten mei ferskate ûnderhâldskosten. Elke poarte yn it berik iepenje is gjin fan beide, en it is de opsje dy't oan 'e ein fan in lange dei foarsteld wurdt. Skriuw de kar op wêr't de ferbiningsstrengen libje.
As gjin fan beide foarmen wurket, sit it probleem boppe de ûntdekking. Kontrolearje de lústerer, de rûte en de tagongsregel foar de poarte dy't it eksimplaar eins brûkt foar't jo de browser-tsjinst de skuld jouwe.
Nei ûntdekking: ferifikaasje en identiteit binne apart
In oanmeldingsflater is in oar barren as in tiidferrin, en de VPN-identiteit wurdt net in SQL-oanmelding troch de tunnel. Sadree't de klant de juste poarte berikt, past de databasemotor syn eigen ferifikaasje en tastimmingen ta. It mingjen fan de twa stadia yn ien kaartsje is hoe't in ûntdekkingsprobleem by it ferkearde team telâne komt. Lês it flatersnûmer foar't jo eat feroarje.
Hâld de dokumintearre hostnamme as de stjoerder it sertifikaat fan de server falidearret, want ferbinen fia in numerysk adres kin dy kontrôle feroarje ynstee fan it oarspronklike probleem op te lossen. Resinte Microsoft-stjoerders fersiferje standert, sadat in nammemiskien as sertifikaatflater opkomt nei in suksesfolle TCP-ferbining. Dat is foarútgong, net in nije flater.
De myte dy't men ôfskaffe moat, is dat in SQL Server-hostnamme in folslein adres is. It is in host plus, foar in benoemd eksimplaar, in syk dy't de tunnel miskien net draacht. Neam de poarte, neam it ûntdekkingspaad, en de folgjende flater sil jo fertelle hokker laach te reparearjen.