CIFS montaža pada preko VPN-a zbog reda u nsswitch
Dijeljeni resurs odgovara po adresi, a po imenu visi, pa pretraga umre prije nego SMB počne. Uporedite getent sa host, zatim pročitajte hosts liniju po redu.
Tunel je aktivan. Datotečni server odgovara na ping po adresi. Zatim mount.cifs s imenom hosta stoji neko vrijeme i javi da je host nedostupan, pa počnete obnavljati VPN profil koji nikada nije bio problem. Na Linuxu ime razrješava glibc prije nego što ikakav SMB paket postoji, a red u tom resolveru može prekinuti pretragu prije nego što se DNS uopće pita. Ovo je put koji prolazim, počevši od komande koja nije uspjela, a ne od klijenta.
Pročitajte neuspjeh na pravom mjestu
Dva alata idu različitim putevima do istog imena, a njihovo poređenje košta jednu komandu. getent prolazi kroz konfigurisani stek servisa imena; host i dig pitaju DNS direktno i ignorišu taj stek. Ako direktni upit vrati adresu a getent ne vrati ništa, DNS server je dostupan i neuspjeh je u vašoj konfiguraciji resolvera.
getent hosts fileserver.corp.example
host fileserver.corp.example 10.61.0.1
getent -s dns hosts fileserver.corp.example
Treća komanda je odlučujuća: prisiljava DNS izvor i preskače ostatak steka. Kada ona radi a obični getent ne, dokazali ste da je kriv red, a ne tunel i ne server.
hosts linija je niz koji se zaustavlja rano
glibc resolver čita /etc/nsswitch.conf i prolazi kroz unos hosts: slijeva nadesno. Mnoge distribucije isporučuju liniju u kojoj multicast pretraga dolazi prva s pridruženom radnjom ranog povratka. Radnja nije ukras: kada mDNS odgovori “not found”, [NOTFOUND=return] završava cijelu pretragu, pa se korporativno ime nikada ne pošalje resolveru koji je VPN nametnuo. Ništa to ne bilježi, jer nije poslan nijedan upit koji bi resolver odbio. Zato montaža izgleda kao da visi i zatim javi da je host nedostupan.
cat /etc/nsswitch.conf | grep '^hosts:'
# illustrative repair: dns before the early-return action
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
Premjestite DNS ispred radnje ranog povratka umjesto da brišete mDNS, i mijenjajte to kroz upravljanje konfiguracijom. Ručna izmjena živi do sljedeće izgradnje slike, a onda isti tiket stigne s druge mašine koja ne pamti popravku.
Resolver nije domena pretrage
Razrješavanje traži i da ime bude probano. Nekvalifikovano ime poput fileserver postaje fileserver.corp.example samo kada je domena pretrage pridružena interfejsu koji nosi upit. VPN koji nameće DNS server bez liste pretrage proizvodi vrlo specifičnu podjelu: potpuno kvalifikovano ime se razrješava a svako kratko ime pada.
Testirajte oba oblika prije uređivanja profila, jer dva neuspjeha pokazuju u različitim smjerovima. Na hostu sa systemd-resolved link tunela ima svoje servere i domene rutiranja, pa čitajte link, a ne globalnu datoteku.
resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain
Ako se upit pripisuje linku koji ne nosi tunel, domena rutiranja nedostaje iako je DNS adresa prisutna. To je problem politike u resolved konfiguraciji, a ne problem rutiranja u tunelu.
Kontejneri nose vlastitu kopiju odgovora
Kontejner izgrađen od generičke slike obično isporučuje fiksni resolv.conf. Promjene resolvera na hostu ne stižu do njega, kao ni domena pretrage, pa build posao koji montira dijeljeni resurs preko tunela pada, dok ista komanda izvan kontejnera radi. Dajte kontejneru vlastita DNS i postavke pretrage u compose datoteci ili u run argumentima, a ne samo u profilu hosta.
Provjerite unutar kontejnera prije nego okrivite sliku. Dvije komande reprodukuju cijelu dijagnozu u nekoliko sekundi, a druga dokazuje koji je resolver zaista odgovorio.
Tek tada pogledajte dijeljeni resurs i filter
Kada se ime razriješi, preostali neuspjesi su obični mrežni. SMB traži TCP 445 do servera, a pregled liste radne grupe zavisi od servisa imena koje tunel vjerovatno ne prosljeđuje. Mapirajte po imenu hosta umjesto da čekate da se lista napuni, i pustite klijenta da vam kaže do koje je faze stigao. Odbijena veza i tihi timeout takođe zaslužuju razdvajanje, jer prvo obično znači da je nešto odgovorilo, a drugo da nije ništa.
getent hosts fileserver.corp.example
nc -vz fileserver.corp.example 445
mount -t cifs //fileserver.corp.example/share /mnt/share \
-o vers=3.1.1,username=svc_mount,uid=1000
Razriješena adresa s odbijenim ili isteklim portom 445 je problem firewall-a ili listenera na drugoj strani. Nerazriješeno ime je problem resolvera. A montaža koja se autentificira ali vraća greške dozvola nije ni jedno ni drugo, pa ne otvarajte mrežno pitanje ponovo kada je sesija uspostavljena.
Držite zaključak uskim kao dokaze. Kada adresa radi a ime ne, tunel radi svoj posao i popravka pripada redu resolvera, domeni pretrage ili vlastitoj konfiguraciji kontejnera.