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.

Povezani članci