nsswitch ಕ್ರಮದಿಂದಾಗಿ ನಿಮ್ಮ CIFS ಮೌಂಟ್ VPN ಮೇಲೆ ವಿಫಲವಾಗುತ್ತದೆ
ಷೇರು ವಿಳಾಸದಿಂದ ಉತ್ತರಿಸುತ್ತದೆ ಮತ್ತು ಹೆಸರಿನಿಂದ ನೇತಾಡುತ್ತದೆ, ಹಾಗಾಗಿ SMB ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲೇ ಹುಡುಕಾಟ ಸಾಯುತ್ತದೆ. getent ಅನ್ನು host ನೊಂದಿಗೆ ಹೋಲಿಸಿ, ನಂತರ hosts ಸಾಲನ್ನು ಕ್ರಮವಾಗಿ ಓದಿ.
ಟನೆಲ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ. ಫೈಲ್ ಸರ್ವರ್ ವಿಳಾಸದಿಂದ ping ಗೆ ಉತ್ತರಿಸುತ್ತದೆ. ನಂತರ mount.cifs ಹೋಸ್ಟ್ ಹೆಸರಿನೊಂದಿಗೆ ಸ್ವಲ್ಪ ಸಮಯ ಸುಮ್ಮನೆ ಕುಳಿತು ಹೋಸ್ಟ್ ತಲುಪಲಾಗದು ಎಂದು ವರದಿ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಎಂದೂ ಸಮಸ್ಯೆಯಾಗಿರದ VPN ಪ್ರೊಫೈಲ್ ಅನ್ನು ನೀವು ಮತ್ತೆ ಕಟ್ಟಲು ಪ್ರಾರಂಭಿಸುತ್ತೀರಿ. Linux ನಲ್ಲಿ ಯಾವುದೇ SMB ಪ್ಯಾಕೆಟ್ ಇರುವ ಮೊದಲೇ glibc ಹೆಸರನ್ನು ಬಗೆಹರಿಸುತ್ತದೆ, ಮತ್ತು ಆ ರಿಸಾಲ್ವರ್ನಲ್ಲಿನ ಕ್ರಮವು 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
mDNS ಅನ್ನು ಅಳಿಸುವ ಬದಲು DNS ಅನ್ನು ಬೇಗ ಮರಳುವ ಕ್ರಿಯೆಯ ಮುಂದೆ ಸರಿಸಿ, ಮತ್ತು ಸಂರಚನಾ ನಿರ್ವಹಣೆಯ ಮೂಲಕ ಬದಲಿಸಿ. ಕೈಯಿಂದ ಮಾಡಿದ ತಿದ್ದುಪಡಿ ಮುಂದಿನ image ನಿರ್ಮಾಣದವರೆಗೆ ಬದುಕುತ್ತದೆ, ನಂತರ ಅದೇ ಟಿಕೆಟ್ ತಿದ್ದುಪಡಿ ನೆನಪಿಲ್ಲದ ಬೇರೆ ಯಂತ್ರದಿಂದ ಬರುತ್ತದೆ.
ರಿಸಾಲ್ವರ್ ಹುಡುಕಾಟ ಡೊಮೇನ್ ಅಲ್ಲ
ಬಗೆಹರಿಸಲು ಹೆಸರನ್ನು ಪ್ರಯತ್ನಿಸುವುದೂ ಬೇಕು. fileserver ನಂತಹ ಅಪೂರ್ಣ ಹೆಸರು ಪ್ರಶ್ನೆಯನ್ನು ಹೊತ್ತ ಇಂಟರ್ಫೇಸ್ಗೆ ಹುಡುಕಾಟ ಡೊಮೇನ್ ಜೋಡಿಸಿದಾಗ ಮಾತ್ರ fileserver.corp.example ಆಗುತ್ತದೆ. ಹುಡುಕಾಟ ಪಟ್ಟಿ ಇಲ್ಲದೆ DNS ಸರ್ವರ್ ಒತ್ತಾಯಿಸುವ VPN ಬಹಳ ನಿರ್ದಿಷ್ಟ ವಿಭಜನೆಯನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ: ಪೂರ್ಣ ಅರ್ಹತೆಯ ಹೆಸರು ಬಗೆಹರಿಯುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಚಿಕ್ಕ ಹೆಸರೂ ವಿಫಲವಾಗುತ್ತದೆ.
ಪ್ರೊಫೈಲ್ ಸಂಪಾದಿಸುವ ಮೊದಲು ಎರಡೂ ರೂಪಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ, ಏಕೆಂದರೆ ಎರಡು ವಿಫಲತೆಗಳು ಬೇರೆ ಬೇರೆ ದಿಕ್ಕು ತೋರಿಸುತ್ತವೆ. systemd-resolved ಹೋಸ್ಟ್ನಲ್ಲಿ ಟನೆಲ್ ಲಿಂಕ್ಗೆ ತನ್ನದೇ ಸರ್ವರ್ಗಳು ಮತ್ತು ರೂಟಿಂಗ್ ಡೊಮೇನ್ಗಳಿವೆ, ಆದ್ದರಿಂದ ಜಾಗತಿಕ ಕಡತವಲ್ಲ, ಲಿಂಕ್ ಓದಿ.
resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain
ಪ್ರಶ್ನೆ ಟನೆಲ್ ಹೊತ್ತಿಲ್ಲದ ಲಿಂಕ್ಗೆ ಆರೋಪಿಸಲ್ಪಟ್ಟರೆ, DNS ವಿಳಾಸ ಇದ್ದರೂ ರೂಟಿಂಗ್ ಡೊಮೇನ್ ಕಾಣೆಯಾಗುತ್ತದೆ. ಅದು resolved ಸಂರಚನೆಯಲ್ಲಿ ನೀತಿ ಸಮಸ್ಯೆ, ಟನೆಲ್ನಲ್ಲಿ ರೂಟಿಂಗ್ ಸಮಸ್ಯೆ ಅಲ್ಲ.
ಕಂಟೇನರ್ಗಳು ಉತ್ತರದ ತಮ್ಮದೇ ಪ್ರತಿಯನ್ನು ಹೊತ್ತಿರುತ್ತವೆ
ಸಾಮಾನ್ಯ image ನಿಂದ ಕಟ್ಟಿದ ಕಂಟೇನರ್ ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಥಿರ resolv.conf ಜೊತೆ ಬರುತ್ತದೆ. ಹೋಸ್ಟ್ನಲ್ಲಿ ಮಾಡಿದ ರಿಸಾಲ್ವರ್ ಬದಲಾವಣೆಗಳು ಅದನ್ನು ತಲುಪುವುದಿಲ್ಲ, ಹುಡುಕಾಟ ಡೊಮೇನ್ ಕೂಡ ತಲುಪುವುದಿಲ್ಲ, ಹಾಗಾಗಿ ಟನೆಲ್ ಮೂಲಕ ಷೇರನ್ನು ಮೌಂಟ್ ಮಾಡುವ build ಕೆಲಸ ವಿಫಲವಾಗುತ್ತದೆ, ಅದೇ ಆಜ್ಞೆ ಕಂಟೇನರ್ನ ಹೊರಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಕಂಟೇನರ್ಗೆ ಅದರದೇ DNS ಮತ್ತು ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು compose ಕಡತದಲ್ಲಿ ಅಥವಾ run ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳಲ್ಲಿ ಕೊಡಿ, ಹೋಸ್ಟ್ ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಮಾತ್ರವಲ್ಲ.
image ಅನ್ನು ದೂಷಿಸುವ ಮೊದಲು ಕಂಟೇನರ್ ಒಳಗೆ ಪರಿಶೀಲಿಸಿ. ಎರಡು ಆಜ್ಞೆಗಳು ಇಡೀ ರೋಗನಿರ್ಣಯವನ್ನು ಕೆಲವು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಪುನರುತ್ಪಾದಿಸುತ್ತವೆ, ಮತ್ತು ಎರಡನೆಯದು ಯಾವ ರಿಸಾಲ್ವರ್ ನಿಜವಾಗಿ ಉತ್ತರಿಸಿತು ಎಂದು ಸಾಬೀತು ಮಾಡುತ್ತದೆ.
ಆಮೇಲೆಯೇ ಷೇರು ಮತ್ತು ಫಿಲ್ಟರ್ ನೋಡಿ
ಹೆಸರು ಬಗೆಹರಿದ ಮೇಲೆ, ಉಳಿದ ವಿಫಲತೆಗಳು ಸಾಮಾನ್ಯ ಜಾಲ ಸಮಸ್ಯೆಗಳು. 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 ಸಮಸ್ಯೆ. ಬಗೆಹರಿಯದ ಹೆಸರು ರಿಸಾಲ್ವರ್ ಸಮಸ್ಯೆ. ಮತ್ತು ದೃಢೀಕರಣವಾಗಿ ಅನುಮತಿ ದೋಷಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ ಮೌಂಟ್ ಎರಡೂ ಅಲ್ಲ, ಆದ್ದರಿಂದ ಸೆಷನ್ ಸ್ಥಾಪಿತವಾದ ಮೇಲೆ ಜಾಲ ಪ್ರಶ್ನೆಯನ್ನು ಮತ್ತೆ ತೆರೆಯಬೇಡಿ.
ತೀರ್ಮಾನವನ್ನು ಸಾಕ್ಷ್ಯದಷ್ಟೇ ಸಣ್ಣದಾಗಿ ಇರಿಸಿ. ವಿಳಾಸ ಕೆಲಸ ಮಾಡಿ ಹೆಸರು ಮಾಡದಿದ್ದರೆ, ಟನೆಲ್ ತನ್ನ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ, ಮತ್ತು ಸರಿಪಡಿಸುವುದು ರಿಸಾಲ್ವರ್ ಕ್ರಮ, ಹುಡುಕಾಟ ಡೊಮೇನ್ ಅಥವಾ ಕಂಟೇನರ್ನ ಸ್ವಂತ ಸಂರಚನೆಯಲ್ಲಿ.