Mae eich mownt CIFS yn methu dros VPN oherwydd trefn nsswitch
Mae’r gyfran yn ateb drwy gyfeiriad ac yn hongian drwy enw, felly mae’r chwiliad yn marw cyn i SMB ddechrau. Cymharwch getent â host, yna darllenwch y llinell hosts mewn trefn.
Mae’r twnnel i fyny. Mae’r gweinydd ffeiliau yn ateb ping drwy gyfeiriad. Yna mae mount.cifs gyda’r enw gwesteiwr yn eistedd yno am sbel ac yn adrodd bod y gwesteiwr yn anghyrraeddadwy, a byddwch yn dechrau ailadeiladu proffil VPN nad oedd byth yn broblem. Ar Linux mae glibc yn datrys yr enw cyn bod unrhyw becyn SMB yn bodoli, a gall y drefn yn y datryswr hwnnw ddod â’r chwiliad i ben cyn i DNS gael ei ofyn o gwbl. Dyma’r daith rwy’n ei gwneud, gan ddechrau o’r gorchymyn a fethodd yn hytrach nag o’r cleient.
Darllenwch y methiant yn y lle iawn
Mae dau offeryn yn mynd ar lwybrau gwahanol at yr un enw, ac mae eu cymharu yn costio un gorchymyn. Mae getent yn cerdded y stac gwasanaeth enwau a gyflunwyd; mae host a dig yn holi DNS yn uniongyrchol ac yn anwybyddu’r stac hwnnw. Os yw’r cwestiwn uniongyrchol yn dychwelyd cyfeiriad ac mae getent yn dychwelyd dim, mae’r gweinydd DNS yn gyrraeddadwy a’ch cyfluniad datryswr chi sy’n methu.
getent hosts fileserver.corp.example
host fileserver.corp.example 10.61.0.1
getent -s dns hosts fileserver.corp.example
Y trydydd gorchymyn yw’r penderfynydd: mae’n gorfodi’r ffynhonnell DNS ac yn sgipio gweddill y stac. Pan fydd hwnnw yn gweithio ac nad yw’r getent plaen yn gwneud, rydych wedi profi mai’r drefn sydd ar fai, nid y twnnel na’r gweinydd.
Mae’r llinell hosts yn ddilyniant sy’n stopio’n gynnar
Mae datryswr glibc yn darllen /etc/nsswitch.conf ac yn cerdded y cofnod hosts: o’r chwith i’r dde. Mae llawer o ddosbarthiadau yn cludo llinell lle daw chwiliad multicast yn gyntaf gyda gweithred dychwelyd cynnar ynghlwm. Nid addurn yw’r weithred: pan fydd mDNS yn ateb “not found”, mae [NOTFOUND=return] yn dod â’r chwiliad cyfan i ben, felly ni anfonir yr enw corfforaethol byth at y datryswr a wthiwyd gan y VPN. Nid oes dim yn cofnodi hyn, oherwydd ni anfonwyd unrhyw gwestiwn i’r datryswr ei wrthod. Dyna pam mae’r mownt yn ymddangos fel pe bai’n hongian ac yna’n adrodd gwesteiwr anghyrraeddadwy.
cat /etc/nsswitch.conf | grep '^hosts:'
# illustrative repair: dns before the early-return action
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
Symudwch DNS o flaen y weithred dychwelyd cynnar yn hytrach na dileu mDNS, a’i newid drwy reoli cyfluniad. Mae golygiad â llaw yn para tan y build delwedd nesaf, ac yna daw’r un tocyn o beiriant arall nad yw’n cofio’r atgyweiriad.
Nid yw datryswr yn barth chwilio
Mae angen i’r enw gael ei geisio hefyd. Dim ond pan fydd parth chwilio ynghlwm wrth y rhyngwyneb sy’n cario’r cwestiwn y mae enw heb gymhwyso fel fileserver yn dod yn fileserver.corp.example. Mae VPN sy’n gwthio gweinydd DNS heb restr chwilio yn cynhyrchu rhaniad penodol iawn: mae’r enw llawn yn datrys ac mae pob enw byr yn methu.
Profwch y ddwy ffurf cyn golygu’r proffil, oherwydd mae’r ddau fethiant yn pwyntio i gyfeiriadau gwahanol. Ar westeiwr systemd-resolved mae gan gyswllt y twnnel ei weinyddwyr a’i barthau llwybro ei hun, felly darllenwch y cyswllt yn hytrach na’r ffeil fyd-eang.
resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain
Os yw’r cwestiwn yn cael ei briodoli i gyswllt nad yw’n cario’r twnnel, mae’r parth llwybro ar goll er bod y cyfeiriad DNS yn bresennol. Problem polisi yng nghyfluniad resolved yw hon, nid problem llwybro yn y twnnel.
Mae cynwysyddion yn cario eu copi eu hunain o’r ateb
Mae cynhwysydd a adeiladwyd o ddelwedd gyffredinol fel arfer yn cludo resolv.conf sefydlog. Nid yw newidiadau datryswr a wneir ar y gwesteiwr yn cyrraedd, ac felly hefyd y parth chwilio, felly mae swydd build sy’n mowntio cyfran dros y twnnel yn methu tra bo’r un gorchymyn yn gweithio y tu allan i’r cynhwysydd. Rhowch osodiadau DNS a chwilio ei hun i’r cynhwysydd yn y ffeil compose neu yn y dadleuon rhedeg, nid yn y proffil gwesteiwr yn unig.
Gwiriwch y tu mewn i’r cynhwysydd cyn beio’r ddelwedd. Mae dau orchymyn yn atgynhyrchu’r holl ddiagnosis mewn ychydig eiliadau, ac mae’r ail yn profi pa ddatryswr a atebodd mewn gwirionedd.
Dim ond yna edrychwch ar y gyfran a’r hidlydd
Unwaith y bydd yr enw yn datrys, mae’r methiannau sy’n weddill yn rhai rhwydwaith cyffredin. Mae SMB angen TCP 445 i’r gweinydd, ac mae pori rhestr gweithgor yn dibynnu ar wasanaethau enwau nad yw’r twnnel yn eu hanfon ymlaen yn ôl pob tebyg. Mapwch drwy enw gwesteiwr yn hytrach nag aros i restr lenwi, a gadewch i’r cleient ddweud wrthych pa gam gyrhaeddodd. Mae gwerth hefyd mewn gwahanu cysylltiad a wrthodwyd a thawelwch amseru, oherwydd mae’r cyntaf fel arfer yn golygu i rywbeth ateb a’r ail yn golygu na atebodd dim.
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
Mae cyfeiriad sydd wedi datrys gyda phorth 445 wedi’i wrthod neu wedi amseru allan yn broblem mur tan neu wrandawr yr ochr draw. Cyfeiriad heb ddatrys yw problem y datryswr. Ac nid yw mownt sy’n dilysu ond yn dychwelyd gwallau caniatâd yn y naill na’r llall, felly peidiwch ag ailagor y cwestiwn rhwydwaith unwaith y bydd y sesiwn wedi’i sefydlu.
Cadwch y casgliad mor gul â’r dystiolaeth. Pan fydd y cyfeiriad yn gweithio ac nad yw’r enw, mae’r twnnel yn gwneud ei waith ac mae’r atgyweiriad yn perthyn i drefn y datryswr, y parth chwilio neu gyfluniad y cynhwysydd ei hun.