Tunelis ir uzcelts. Failu serveris atbild uz ping pēc adreses. Tad mount.cifs ar resursdatora nosaukumu kādu laiku stāv un ziņo, ka resursdators nav sasniedzams, un jūs sākat no jauna būvēt VPN profilu, kas nekad nav bijis problēma. Linux vidē nosaukumu atrisina glibc, pirms vēl eksistē jebkurš SMB pakete, un kārtība šajā resolverī var izbeigt meklēšanu, pirms DNS vispār tiek jautāts. Šis ir ceļš, ko eju, sākot ar komandu, kas neizdevās, nevis ar klientu.

Lasiet kļūdu īstajā vietā

Divi rīki iet dažādus ceļus uz to pašu nosaukumu, un to salīdzināšana maksā vienu komandu. getent iet caur konfigurēto nosaukumu pakalpojumu steku; host un dig jautā DNS tieši un ignorē šo steku. Ja tiešais vaicājums atgriež adresi un getent neatgriež neko, DNS serveris ir sasniedzams, un neizdodas jūsu resolvera konfigurācija.

getent hosts fileserver.corp.example
host fileserver.corp.example 10.61.0.1
getent -s dns hosts fileserver.corp.example

Trešā komanda ir izšķirošā: tā piespiež DNS avotu un izlaiž pārējo steku. Kad tā strādā, bet vienkāršais getent ne, jūs esat pierādījis, ka vaina ir kārtībā, nevis tunelī un ne serverī.

hosts rinda ir secība, kas apstājas agri

glibc resolveris lasa /etc/nsswitch.conf un iet cauri hosts: ierakstam no kreisās uz labo. Daudzas distribūcijas piegādā rindu, kurā multicast meklēšana ir pirmā ar pievienotu agras atgriešanās darbību. Darbība nav rotājums: kad mDNS atbild “not found”, [NOTFOUND=return] izbeidz visu meklēšanu, tāpēc uzņēmuma nosaukums nekad netiek nosūtīts resolverim, ko VPN uzspieda. Nekas to neieraksta žurnālā, jo netika nosūtīts neviens vaicājums, ko resolveris varētu noraidīt. Tāpēc montējums izskatās kā iekāries un pēc tam ziņo par nesasniedzamu resursdatoru.

cat /etc/nsswitch.conf | grep '^hosts:'
# illustrative repair: dns before the early-return action
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4

Pārvietojiet DNS pirms agras atgriešanās darbības, nevis dzēsiet mDNS, un mainiet to ar konfigurācijas pārvaldību. Ar roku veikts labojums izdzīvo līdz nākamajai image būvei, un tad tas pats pieteikums atnāk no citas mašīnas, kas labojumu neatceras.

Resolveris nav meklēšanas domēns

Atrisināšanai vajag arī to, lai nosaukums tiktu izmēģināts. Nekvalificēts nosaukums kā fileserver kļūst par fileserver.corp.example tikai tad, kad saskarnei, kas nes vaicājumu, ir pievienots meklēšanas domēns. VPN, kas uzspiež DNS serveri bez meklēšanas saraksta, rada ļoti konkrētu šķēlumu: pilnībā kvalificētais nosaukums tiek atrisināts, un katrs īsais nosaukums neizdodas.

Pirms profila rediģēšanas pārbaudiet abas formas, jo abas kļūdas rāda dažādos virzienos. systemd-resolved resursdatorā tuneļa saitei ir savi serveri un maršrutēšanas domēni, tāpēc lasiet saiti, nevis globālo failu.

resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain

Ja vaicājums tiek attiecināts uz saiti, kas nenes tuneli, maršrutēšanas domēns trūkst, lai gan DNS adrese ir. Tā ir politikas problēma resolved konfigurācijā, nevis maršrutēšanas problēma tunelī.

Konteineri nes savu atbildes kopiju

Konteiners, kas būvēts no vispārīga image, parasti piegādā fiksētu resolv.conf. Resolvera izmaiņas resursdatorā to nesasniedz, un arī meklēšanas domēns, tāpēc build uzdevums, kas montē koplietoto resursu pāri tunelim, neizdodas, kamēr tā pati komanda ārpus konteinera strādā. Dodiet konteineram savus DNS un meklēšanas iestatījumus compose failā vai run argumentos, ne tikai resursdatora profilā.

Pārbaudiet konteinera iekšpusē, pirms vainojat image. Divas komandas atveido visu diagnostiku dažu sekunžu laikā, un otrā pierāda, kurš resolveris patiešām atbildēja.

Tikai tad skatieties uz koplietoto resursu un filtru

Kad nosaukums ir atrisināts, atlikušās kļūdas ir parastas tīkla problēmas. SMB vajag TCP 445 līdz serverim, un darba grupas saraksta pārlūkošana ir atkarīga no nosaukumu pakalpojumiem, ko tunelis, visticamāk, nepārsūta. Kartējiet pēc resursdatora nosaukuma, nevis gaidiet, kamēr saraksts piepildās, un ļaujiet klientam pateikt, kuru posmu tas sasniedza. Noraidīts savienojums un kluss timeout arī ir vērts šķirt, jo pirmais parasti nozīmē, ka kaut kas atbildēja, bet otrais — ka nekas neatbildēja.

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

Atrisināta adrese ar noraidītu vai beigušos 445 portu ir ugunsmūra vai klausītāja problēma otrā pusē. Neatrisināts nosaukums ir resolvera problēma. Un montējums, kas autentificējas, bet atgriež atļauju kļūdas, nav ne viens, ne otrs, tāpēc neatveriet tīkla jautājumu no jauna, kad sesija jau ir nodibināta.

Turiet secinājumu tik šauru, cik pierādījumi. Kad adrese strādā, bet nosaukums ne, tunelis dara savu darbu, un labojums pieder resolvera kārtībai, meklēšanas domēnam vai paša konteinera konfigurācijai.

Saistītie raksti