ಸ್ಲೀಪ್ ಹುಕ್ ಒಂದೇ VPN ಅನ್ನು ಮರಳಿ ತರುವುದಿಲ್ಲ
ಶೂನ್ಯದೊಂದಿಗೆ ಹೊರಡುವ ಹುಕ್ ಸ್ಕ್ರಿಪ್ಟ್ ಚಲಿಸಿತು ಎಂಬುದನ್ನು ಮಾತ್ರ ಸಾಬೀತುಪಡಿಸುತ್ತದೆ. ಅದನ್ನು ನೆಟ್ವರ್ಕ್ನ ನಂತರ ಇರಿಸಿ, ಸರಿಯಾದ ಗುರುತನ್ನು ಬಳಸಿ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಅರ್ಹವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
ಸ್ಲೀಪ್ ಹುಕ್ನಲ್ಲಿ ಮರುಸಂಪರ್ಕ ಆದೇಶವನ್ನು ಹಾಕಿ, ಸಮಸ್ಯೆ ಪರಿಹಾರವಾದಂತೆ ಕಾಣುತ್ತದೆ. ಹುಕ್ ನೆಟ್ವರ್ಕ್ ಇದ್ದ ನಂತರ ಚಲಿಸಿದರೆ, ಕ್ಲೈಂಟ್ ಗುರುತಿಸುವ ಗುರುತಿನಂತೆ, ಕ್ಲೈಂಟ್ ನಿಜವಾಗಿ ಅಳವಡಿಸುವ ಮಾರ್ಗದ ಮೂಲಕ ಮಾತ್ರ ಅದು ಪರಿಹಾರವಾಗುತ್ತದೆ. ಪುನರಾರಂಭದ ನಂತರದ ಹೆಚ್ಚಿನ ವೈಫಲ್ಯಗಳು ಆ ಮೂರರಲ್ಲಿ ಒಂದು, ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಯಾವುದೂ ಹುಕ್ನಲ್ಲಿಯೇ ದೋಷವಾಗಿ ಕಾಣುವುದಿಲ್ಲ. ಹುಕ್ ಹೇಗಾದರೂ ಯಶಸ್ಸನ್ನು ಮರಳಿ ನೀಡುತ್ತದೆ.
ಶೂನ್ಯದೊಂದಿಗೆ ಹೊರಡುವ ಸ್ಕ್ರಿಪ್ಟ್ ಟನೆಲ್ ಮರಳಿ ಬಂತೇ ಎಂಬ ಬಗ್ಗೆ ನಿಮಗೆ ಏನನ್ನೂ ಹೇಳಿಲ್ಲ.
ಹುಕ್ ಚಲಿಸುತ್ತದೆ, ನಂತರ ಏನು?
#!/bin/sh
case "$1" in
pre)
vpn-client disconnect
;;
post)
vpn-client connect
;;
esac
ಪ್ರತಿ ಘಟನೆ ಹುಕ್ ಅನ್ನು ಎರಡು ಬಾರಿ ಕರೆಯುತ್ತದೆ — ಪರಿವರ್ತನೆಯ ಮೊದಲು ಮತ್ತು ನಂತರ — ಮತ್ತು ಅದಕ್ಕೆ ಹಂತ ಮತ್ತು ಘಟನೆಯ ಹೆಸರನ್ನು ನೀಡುತ್ತದೆ. ಅದು ಕನಿಷ್ಠ ಪರಿಸರದಲ್ಲಿ root ಆಗಿ ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಸಂಪೂರ್ಣ ಮಾರ್ಗಗಳು ಅಗತ್ಯ ಮತ್ತು ಯಾವುದೇ ಡೆಸ್ಕ್ಟಾಪ್ ಸೆಷನ್ ವೇರಿಯೇಬಲ್ ನಿರೀಕ್ಷಿಸಬಾರದು. ಎರಡೂ ಕರೆಗಳು ಬೇಗ ಮರಳಿ ಬರುವುದು ಸ್ಕ್ರಿಪ್ಟ್ ಚಲಿಸಿತು ಎಂದು ಮಾತ್ರ ಹೇಳುತ್ತದೆ. ನಂತರ ಪ್ರೊಫೈಲ್ ಮೇಲೆ ಬಂತೇ ಎಂಬುದು ಪ್ರತ್ಯೇಕ ಅವಲೋಕನ ಮತ್ತು ಲಾಗ್ನಲ್ಲಿ ತನ್ನದೇ ಸಾಕ್ಷ್ಯ ಬೇಕು.
ಹಂತದ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ವಿನ್ಯಾಸದ ಭಾಗವಾಗಿ ಪರಿಗಣಿಸಿ. pre ಹಂತದಲ್ಲಿ ಮರುಸಂಪರ್ಕದ ಪ್ರಯತ್ನವು ಯಂತ್ರವು ಎಲ್ಲವನ್ನೂ ಕಳೆದುಕೊಳ್ಳಲಿರುವಾಗ ಸಂಭವಿಸುತ್ತದೆ, ಮತ್ತು ಅದು ಯಶಸ್ವಿಯಾಗಲು ಸಾಧ್ಯವಿಲ್ಲ.
Root, ಕನಿಷ್ಠ ಪರಿಸರ, ತಪ್ಪು ಬಳಕೆದಾರ
ಕ್ಲೈಂಟ್ ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ ಲಾಗಿನ್ ಟೋಕನ್ ಇಟ್ಟುಕೊಂಡರೆ, ಹುಕ್ ಅನ್ನು root ಆಗಿ ಚಲಾಯಿಸುವುದು ಅದಕ್ಕೆ ಪ್ರಸ್ತುತಪಡಿಸಲು ಏನನ್ನೂ ಬಿಡುವುದಿಲ್ಲ. ಹುಕ್ ನಿಜವಾಗಿ ಬಳಸುವ ಗುರುತಿನ ಅಡಿಯಲ್ಲಿ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ, ಡೆಸ್ಕ್ಟಾಪ್ ಟರ್ಮಿನಲ್ನಿಂದ ನೀವು ಪರೀಕ್ಷಿಸಿದ ಗುರುತಿನ ಅಡಿಯಲ್ಲಿ ಅಲ್ಲ. ಕೆಲವು ಬಿಲ್ಡ್ಗಳು ಸಂಪರ್ಕ ಕಡಿತದ ನಂತರ ಇಂಟರ್ಫೇಸ್ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ಡೀಮನ್ ಅನ್ನೂ ಬಿಡುತ್ತವೆ, ಆದ್ದರಿಂದ ಮರುಸಂಪರ್ಕವು ಹಳೆಯ ಸ್ಥಿತಿಗೆ ಬೀಳುತ್ತದೆ, ಮತ್ತು ಮೊದಲು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವುದು ಅದನ್ನು ಅಶುದ್ಧ ಶಟ್ಡೌನ್ ವೆಚ್ಚದಲ್ಲಿ ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ. ನೀವು ಸುಖದ ಮಾರ್ಗವನ್ನು ಮಾತ್ರ ಪರೀಕ್ಷಿಸಿದರೆ ಎರಡೂ ವರ್ತನೆಗಳು ಕಾಣುವುದಿಲ್ಲ.
ಹುಕ್ ಅನ್ನು ಸಂಪೂರ್ಣ ಮಾರ್ಗಗಳೊಂದಿಗೆ ಬರೆಯಿರಿ, ಅದನ್ನು root ಮಾಲೀಕತ್ವದಲ್ಲಿ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದಂತೆ ಇರಿಸಿ, ಮತ್ತು ಅದು ಏನು ಮಾಡಿತು ಎಂದು ಲಾಗ್ ಮಾಡಿ. ಆ ಲಾಗ್ ಇಲ್ಲದೆ ಮುಂದಿನ ತನಿಖೆ ಶೂನ್ಯದಿಂದ ಆರಂಭವಾಗುತ್ತದೆ.
ಸ್ವಯಂ ಸಂಪರ್ಕ VPN ಮಾರ್ಗವಲ್ಲ
NetworkManager ಎರಡು ಸಕ್ರಿಯಗೊಳಿಸುವ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ: ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಸ್ವಯಂ ಸಂಪರ್ಕ ಧ್ವಜ, ಮತ್ತು ಪ್ರಾಥಮಿಕ ಪ್ರೊಫೈಲ್ ಸಕ್ರಿಯವಾದಾಗ ಪ್ರಾರಂಭವಾಗುವ ದ್ವಿತೀಯ ಸಂಪರ್ಕಗಳು. ಸ್ಥಳೀಯ ಸಾಧನ ಪ್ರಕಾರಗಳು ಮೊದಲನೆಯದನ್ನು ಅಳವಡಿಸುತ್ತವೆ; VPN ಪ್ಲಗಿನ್ಗಳು ಐತಿಹಾಸಿಕವಾಗಿ ಎರಡನೆಯದನ್ನು ಮಾತ್ರ ಅಳವಡಿಸಿವೆ, ಆದ್ದರಿಂದ OpenVPN ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಸ್ವಯಂ ಸಂಪರ್ಕವನ್ನು ಟಿಕ್ ಮಾಡುವುದು ಯಾವುದೇ ಪರಿಣಾಮವನ್ನೇ ಹೊಂದದಿರಬಹುದು. ಎರಡೂ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ನಂತರ VPN ಅನ್ನು Wi-Fi ಅಥವಾ Ethernet ಪ್ರೊಫೈಲ್ನ ದ್ವಿತೀಯವಾಗಿ ಜೋಡಿಸಿ.
[Unit] PartOf=NetworkManager.service Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service
systemd ಘಟಕದಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡುವ WireGuard ಇಂಟರ್ಫೇಸ್ಗೆ ಹುಕ್ ಬದಲು ಆ ಡ್ರಾಪ್-ಇನ್ ಬೇಕು, ನೆಟ್ವರ್ಕ್ ಆನ್ಲೈನ್ ಆದ ನಂತರ ಜೋಡಿಸಲಾಗಿದೆ.
ನೆಟ್ವರ್ಕ್ಗಾಗಿ ಕಾಯಿರಿ, ಮಿತಿಯೊಂದಿಗೆ
timer=1 while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do sleep 1; timer=$((timer+1)) [ $timer -ge 300 ] && exit 0 done nmcli connection up "work-vpn"
ಪುನರಾರಂಭದಲ್ಲಿ Wi-Fi ಇನ್ನೂ ಮರುಸಂಪರ್ಕಗೊಳ್ಳುತ್ತಿರುವಾಗ ಟನೆಲ್ ಅನ್ನು ಕೇಳಬಹುದು, ಇದು ಯಾವುದೇ ಸ್ಥಿರ ಸ್ಲೀಪ್ ಅನ್ನು ಊಹೆಯಾಗಿಸುತ್ತದೆ. ತಲುಪಬಹುದಾದ ವಿಳಾಸಕ್ಕಾಗಿ ಕಾಯಿರಿ, ನಂತರ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಮೇಲೆ ಎತ್ತಿ, ಮತ್ತು ಕಾಯುವಿಕೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ ಇದರಿಂದ ಹುಕ್ ಪುನರಾರಂಭದ ಮಾರ್ಗವನ್ನು ಅನಿರ್ದಿಷ್ಟವಾಗಿ ತೆರೆದಿಡಲು ಸಾಧ್ಯವಾಗದು. ಸಂಖ್ಯಾ ಸೂಚ್ಯಂಕಕ್ಕಿಂತ ಪ್ರೊಫೈಲ್ ಹೆಸರನ್ನು ಆದ್ಯತೆ ನೀಡಿ, ಮತ್ತು ಸರಿಯಾದ ಪ್ರೊಫೈಲ್ ನೆಟ್ವರ್ಕ್ ಪ್ರಕಾರ ಬದಲಾದರೆ, ಆರೋಗ್ಯಕರ ಟನೆಲ್ ತನ್ನ ಆಯ್ಕೆಯನ್ನು ಮೊದಲೇ ಫೈಲ್ಗೆ ದಾಖಲಿಸಲಿ.
ಮರುಪ್ರಾರಂಭದ ಬಿರುಗಾಳಿಗಳಿಂದಲೂ ರಕ್ಷಿಸಿಕೊಳ್ಳಿ, ಪ್ರಯತ್ನಗಳನ್ನು ಎಣಿಸಿ ನಿಲ್ಲಿಸುವ ಮೂಲಕ. ಪ್ರತಿ ವಿಫಲ ಪರೀಕ್ಷೆಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುವ ಗಸ್ತುದಾರ ಒಂದು ಅಡಚಣೆಯನ್ನು ಕುಣಿಕೆಯಾಗಿ ಬದಲಿಸುತ್ತದೆ.
ಒಮ್ಮೆ ಸಸ್ಪೆಂಡ್ ಮಾಡಿ, ನಂತರ ಹುಕ್ನ ಸ್ವಂತ ಔಟ್ಪುಟ್ಗಾಗಿ ಜರ್ನಲ್ ಓದಿ. ಅದುವೇ ಕ್ರಮವನ್ನು ಸಾಬೀತುಪಡಿಸುವ ಏಕೈಕ ಪರೀಕ್ಷೆ.