nsswitch අනුපිළිවෙල නිසා ඔබේ CIFS mount එක VPN හරහා අසාර්ථක වේ
share එක ලිපිනයෙන් පිළිතුරු දෙයි, නමින් එල්ලී තිබේ, එබැවින් SMB ආරම්භ වීමට පෙර සෙවීම මිය යයි. getent host සමඟ සසඳන්න, පසුව hosts පේළිය අනුපිළිවෙලින් කියවන්න.
tunnel එක ක්රියාත්මකයි. ගොනු සේවාදායකය ping එකට ලිපිනයෙන් පිළිතුරු දෙයි. පසුව mount.cifs hostname සමඟ මොහොතක් එහි රැඳී, host එකට ළඟා විය නොහැකි බව වාර්තා කරයි, ඔබ කිසිදා ගැටලුවක් නොවූ VPN පැතිකඩක් නැවත තැනීමට පටන් ගනී. Linux හි කිසිදු SMB පැකට්ටුවක් පවතින්නට පෙර glibc නම විසඳයි, එම resolver හි අනුපිළිවෙල DNS අසන්නට පෙර සෙවීම අවසන් කළ හැකිය. මෙය මා ගමන් කරන මාර්ගයයි, සේවාලාභියාගෙන් නොව, අසාර්ථක වූ විධානයෙන් ආරම්භ වේ.
අසාර්ථකත්වය නිවැරදි තැන කියවන්න
මෙවලම් දෙකක් එකම නමට වෙනස් මාර්ග ගනී, ඒවා සැසඳීමට එක් විධානයක් පිරිවැය වේ. getent වින්යාස කළ නම් සේවා තට්ටුව හරහා යයි; host සහ dig DNS සෘජුවම අසා එම තට්ටුව නොසලකයි. සෘජු විමසුම ලිපිනයක් ලබා දී getent කිසිවක් ලබා නොදෙන්නේ නම්, DNS සේවාදායකයට ළඟා විය හැකි අතර අසාර්ථක වන්නේ ඔබේ resolver වින්යාසයයි.
getent hosts fileserver.corp.example
host fileserver.corp.example 10.61.0.1
getent -s dns hosts fileserver.corp.example
තුන්වන විධානය තීරකයයි: එය DNS මූලාශ්රය බල කර ඉතිරි තට්ටුව මග හරියි. එය ක්රියා කර සාමාන්ය getent ක්රියා නොකරන්නේ නම්, වැරැද්ද අනුපිළිවෙලේ බව, tunnel එකේ නොව සේවාදායකයේ නොව බව ඔබ ඔප්පු කළා.
hosts පේළිය වහා නතර වන අනුක්රමයකි
glibc resolver /etc/nsswitch.conf කියවා hosts: සටහන වමේ සිට දකුණට ගමන් කරයි. බොහෝ බෙදාහැරීම් multicast සෙවීම මුලින්ම පැමිණ, ඊට කලින් ආපසු යාමේ ක්රියාව සම්බන්ධ කළ පේළියක් ලබා දෙයි. එම ක්රියාව සැරසිල්ලක් නොවේ: mDNS “not found” ලෙස පිළිතුරු දෙන විට, [NOTFOUND=return] මුළු සෙවීමම අවසන් කරයි, එබැවින් ආයතනික නම VPN එක විසින් බල කළ resolver වෙත කිසිදා යවන්නේ නැත. කිසිවක් එය ලොග් නොකරයි, මන්ද resolver එකට ප්රතික්ෂේප කළ හැකි විමසුමක් කිසිවිටෙක යවා නැත. එබැවින් mount එක එල්ලී ඇති ලෙස පෙනී පසුව host එකට ළඟා විය නොහැකි බව වාර්තා කරයි.
cat /etc/nsswitch.conf | grep '^hosts:'
# illustrative repair: dns before the early-return action
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
mDNS මකා දැමීම වෙනුවට DNS කලින් ආපසු යාමේ ක්රියාවට ඉදිරියෙන් තබන්න, සහ එය වින්යාස කළමනාකරණය හරහා වෙනස් කරන්න. අතින් කළ නිවැරදි කිරීම ඊළඟ image ගොඩනැගීම දක්වා පවතී, පසුව එම ටිකට්පතම නිවැරදි කිරීම මතක නැති තවත් යන්ත්රයකින් පැමිණේ.
resolver යනු සෙවුම් වසමක් නොවේ
විසඳීමට නම උත්සාහ කිරීමද අවශ්යය. fileserver වැනි අසම්පූර්ණ නමක් විමසුම රැගෙන යන අතුරුමුහුණතට සෙවුම් වසමක් සම්බන්ධ වූ විට පමණක් fileserver.corp.example බවට පත් වේ. සෙවුම් ලැයිස්තුවක් නොමැතිව DNS සේවාදායකයක් බල කරන VPN ඉතා නිශ්චිත බෙදීමක් ඇති කරයි: සම්පූර්ණ සුදුසුකම් ලත් නම විසඳෙන අතර සෑම කෙටි නමක්ම අසාර්ථක වේ.
පැතිකඩ සංස්කරණය කිරීමට පෙර ආකෘති දෙකම පරීක්ෂා කරන්න, මන්ද අසාර්ථකත්ව දෙක වෙනස් දිශාවන්ට යොමු කරයි. systemd-resolved host එකක tunnel සබැඳියට තමන්ගේම සේවාදායක සහ මාර්ගගත කිරීමේ වසම් ඇත, එබැවින් ගෝලීය ගොනුව නොව සබැඳිය කියවන්න.
resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain
විමසුම tunnel එක රැගෙන නොයන සබැඳියකට ආරෝපණය වන්නේ නම්, DNS ලිපිනය තිබියදීත් මාර්ගගත කිරීමේ වසම අස්ථානගත වේ. එය resolved වින්යාසයේ ප්රතිපත්ති ගැටලුවක්, tunnel එකේ මාර්ගගත කිරීමේ ගැටලුවක් නොවේ.
කන්ටේනර් තමන්ගේම පිළිතුරු පිටපතක් රැගෙන යයි
සාමාන්ය image එකකින් තැනූ කන්ටේනරයක් සාමාන්යයෙන් ස්ථිර resolv.conf එකක් ගෙන එයි. host එකේ කළ resolver වෙනස්කම් එයට ළඟා නොවේ, සෙවුම් වසමද ළඟා නොවේ, එබැවින් tunnel හරහා share එකක් mount කරන build කාර්යය අසාර්ථක වන අතර එම විධානයම කන්ටේනරයෙන් පිටත ක්රියා කරයි. කන්ටේනරයට තමන්ගේම DNS සහ සෙවුම් සැකසුම් compose ගොනුවේ හෝ run තර්කවල දෙන්න, host පැතිකඩේ පමණක් නොව.
image එකට දොස් නැගීමට පෙර කන්ටේනරය තුළ පරීක්ෂා කරන්න. විධාන දෙකක් මුළු රෝග විනිශ්චයම තත්පර කිහිපයකින් නැවත නිපදවන අතර, දෙවැන්න ඇත්තටම පිළිතුරු දුන්නේ කුමන resolver දැයි ඔප්පු කරයි.
ඉන් පසුව පමණක් share එක සහ පෙරහන දෙස බලන්න
නම විසඳුණු පසු, ඉතිරි අසාර්ථකත්ව සාමාන්ය ජාල ගැටලු වේ. SMB ට සේවාදායකයට TCP 445 අවශ්ය වන අතර, කාර්ය කණ්ඩායම් ලැයිස්තුවක් බ්රව්ස් කිරීම tunnel එක ඉදිරියට නොයවන නම් සේවා මත රඳා පවතී. ලැයිස්තුව පිරෙන තෙක් බලා නොසිට hostname අනුව සිතියම් කරන්න, තවද සේවාලාභියාට ගොස් ඇති අදියර පවසන්නට ඉඩ දෙන්න. ප්රතික්ෂේප කළ සම්බන්ධතාවය සහ නිහඬ 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 ගැටලුවකි. නොවිසඳුණු නම resolver ගැටලුවයි. සත්යාපනය වී අවසර දෝෂ ලබා දෙන mount එකක් ඒ දෙකම නොවේ, එබැවින් සැසිය ස්ථාපිත වූ පසු ජාල ප්රශ්නය නැවත නොවිවෘත කරන්න.
නිගමනය සාක්ෂිය තරම්ම පටුව තබන්න. ලිපිනය ක්රියා කර නම ක්රියා නොකරන්නේ නම්, tunnel එක තම කාර්යය කරමින් සිටී, නිවැරදි කිරීම resolver අනුපිළිවෙල, සෙවුම් වසම හෝ කන්ටේනරයේම වින්යාසයට අයත් වේ.