status=200/CHDIR: systemd ಎಂದಿಗೂ OpenVPN ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಿಲ್ಲ
CHDIR ವೈಫಲ್ಯ ಎಂದರೆ systemd ಒಂದು ಡೈರೆಕ್ಟರಿಗೆ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, OpenVPN ಪ್ರೊಫೈಲ್ ಓದಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ ಎಂದಲ್ಲ. VPN ಸಂರಚನೆಯನ್ನು ಮುಟ್ಟುವ ಮೊದಲು unit ಓದಿ.
ಸೇವೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ, ಲಾಗ್ಗಳು spawn ಮತ್ತು ಒಂದು ಡೈರೆಕ್ಟರಿಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತವೆ, ಮತ್ತು ಮೊದಲ ಪ್ರವೃತ್ತಿ VPN ಸಂರಚನೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು. ಆ ಫೈಲ್ನಿಂದ ಇನ್ನೂ ಏನೂ ಓದಿಲ್ಲ. systemd ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಿದ್ಧಪಡಿಸುವಾಗ, ಎಕ್ಸಿಕ್ಯೂಟೆಬಲ್ ಚಾಲನೆಯಾಗುವ ಮೊದಲೇ ವಿಫಲವಾಯಿತು, ಆದ್ದರಿಂದ ಯಾವ parser, ಯಾವ ಪ್ರಮಾಣಪತ್ರ ಮತ್ತು ಯಾವ ದೂರದ ಹೋಸ್ಟ್ ಸಂಪರ್ಕಿಸಲ್ಪಡಲಿಲ್ಲ. ಸ್ಥಿತಿ ಸಂಕೇತವನ್ನು OpenVPN ಬಗ್ಗೆ ಅಲ್ಲದೆ systemd ಬಗ್ಗೆ ಹೇಳಿಕೆಯಾಗಿ ಓದುವುದೇ ಇದನ್ನು ಚಿಕ್ಕ ತನಿಖೆಯಾಗಿ ಮಾಡುತ್ತದೆ.
ಅಪ್ಲಿಕೇಶನ್ಗೆ ಮೊದಲು ಸ್ಥಿತಿ ಸಂಕೇತ ಓದಿ
ಸೇವೆಯ ಹೆಸರಿನ ನಂತರದ ಸಂಖ್ಯಾ ಸಂಕೇತವು ವಿಫಲವಾದ ಹಂತವನ್ನು ಹೆಸರಿಸುತ್ತದೆ. ಡೈರೆಕ್ಟರಿ ವೈಫಲ್ಯವು CHDIR ಸ್ಥಿತಿಯಾಗಿ ವರದಿಯಾಗುತ್ತದೆ, ಆದರೆ ಚಾಲನೆ ಮಾಡಲಾಗದ ಎಕ್ಸಿಕ್ಯೂಟೆಬಲ್ ಸಂಪೂರ್ಣವಾಗಿ ಬೇರೆ ಸಂಕೇತ. ಎರಡೂ ಸಾರಾಂಶ ಸಾಲಿನಲ್ಲಿ ಒಂದೇ ರೀತಿ ಕಂಡರೂ ಅವುಗಳ ಕಾರಣಗಳಲ್ಲಿ ಏನೂ ಸಾಮಾನ್ಯವಿಲ್ಲ.
ಈ ವ್ಯತ್ಯಾಸ ಮುಖ್ಯ ಏಕೆಂದರೆ ಸರಿಪಡಿಸುವಿಕೆಗಳು ಬೇರೆ ಬೇರೆ ಫೈಲ್ಗಳಲ್ಲಿವೆ. CHDIR ವೈಫಲ್ಯವು ಮಾರ್ಗ ಮತ್ತು ಸೇವೆ ಅದನ್ನು ಹೇಗೆ ನೋಡುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ. Exec ವೈಫಲ್ಯವು ಬೈನರಿ, ಅದರ ಇಂಟರ್ಪ್ರಿಟರ್ ಅಥವಾ ಸಂಬಂಧವಿಲ್ಲದ mountಗೆ ಸಂಬಂಧಿಸಿದೆ. VPN ನ ದೂರದ ಬಿಂದು, ಸೈಫರ್ ಪಟ್ಟಿ ಅಥವಾ ಪ್ರಮಾಣಪತ್ರದ ಮಾರ್ಗವನ್ನು ಬದಲಿಸುವುದು ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನೂ ಸರಿಪಡಿಸುವುದಿಲ್ಲ.
ವೈಫಲ್ಯವು ಆರಂಭದಲ್ಲಿದೆಯೇ, ಯಶಸ್ವಿ ಚಾಲನೆಯ ನಂತರವಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿ. ಸೇವೆ ನಿನ್ನೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದ್ದು ಈಗ ಅದೇ ಹಂತದಲ್ಲಿ ವಿಫಲಗೊಂಡರೆ, ಡೈರೆಕ್ಟರಿ, ಅದರ ಅನುಮತಿಗಳು ಅಥವಾ unit ಸ್ವತಃ ಏನೋ ಬದಲಾಗಿದೆ, ಆ ಬದಲಾವಣೆಯೇ ಹುಡುಕಬೇಕಾದ ಸಾಕ್ಷ್ಯ.
unit ಎಲ್ಲಿ ಇರಲು ಬಯಸುತ್ತದೆ ಎಂದು ಕೇಳಿ
ನೀವು ಸ್ಥಾಪಿತ ಎಂದು ಭಾವಿಸುವ ಫೈಲ್ ಅಲ್ಲ, ಪರಿಣಾಮಕಾರಿ unit ಓದಿ, ಏಕೆಂದರೆ drop-in ಫೈಲ್ಗಳು ಮುಖ್ಯ unit ಅನ್ನು ಎಂದಿಗೂ ಸಂಪಾದಿಸದೆಯೇ ಕೆಲಸದ ಡೈರೆಕ್ಟರಿಯನ್ನು ಮೀರಿಸಬಹುದು. show ನ ಔಟ್ಪುಟ್ ಪ್ರಶ್ನೆಗೆ ನೇರವಾಗಿ ಉತ್ತರಿಸುತ್ತದೆ:
systemctl cat [email protected]
systemctl show [email protected] -p WorkingDirectory -p RootDirectory -p User -p ProtectHome
journalctl -u [email protected] -b --no-pager | tail -30
upstream ಸರ್ವರ್ ಟೆಂಪ್ಲೇಟ್ಗೆ ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ ಸರ್ವರ್ ಸಂರಚನಾ ಡೈರೆಕ್ಟರಿ ಮತ್ತು ಇನ್ಸ್ಟನ್ಸ್ನ ಹೆಸರು ಅದರೊಳಗಿನ ಪ್ರೊಫೈಲ್ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಆದ್ದರಿಂದ branch ಎಂಬ ಇನ್ಸ್ಟನ್ಸ್ ಅದೇ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ತನ್ನ ಫೈಲ್ ನಿರೀಕ್ಷಿಸುತ್ತದೆ, ಬೇರೆಡೆ ಇಟ್ಟ ಪ್ರೊಫೈಲ್ ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ ಷರತ್ತನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪೂರೈಸುವುದಿಲ್ಲ.
unit ಏನು ಕೇಳುತ್ತದೆ ಮತ್ತು ಏನಿದೆ ಎಂಬುದನ್ನು ಹೋಲಿಸಿ. ಮೊದಲು ಇದ್ದ ಮಾರ್ಗ, ಈಗ ಬೇರೆಡೆ ಸೂಚಿಸುವ ಸಿಂಬಾಲಿಕ್ ಲಿಂಕ್, ಅಥವಾ ಈಗ ಯಾವುದೇ ಡೈರೆಕ್ಟರಿಗೆ ಹೊಂದದ ಇನ್ಸ್ಟನ್ಸ್ ಹೆಸರು—ಇವೆಲ್ಲವೂ ಇದೇ ವೈಫಲ್ಯವನ್ನು ಉಂಟುಮಾಡುವ ಸಾಮಾನ್ಯ ಬದಲಾವಣೆಗಳು.
ಮಾರ್ಗವನ್ನು ಸೇವೆ ನೋಡುವ ರೀತಿಯಲ್ಲಿ ಪರಿಶೀಲಿಸಿ
ನಿಮ್ಮ shell ಮತ್ತು ಸೇವೆ ಫೈಲ್ ಸಿಸ್ಟಮ್ನ ಒಂದೇ ದೃಶ್ಯವನ್ನು ಹಂಚಿಕೊಳ್ಳುವುದಿಲ್ಲ. ಸಂರಚಿತ ರೂಟ್ ಡೈರೆಕ್ಟರಿ ಅಥವಾ root image unit ಒಳಗಿನ ನಿರಪೇಕ್ಷ ಮಾರ್ಗದ ಅರ್ಥವನ್ನು ಬದಲಿಸುತ್ತದೆ, ಹೋಸ್ಟ್ನಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ಇರುವ ಮಾರ್ಗ ಆ ಹೆಸರಿನ ಜಾಗದಲ್ಲಿ ಇಲ್ಲದಿರಬಹುದು. ಕೈಯಿಂದ ಮಾಡುವ ಪರೀಕ್ಷೆಯನ್ನು ನಂಬುವ ಮೊದಲು unit ನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಓದಿ.
ಅನುಮತಿಗಳು ಸಮಸ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತವೆ. ಸೇವೆ ನಿರ್ದಿಷ್ಟ ಬಳಕೆದಾರನಾಗಿ ಚಲಿಸುತ್ತದೆ, ಆ ಬಳಕೆದಾರರು ಗುರಿಯನ್ನು ತಲುಪಲು ಪ್ರತಿ ಮೂಲ ಡೈರೆಕ್ಟರಿಯನ್ನು ದಾಟಲು ಸಾಧ್ಯವಾಗಬೇಕು, ಗುರಿಯನ್ನು ಮಾತ್ರ ಓದಿದರೆ ಸಾಲದು. root ಓದಬಲ್ಲ ಆದರೆ ಸೇವಾ ಬಳಕೆದಾರ ದಾಟಲಾಗದ ಡೈರೆಕ್ಟರಿ ಕಾಣೆಯಾದ ಮಾರ್ಗದಂತೆ ಕಾಣುವ ವೈಫಲ್ಯವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.
namei -l /etc/openvpn/server
systemctl show [email protected] -p ProtectSystem -p ReadOnlyPaths
ಕಠಿಣಗೊಳಿಸುವ ಸೆಟ್ಟಿಂಗ್ಗಳೂ ಈ ಚಿತ್ರದ ಭಾಗ. ಹೋಮ್ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಮರೆಮಾಡುವ ಅಥವಾ ಫೈಲ್ ಸಿಸ್ಟಮ್ನ ಒಂದು ಭಾಗವನ್ನು ಓದಲು-ಮಾತ್ರ ಮಾಡುವ unit ತನಗೆ ಸಂರಚಿಸಿದ್ದನ್ನೇ ಮಾಡುತ್ತದೆ, ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ sandbox ಇನ್ನೂ ಅದನ್ನು ತೆರೆದಿಡುವ ಸ್ಥಳದಲ್ಲಿರಬೇಕು.
ಮಾಲೀಕರನ್ನು ಸರಿಪಡಿಸಿ, ನಂತರ ಇನ್ನೊಂದು ದೋಷಕ್ಕಾಗಿ ಕಾಯಿರಿ
ಲೇಔಟ್ ಅಥವಾ unit ಅನ್ನು ಆ ಸಂರಚನೆಯ ಮಾಲೀಕರ ಮೂಲಕ ಸರಿಪಡಿಸಿ. ಪ್ರೊಫೈಲ್ ಅನ್ನು ನಿರೀಕ್ಷಿತ ಡೈರೆಕ್ಟರಿಗೆ ಸರಿಸುವುದು ಲೇಔಟ್ ತಪ್ಪಾಗಿರುವಾಗ ಸರಿಯಾದ ತಿದ್ದುಪಡಿ, ಆದರೆ ಪ್ರವೇಶಿಸಲಾಗದ ಡೈರೆಕ್ಟರಿಯನ್ನು ಅದು ವಿವರಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಅದನ್ನು ಸಾಮಾನ್ಯ ಉತ್ತರವೆಂದು ಪರಿಗಣಿಸಬೇಡಿ.
ಸಂರಚನಾ ಮರದ ಮೇಲೆ ಅನುಮತಿಗಳನ್ನು ವಿಸ್ತರಿಸುವ ಅಥವಾ sandbox ತೆಗೆಯುವ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ವಿರೋಧಿಸಿ. ಎರಡೂ ಲಕ್ಷಣವನ್ನು ನಿವಾರಿಸುತ್ತವೆ ಮತ್ತು ಅಲ್ಲೇ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಇಟ್ಟ ರಕ್ಷಣೆಗಳನ್ನೂ ತೆಗೆದುಹಾಕುತ್ತವೆ, ಮುಂದಿನ ವೈಫಲ್ಯವನ್ನು ವಿವರಿಸುವುದು ಕಷ್ಟವಾಗುತ್ತದೆ.
ಇನ್ಸ್ಟನ್ಸ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಯಶಸ್ಸನ್ನು ಊಹಿಸುವ ಬದಲು ಮುಂದಿನ ಘಟನೆಯನ್ನು ಓದಿ. ಮುಂದಿನ ಸಂಭಾವ್ಯ ದೋಷ OpenVPN ತನ್ನ ಸಂರಚನಾ ಫೈಲ್ ತೆರೆಯಲು ಸಾಧ್ಯವಾಗದಿರುವುದು, ಇದು ಪ್ರಗತಿ: ಕೆಲಸದ ಡೈರೆಕ್ಟರಿಗೆ ಪ್ರವೇಶಿಸಲಾಗಿದೆ ಮತ್ತು parser ಈಗ ಚಲಿಸುತ್ತಿದೆ. ಅಲ್ಲಿಂದ unit ನ ನಿಜವಾದ ಫೈಲ್ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಅನುಸರಿಸಿ, ನೆಟ್ವರ್ಕ್ ಸಮಸ್ಯೆ ಪರಿಹಾರಕ್ಕೆ ಮರಳಬೇಡಿ.
systemd ನ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಉಲ್ಲೇಖ ಕೆಲಸದ ಡೈರೆಕ್ಟರಿಯನ್ನು ರೂಟ್ ಡೈರೆಕ್ಟರಿಗಳು ಮತ್ತು sandbox ಜೊತೆಗೆ ಹೇಗೆ ಅರ್ಥೈಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ನೆನಪಿಡಬೇಕಾದ ಮಾದರಿ ಸರಳ: ಪ್ರತಿ ಸ್ಥಿತಿ ಸಂಕೇತ ಬೇರೆ ಹಂತವನ್ನು ಹೆಸರಿಸುತ್ತದೆ, ಅಪ್ಲಿಕೇಶನ್ನ ಸ್ವಂತ ದೋಷಗಳೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವಿವರಿಸುತ್ತವೆ.