Тунел је активан. Датотечни сервер одговара на ping по адреси. Затим mount.cifs са именом хоста стоји неко време и јави да је хост недоступан, па почнете да обнављате VPN профил који никада није био проблем. На Linux-у име разрешава glibc пре него што икакав SMB пакет постоји, а ред у том резолверу може прекинути претрагу пре него што се DNS уопште пита. Ово је пут којим пролазим, почевши од команде која није успела, а не од клијента.

Прочитајте неуспех на правом месту

Два алата иду различитим путевима до истог имена, а њихово поређење кошта једну команду. getent пролази кроз конфигурисани стек сервиса имена; host и dig питају DNS директно и игноришу тај стек. Ако директан упит врати адресу, а getent не врати ништа, DNS сервер је доступан и неуспех је у вашој конфигурацији резолвера.

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

Трећа команда је одлучујућа: присиљава DNS извор и прескаче остатак стека. Када она ради, а обични getent не, доказали сте да је крив ред, а не тунел и не сервер.

hosts линија је низ који се зауставља рано

glibc резолвер чита /etc/nsswitch.conf и пролази кроз унос hosts: слева надесно. Многе дистрибуције испоручују линију у којој multicast претрага долази прва са придруженом радњом раног повратка. Радња није украс: када mDNS одговори “not found”, [NOTFOUND=return] завршава целу претрагу, па се корпоративно име никада не пошаље резолверу који је VPN наметнуо. Ништа то не бележи, јер није послат ниједан упит који би резолвер одбио. Зато монтирање изгледа као да виси и затим јави да је хост недоступан.

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

Преместите DNS испред радње раног повратка уместо да бришете mDNS, и мењајте то кроз управљање конфигурацијом. Ручна измена живи до следеће изградње слике, а онда исти тикет стигне са друге машине која не памти поправку.

Резолвер није домен претраге

Разрешавање тражи и да име буде пробано. Неквалификовано име као fileserver постаје fileserver.corp.example само када је домен претраге придружен интерфејсу који носи упит. VPN који намеће DNS сервер без листе претраге производи врло специфичну поделу: потпуно квалификовано име се разрешава, а свако кратко име пада.

Тестирајте оба облика пре уређивања профила, јер два неуспеха показују у различитим смеровима. На хосту са systemd-resolved веза тунела има своје сервере и домене рутирања, па читајте везу, а не глобалну датотеку.

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

Ако се упит приписује вези која не носи тунел, домен рутирања недостаје иако је DNS адреса присутна. То је проблем политике у resolved конфигурацији, а не проблем рутирања у тунелу.

Контејнери носе сопствену копију одговора

Контејнер изграђен од опште слике обично испоручује фиксни resolv.conf. Промене резолвера на хосту не стижу до њега, као ни домен претраге, па build посао који монтира дељени ресурс преко тунела пада, док иста команда ван контејнера ради. Дајте контејнеру сопствена DNS и подешавања претраге у compose датотеци или у run аргументима, а не само у профилу хоста.

Проверите унутар контејнера пре него што окривите слику. Две команде репродукују целу дијагнозу за неколико секунди, а друга доказује који је резолвер заиста одговорио.

Тек тада погледајте дељени ресурс и филтер

Када се име разреши, преостали неуспеси су обични мрежни. SMB тражи TCP 445 до сервера, а преглед листе радне групе зависи од сервиса имена које тунел вероватно не прослеђује. Мапирајте по имену хоста уместо да чекате да се листа напуни, и пустите клијента да вам каже до које фазе је стигао. Одбијена веза и тихи timeout такође заслужују раздвајање, јер прво обично значи да је нешто одговорило, а друго да није ништа.

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

Разрешена адреса са одбијеним или истеклим портом 445 је проблем firewall-а или listener-а на другој страни. Неразрешено име је проблем резолвера. А монтирање које се аутентификује али враћа грешке дозвола није ни једно ни друго, па не отварајте мрежно питање поново када је сесија успостављена.

Држите закључак уским као докази. Када адреса ради а име не, тунел ради свој посао и поправка припада реду резолвера, домену претраге или сопственој конфигурацији контејнера.

Повезани чланци