systemd VPN ಸೇವೆಯನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ: Type= ಅನ್ನು ಕ್ಲೈಂಟ್ಗೆ ಹೊಂದಿಸಿ
ಬೂಟ್ ಸಮಯದ VPN ಯುನಿಟ್ Type= ಕ್ಲೈಂಟ್ನ ಜೀವಿತಾವಧಿಗೆ ಹೊಂದದಿದ್ದಾಗ ನಿಷ್ಕ್ರಿಯವಾಗುತ್ತದೆ. ಪ್ರಕಾರವನ್ನು ಹೊಂದಿಸಿ, ಮಾಲೀಕತ್ವವನ್ನು ಸರಿಪಡಿಸಿ ಮತ್ತು ಸೇವೆಯನ್ನು ಟನೆಲ್ನ ನಂತರ ಜೋಡಿಸಿ.
ಯುನಿಟ್ಗಳು ಸರಿಯಾಗಿ ಕಾಣಬಹುದು, systemctl start ಯಶಸ್ಸನ್ನು ವರದಿ ಮಾಡಬಹುದು, ಮತ್ತು ಹತ್ತು ಸೆಕೆಂಡುಗಳ ನಂತರ ಸೇವೆ ನಿಷ್ಕ್ರಿಯವಾಗಿ ಕುಳಿತಿರುತ್ತದೆ. ಅಥವಾ ಸ್ಟಾರ್ಟ್ ಮಿತಿ ಅದನ್ನು ನಿಲ್ಲಿಸುವವರೆಗೆ ಪ್ರತಿ ಅರ್ಧ ನಿಮಿಷಕ್ಕೆ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಈ ಎರಡೂ ವರ್ತನೆಗಳಲ್ಲಿ ಯಾವುದೂ ನೆಟ್ವರ್ಕ್ ದೋಷವಲ್ಲ: ಯುನಿಟ್ ಕ್ಲೈಂಟ್ ನಿಜವಾಗಿ ಮಾಡುವುದಕ್ಕೆ ಹೊಂದದ ಪ್ರಕ್ರಿಯೆಯ ಜೀವಿತಾವಧಿಯನ್ನು ವಿವರಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಫೋರ್ಕ್ ಮಾಡಿ ನಿರ್ಗಮಿಸಬಹುದು, ಅಥವಾ ಸೆಷನ್ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ ತಕ್ಷಣ ನಿರ್ಗಮಿಸಬಹುದು.
ಯಶಸ್ವಿ ಪ್ರಾರಂಭದ ಕೆಲವು ಸೆಕೆಂಡುಗಳ ನಂತರ ಯುನಿಟ್ ಏಕೆ ನಿಷ್ಕ್ರಿಯವಾಗುತ್ತದೆ
systemd ತಾನು ಪ್ರಾರಂಭಿಸಿದ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಸ್ಥಿತಿಯನ್ನು ಅನುಮಾನಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ Type= ಆ ಪ್ರಕ್ರಿಯೆಯ ಬಗ್ಗೆ ಒಂದು ಹೇಳಿಕೆ, ದಾಖಲೆ ಅಲ್ಲ. Type=simple ಜೊತೆಗೆ ಆಜ್ಞೆ ಚಾಲನೆಯಲ್ಲಿರುವವರೆಗೆ ಯುನಿಟ್ ಸಕ್ರಿಯ ಎಂದು ಎಣಿಸಲ್ಪಡುತ್ತದೆ ಮತ್ತು ಅದು ಮರಳಿದಾಗ ನಿಷ್ಕ್ರಿಯವಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ಸಂಪರ್ಕವನ್ನು ಸಹಾಯಕ ಪ್ರೋಗ್ರಾಂಗೆ ಒಪ್ಪಿಸಿ ನಿರ್ಗಮಿಸುವ ಕ್ಲೈಂಟ್ ಕ್ರ್ಯಾಶ್ನಂತೆ ಕಾಣುತ್ತದೆ, ಟನೆಲ್ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೂ ಸಹ. ನಂತರ ಜರ್ನಲ್ ಪ್ರಾರಂಭ ಮತ್ತು ನಿಲುಗಡೆಯ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತದೆ, ಅದು ಕೆಟ್ಟ ಬೈನರಿಯಂತೆ ಓದಲ್ಪಡುತ್ತದೆ.
ನೆಟ್ವರ್ಕ್ ಸಂರಚನೆಯನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ಕ್ಲೈಂಟ್ನ ವರ್ತನೆಯ ಜೊತೆಗೆ ಯುನಿಟ್ನ ಪ್ರಕಾರವನ್ನು ಓದಿ.
ಕ್ಲೈಂಟ್ಗೆ ಹೊಂದುವ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ
ಎರಡು ಮಾದರಿಗಳು ಹೆಚ್ಚಿನ ಮಾರಾಟಗಾರರ CLIಗಳನ್ನು ಒಳಗೊಳ್ಳುತ್ತವೆ: ಸೆಷನ್ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ ನಿರ್ಗಮಿಸುವ ಆಜ್ಞೆ, ಮತ್ತು ಮರಳುವ ಮೊದಲು ಸಹಾಯಕವನ್ನು ಫೋರ್ಕ್ ಮಾಡುವ ಆಜ್ಞೆ. ಪ್ರತಿಯೊಂದಕ್ಕೂ ಬೇರೆ ಯುನಿಟ್ ಆಕಾರ ಬೇಕು.
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnectoneshot ಮತ್ತು RemainAfterExit=true ಜೊತೆಗೂಡಿ ಆಜ್ಞೆ ಮರಳಿದ ನಂತರವೂ ಯುನಿಟ್ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ, ಇದು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ ನಿರ್ಗಮಿಸು ಮಾದರಿಗೆ ಹೊಂದುತ್ತದೆ, ಮತ್ತು ನಿಲ್ಲಿಸುವ ಆಜ್ಞೆ ಸೇವೆಗೆ ಸ್ವಚ್ಛ ಮುಕ್ತಾಯ ನೀಡುತ್ತದೆ. ಫೋರ್ಕ್ ಮಾಡುವ ಕ್ಲೈಂಟ್ ಅದೇ ಆಕಾರವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ ಆದರೆ systemd ಮಗುವನ್ನು ಅನುಸರಿಸಲು Type=forking ಬೇಕು. Restart=on-failure, RestartSec=30 ಮತ್ತು ಸೀಮಿತ StartLimitBurst ಅನ್ನು ಸೆಟ್ ಮಾಡಿ, ಪೂರೈಕೆದಾರರ ಅಡಚಣೆ ದೋಷವನ್ನು ಹೂತುಹಾಕುವ ಮರುಪ್ರಾರಂಭದ ಲೂಪ್ ಆಗದಂತೆ.
ಮೇಲ್ವಿಚಾರಣೆಯಲ್ಲಿರುವ ಕ್ಲೈಂಟ್ ಡೀಮನ್ ಆಗಲು ಎಂದಿಗೂ ಬಿಡಬೇಡಿ
systemd ಹೊರಗಿನ ಮೇಲ್ವಿಚಾರಕರು ಅದೇ ಗೋಡೆಗೆ ಬಡಿಯುತ್ತಾರೆ. ಡೀಮನ್ ಆದ ಕ್ಲೈಂಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವ runit ರನ್ ಸ್ಕ್ರಿಪ್ಟ್ ತಕ್ಷಣ ಮೇಲ್ವಿಚಾರಕನ ಬಳಿಗೆ ಮರಳುತ್ತದೆ, ಅವನು ಆ ಮರಳುವಿಕೆಯನ್ನು ಕ್ರ್ಯಾಶ್ ಎಂದು ಓದಿ ಇನ್ನೊಂದು ಪ್ರತಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತಾನೆ. ಪ್ರತಿ ಮೇಲ್ವಿಚಾರಕನೂ ಮುಂಭಾಗದ ಪ್ರಕ್ರಿಯೆಯ ಮಾಲೀಕತ್ವವನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತಾನೆ, sshd -D ಮುಂದೆ ಉಳಿಯುವಂತೆ. ಮೇಲ್ವಿಚಾರಣೆಯ ಆಜ್ಞೆಗಳಿಗೆ ಡೀಮನ್ ಧ್ವಜವನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು ಹಿನ್ನೆಲೆ ಕೆಲಸವನ್ನು ಮೇಲ್ವಿಚಾರಕನಿಗೆ ಬಿಡಿ. ಟನೆಲ್ ಇರುವ ಮೊದಲು ಮರಳುವ ಸುತ್ತುವ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅದೇ ಗೊಂದಲವನ್ನು ಉಂಟುಮಾಡುತ್ತವೆ.
ತನ್ನನ್ನು ತಾನು ಬೇರ್ಪಡಿಸಿಕೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆ ಅದನ್ನು ಗಮನಿಸಬೇಕಿದ್ದ ಎಲ್ಲದಕ್ಕೂ ಅಗೋಚರವಾಗಿರುತ್ತದೆ.
ಸೆಷನ್ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಟನೆಲ್ ಅನ್ನು ಜೊತೆಯಲ್ಲಿ ಕೊಂಡೊಯ್ಯುತ್ತದೆ
ಡೆಸ್ಕ್ಟಾಪ್ ಸೆಷನ್ ತಾನು ಪ್ರಾರಂಭಿಸುವ ಕ್ಲೈಂಟ್ನ ಮಾಲೀಕ. ಲಾಗಿನ್ ಮುಗಿಸಿ, ಸೆಷನ್ ಬಸ್ ಕಣ್ಮರೆಯಾಗುತ್ತದೆ, ಟನೆಲ್ ಅನ್ನು ಜೊತೆಯಲ್ಲಿ ಕೊಂಡೊಯ್ಯುತ್ತದೆ, ಕೊನೆಯ ವಿಂಡೋ ಮುಚ್ಚಿದಾಗ ಗ್ರಾಫಿಕಲ್ ಕ್ಲೈಂಟ್ನ ಸಂಪರ್ಕ ಏಕೆ ಹೆಚ್ಚಾಗಿ ಕಡಿತಗೊಳ್ಳುತ್ತದೆ ಎಂಬುದನ್ನು ಇದು ವಿವರಿಸುತ್ತದೆ. ಸರ್ವರ್ಗಳು ತಾವೇ ಏರುವ ಸಿಸ್ಟಂ ಯುನಿಟ್ ಅಥವಾ NetworkManager ಪ್ರೊಫೈಲ್ ಬಳಸಬೇಕು. ಬಳಕೆದಾರ ಯುನಿಟ್ ಟನೆಲ್ ಲಾಗಿನ್ನೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳಬೇಕಿದ್ದಾಗ ಮಾತ್ರ ಅರ್ಥಪೂರ್ಣ, ಆದ್ದರಿಂದ ಅದನ್ನು ಗ್ರಾಫಿಕಲ್ ಸೆಷನ್ ಗುರಿಗೆ ಬಿಗಿದು ಅದನ್ನು ವಿವರಣೆಯಲ್ಲಿ ತಿಳಿಸಿ.
ಸೇವಾ ಬಳಕೆದಾರ ಅದೇ ಸಮಸ್ಯೆಯ ಇನ್ನೊಂದು ಅರ್ಧ. root ಒಡೆತನದ ಮತ್ತು ಮೋಡ್ 0600 ಇರುವ ಕೀಲಿ ಬೇರೆ ಖಾತೆಯಲ್ಲಿ ಚಾಲನೆಯಾಗುವ ಯುನಿಟ್ಗೆ ಓದಲಾಗದು, ನಿಮ್ಮ ಶೆಲ್ನಲ್ಲಿ sudo ಏನೇ ಸಾಧಿಸಿದರೂ.
systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -lsವಿಳಾಸ ಇದ್ದ ನಂತರ ಅವಲಂಬಿತಗಳನ್ನು ಜೋಡಿಸಿ
ಇನ್ನೂ ರಚಿಸದ ಟನೆಲ್ ವಿಳಾಸಕ್ಕೆ ಡೀಮನ್ ಬಂಧಿಸಿದಾಗ, ಅದು Cannot assign requested address ಜೊತೆ ನಿರ್ಗಮಿಸುತ್ತದೆ. ಪರಿಹಾರ ಮರುಪ್ರಯತ್ನದ ಲೂಪ್ ಅಲ್ಲ, ಸ್ಪಷ್ಟ ಕ್ರಮಗೊಳಿಸುವಿಕೆ.
[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.deviceAfter= ಕೆಲಸಗಳನ್ನು ಜೋಡಿಸುತ್ತದೆ, ಆದರೆ ಸಾಧನ ಯುನಿಟ್ನಲ್ಲಿ Requires= ಅವಲಂಬಿತವನ್ನು ಇಂಟರ್ಫೇಸ್ನ ಅಸ್ತಿತ್ವಕ್ಕೆ ಬಿಗಿಯುತ್ತದೆ, ಇದು ಕೇವಲ ನೆಟ್ವರ್ಕ್ ಗುರಿಗಾಗಿ ಕಾಯುವುದಕ್ಕಿಂತ ಬಲವಾಗಿದೆ. ಸಂಪಾದನೆಯ ನಂತರ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಮರುಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಅವಲಂಬಿತ ಸೇವೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ, ನಂತರ ಕ್ರಮ ಕೆಲಸ ಮಾಡಿದೆ ಎಂದು ಊಹಿಸುವ ಬದಲು ಅದರ ಜರ್ನಲ್ ಓದಿ. ಕ್ಲೈಂಟ್ನ ಔಟ್ಪುಟ್ ಅನ್ನು StandardOutput=journal ಅಥವಾ ಲಾಗ್ ಆಯ್ಕೆಯೊಂದಿಗೆ ಜರ್ನಲ್ಗೆ ಕಳುಹಿಸಿ, ಏಕೆಂದರೆ ಯಾರೂ ತೆರೆಯದ ಫೈಲ್ಗೆ ಬರೆಯುವ ಮೇಲ್ವಿಚಾರಣೆಯ ಕ್ಲೈಂಟ್ ಎಂದಿಗೂ ಪ್ರಾರಂಭವಾಗದ ಕ್ಲೈಂಟ್ನಂತೆಯೇ ಕಾಣುತ್ತದೆ.
ನಂತರ ಒಮ್ಮೆ ಮರುಬೂಟ್ ಮಾಡಿ ಮತ್ತು ಟನೆಲ್ ಸಾಧನ ಕಾಣಿಸಿಕೊಂಡ ನಂತರ ಯುನಿಟ್ ಸಕ್ರಿಯವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ. systemctl start ನಿಂದ ಮಾತ್ರ ಪರಿಶೀಲಿಸಿದ ಸರಿಪಡಿಸುವಿಕೆ ಸರಿಪಡಿಸಬೇಕಿದ್ದ ಬೂಟ್ ಕ್ರಮವನ್ನು ಪರೀಕ್ಷಿಸಿಲ್ಲ.