Tailscale MagicDNS funcționează, dar nslookup eșuează pe macOS
Aplicațiile macOS rezolvă prin resolverul sistemului; nslookup citește un fișier static. Testați același nume tailnet pe ambele căi înainte de a schimba orice setare DNS.
Pe un Mac, ping rezolvă un nume de mașină tailnet în timp ce nslookup returnează o eroare, și ambele comenzi spun adevărul. Aplicațiile rezolvă prin resolverul sistemului, pe care Tailscale îl configurează pentru fiecare interfață, în timp ce nslookup și host citesc un fișier static pe care MagicDNS nu îl atinge niciodată. Cele două căi pot diferi fără ca vreun pachet să se piardă. Înainte de a schimba orice setare DNS, stabiliți pe ce cale a mers aplicația dumneavoastră care eșuează.
Două căi de rezolvare, două răspunsuri diferite
Traficul aplicațiilor pe macOS trece prin resolverul sistemului, iar intrările de resolver limitate pe interfață decid ce server răspunde pentru ce domeniu. Tailscale instalează acolo intrarea sa MagicDNS, de aceea Safari și ssh găsesc nume tailnet. nslookup, host și dig citesc în schimb /etc/resolv.conf sau iau un server din linia de comandă, iar acel fișier numește de obicei încă routerul sau un server de birou. Un nume tailnet trimis acelui fișier nu are niciun răspuns autoritativ care să îl aștepte, așa că instrumentul raportează o eroare în timp ce calea sistemului reușește.
Niciunul dintre cele două instrumente nu se comportă greșit. Ele întreabă servere diferite, și doar unul dintre acele servere știe despre tailnet-ul dumneavoastră.
Testați același nume prin calea sistemului
Folosiți apelul de căutare al sistemului ca prim test, apoi comparați-l cu o interogare direcționată direct către resolverul MagicDNS. Păstrați ortografia identică în ambele, inclusiv domeniul tailnet, deoarece un nume scurt și un nume complet calificat sunt întrebări diferite cu răspunsuri diferite.
dscacheutil -q host -a name nas-01.tailnet-a1b2.ts.net
scutil --dns
dig @100.100.100.100 nas-01.tailnet-a1b2.ts.net
Cele trei ieșiri răspund la trei întrebări: ce returnează sistemul, ce resolvere sunt configurate pentru ce domenii și ce știe MagicDNS însuși. Un nume prezent în al doilea și al treilea dar absent din primul indică o configurație locală și nu tailnet-ul.
Odată ce numele se rezolvă, testați serviciul
Un răspuns DNS corect dovedește doar că un nume corespunde unei adrese. Serviciul din spate poate fi oprit, portul poate fi filtrat de o regulă de acces, iar un certificat poate numi un alt host decât cel tastat.
nc -vz nas-01.tailnet-a1b2.ts.net 445
ping -c 3 nas-01.tailnet-a1b2.ts.net
Păstrați textul original al erorii, deoarece un avertisment de certificat, un timeout de conexiune și un nume negăsit duc fiecare în altă parte. Schimbarea serverelor de nume repară al treilea și irosește o după-amiază pe primele două.
MagicDNS nu înlocuiește DNS-ul de birou
Un nume dintr-o zonă de birou nu este un nume de dispozitiv tailnet chiar dacă același client poate ajunge la ambele. Când destinația se află în spatele unui router de subrețea, clientul are nevoie de split DNS pentru acea zonă, îndreptat către resolverul intern, ceea ce este o setare diferită de MagicDNS și este documentată alături de aceasta.
Și domeniile de căutare contează. Unui nume scurt necalificat i se adaugă pe rând fiecare sufix configurat, așa că un laptop care s-a alăturat recent altei rețele poate rezolva printr-un sufix învechit. Verificați ce sufix a fost aplicat înainte de a declara zona defectă.
Când ambele căi eșuează, decid faptele despre tailnet
Dacă atât căutarea sistemului, cât și interogarea directă eșuează pentru un dispozitiv despre care credeți că există, problema este în amonte de resolverul Mac-ului.
Confirmați numele mașinii și domeniul tailnet în consola de administrare, confirmați că dispozitivul este online și aprobat, și confirmați că setările DNS ale clientului nu au fost dezactivate local. Un dispozitiv offline își păstrează numele și pur și simplu nu are nicio adresă de returnat.
Apoi alegeți pe baza dovezilor. Un nume care se rezolvă pe calea sistemului și eșuează în nslookup este o diferență de cale a instrumentului; un nume care se rezolvă în timp ce serviciul refuză este o problemă de acces sau de certificat; un nume care nu se rezolvă nicăieri este o problemă de tailnet sau de configurare DNS. Trei proprietari, trei corecturi, și documentația MagicDNS acoperă specificul macOS al primului caz.