ಕೊಲ್ಲಲ್ಪಟ್ಟ openconnect: ಮಾರ್ಗಗಳು ಮತ್ತು DNS ಇನ್ನೂ ಸುರಂಗದ ಕಡೆಗೆ ತೋರಿಸುತ್ತವೆ
ಸತ್ತ openconnect ಪ್ರಕ್ರಿಯೆಯು ಸ್ಥಾಪಿತ ಮಾರ್ಗಗಳು ಮತ್ತು resolver ನಮೂದುಗಳನ್ನು ಬಿಡಬಹುದು. ಶಟ್ಡೌನ್ ಹಾದಿಯನ್ನು ನಡೆಯಿರಿ, ನಿಮ್ಮ build ದಾಖಲಿಸುವ ಸಿಗ್ನಲ್ ಕಳುಹಿಸಿ, ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸಿ.
ಸುರಂಗ ನಿಂತಿದೆ, ಆದರೆ ಯಂತ್ರವು ಇನ್ನೂ ಅದು ಚಾಲನೆಯಲ್ಲಿದ್ದಂತೆಯೇ ವರ್ತಿಸುತ್ತದೆ: ಒಂದು lookup ಟೈಮೌಟ್ ಆಗುವವರೆಗೆ ನೇತಾಡುತ್ತದೆ, ಮತ್ತು ಒಂದು ಮಾರ್ಗವು ಇನ್ನಿಲ್ಲದ ಇಂಟರ್ಫೇಸ್ನತ್ತ ತೋರಿಸುತ್ತದೆ. ಇದು ತನ್ನ disconnect ಸಹಾಯಕವನ್ನು ಓಡಿಸದೆ ಸತ್ತ openconnect ಪ್ರಕ್ರಿಯೆಯ ಗುರುತು. ಅದು ಸೃಷ್ಟಿಸಿದ ನೆಟ್ವರ್ಕ್ ಸ್ಥಿತಿ ಇನ್ನೂ ಸ್ಥಾಪಿತವಾಗಿದೆ, ಮತ್ತು ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಬೇರೆ ಯಾವುದಕ್ಕೂ ಅದನ್ನು ತೆಗೆದುಹಾಕುವುದು ಹೇಗೆಂದು ಗೊತ್ತಿಲ್ಲ.
ಸ್ಥಿತಿ ಸೃಷ್ಟಿಯಾದ ಕ್ರಮದಲ್ಲಿ ಯಂತ್ರದ ಮೂಲಕ ನಡೆಯಿರಿ: ಪ್ರಕ್ರಿಯೆ, ಲಿಂಕ್, ಮಾರ್ಗ, resolver. ಪ್ರತಿ ಹಂತವು ಕ್ಲೈಂಟ್ ನಿಜವಾಗಿ ಹೋಗಿದೆಯೇ ಅಥವಾ ನಿಮ್ಮ ಟರ್ಮಿನಲ್ನಿಂದ ಬೇರ್ಪಟ್ಟಿದೆಯಷ್ಟೇ ಎಂದು ಹೇಳುತ್ತದೆ, ಮತ್ತು ಆ ವ್ಯತ್ಯಾಸವೇ ಏನನ್ನಾದರೂ ಸರಿಪಡಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ.
ಪ್ರಕ್ರಿಯೆಯಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಸಂರಚನೆಯಿಂದ ಅಲ್ಲ
ಮಾರ್ಗವನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ಟರ್ಮಿನಲ್ ತೆರೆಯಿರಿ ಮತ್ತು ಇನ್ನೂ ಏನು ಚಾಲನೆಯಲ್ಲಿದೆ ಎಂದು ಕೇಳಿ. pgrep -a openconnect ಪ್ರತಿ ಇನ್ಸ್ಟಾನ್ಸ್ ಅನ್ನು ಅದರ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳೊಂದಿಗೆ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಇದು pid ಫೈಲ್ ಮತ್ತು ಅದಕ್ಕೆ ನೀಡಿದ ಸ್ಕ್ರಿಪ್ಟ್ ತೋರಿಸುತ್ತದೆ. ನೀವು ನಿರೀಕ್ಷಿಸದ ಪ್ರಕ್ರಿಯೆಯು ಫ್ಯಾಂಟಮ್ ಸುರಂಗವನ್ನು ಯಾವುದೇ ಲಾಗ್ಗಿಂತ ವೇಗವಾಗಿ ವಿವರಿಸುತ್ತದೆ.
ಏನೂ ಚಾಲನೆಯಲ್ಲಿಲ್ಲದಿದ್ದರೆ, ಲಿಂಕ್ ನೋಡಿ. ip link show tun0 ಇಂಟರ್ಫೇಸ್ ಉಳಿದಿದೆಯೇ ಎಂದು ಹೇಳುತ್ತದೆ, ಮತ್ತು ip route show dev tun0 ಇನ್ನೂ ಅದಕ್ಕೆ ಬದ್ಧವಾಗಿರುವ ಮಾರ್ಗಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. ನಂತರ resolver ಅನ್ನು ಇದರಿಂದ ಪರಿಶೀಲಿಸಿ resolvectl status. ಅವನ್ನು ಬದಲಿಸುವ ಮೊದಲು ಮೂರೂ output ಬರೆದಿಡಿ, ಏಕೆಂದರೆ ಆ ದಾಖಲೆಯೇ ನಂತರ ಹಳೆಯ ನಮೂದನ್ನು ಹೊಸದರಿಂದ ಪ್ರತ್ಯೇಕಿಸುವ ದಾರಿ.
ಹೋದ ಇಂಟರ್ಫೇಸ್ ಸಾಮಾನ್ಯವಾಗಿ ತನ್ನ ಮಾರ್ಗಗಳನ್ನು ಜೊತೆಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ. ಲಿಂಕ್ನ ನಂತರ ಉಳಿಯುವ ಮಾರ್ಗಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಕ್ರಿಯೆ ಇನ್ನೂ ಜೀವಂತವಾಗಿದೆ ಅಥವಾ ಎರಡನೇ ಕ್ಲೈಂಟ್ ಸಾಧನವನ್ನು ಹೊಂದಿದೆ ಎಂದರ್ಥ.
ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದು ಸಹಾಯಕ ಸ್ಕ್ರಿಪ್ಟ್
openconnect ತಾನೇ ಇಂಟರ್ಫೇಸ್, ಮಾರ್ಗಗಳು ಅಥವಾ resolver ನಮೂದುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದಿಲ್ಲ. ಅದು ಬಾಹ್ಯ ಸಹಾಯಕವನ್ನು ಕರೆಯುತ್ತದೆ, /etc/vpnc/vpnc-script upstream build ನಲ್ಲಿ ಮತ್ತು /usr/share/vpnc-scripts/vpnc-script Debian ಮತ್ತು Ubuntu ಪ್ಯಾಕೇಜ್ಗಳಲ್ಲಿ, ಇದನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ: -s. ಸುರಂಗವನ್ನು ಎತ್ತುವ ಸ್ಕ್ರಿಪ್ಟೇ ಅದನ್ನು ಒಡೆಯುತ್ತದೆ.
ಪ್ರಕ್ರಿಯೆಯು ಆ ಸಹಾಯಕವನ್ನು ಕರೆಯದೆ ಹೊರಟರೆ, ಸ್ಥಿತಿ ಉಳಿಯುತ್ತದೆ. OpenConnect ಕೈಪಿಡಿ ಸ್ಕ್ರಿಪ್ಟ್ ಇಲ್ಲದೆ ರೂಟಿಂಗ್ ಮತ್ತು ಹೆಸರು ಸೇವೆ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ ಎಂದು ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುತ್ತದೆ, ಮತ್ತು ಹೊರಡುವಾಗ ಇಂಟರ್ಫೇಸ್ ಸ್ಥಿತಿಯನ್ನು ಒಡೆಯುವ ಘಟಕ ಎಂದು ಸಹಾಯಕವನ್ನು ವಿವರಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ನೀವು ಕ್ಲೈಂಟ್ ಅನ್ನು ಇದರೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವಾಗ ಮಾರ್ಗ ಮುಖ್ಯ: -s.
ಆ ಮಾರ್ಗಕ್ಕೆ ಯಾವ ಸಿಗ್ನಲ್ ತಲುಪುತ್ತದೆ ಎಂಬುದು ಆವೃತ್ತಿಗಳ ನಡುವೆ ಬದಲಾಗಿದೆ. 7.06 ಕೈಪಿಡಿ SIGTERM ಅನ್ನು ಸ್ಕ್ರಿಪ್ಟ್ ತಪ್ಪಿಸುವ ತಕ್ಷಣದ ನಿರ್ಗಮನ ಎಂದು ಪರಿಗಣಿಸುತ್ತದೆ. ಪ್ರಸ್ತುತ build ಗಳು INT ಮತ್ತು TERM ಅನ್ನು ಸ್ವಚ್ಛ ನಿಲುಗಡೆ ಎಂದು ದಾಖಲಿಸುತ್ತವೆ, ಅಲ್ಲಿ ಸೆಷನ್ ಲಾಗ್ಔಟ್ ಆಗುತ್ತದೆ ಮತ್ತು ಸಹಾಯಕ ಚಲಿಸುತ್ತದೆ. ಎರಡೂ ವರ್ತನೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಊಹಿಸುವ ಬದಲು ನಿಮ್ಮ ಬಳಿ ನಿಜವಾಗಿ ಇರುವ ಬೈನರಿಯ SIGNALS ವಿಭಾಗವನ್ನು ಓದಿ.
man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'
ನಿಮ್ಮ build ದಾಖಲಿಸುವ ಸಿಗ್ನಲ್ ಕಳುಹಿಸಿ
ಸಿಗ್ನಲ್ ತಿಳಿದ ನಂತರ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮಾದರಿಯಿಂದ ಅಲ್ಲ, pid ನಿಂದ ನಿಲ್ಲಿಸಿ.
pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"
ನಂತರ ನಿರ್ಗಮನ ಸ್ಥಿತಿಯನ್ನು ನಂಬುವ ಬದಲು ಮೊದಲ ಭಾಗದ ಮೂರು ಪರಿಶೀಲನೆಗಳನ್ನು ಪುನರಾವರ್ತಿಸಿ. ip link show tun0 ವಿಫಲವಾಗಬೇಕು, ip route show dev tun0 ಏನನ್ನೂ ಮುದ್ರಿಸಬಾರದು, ಮತ್ತು resolvectl status ಇನ್ನು VPN ಲಿಂಕ್ ಪಟ್ಟಿ ಮಾಡಬಾರದು.
SIGHUP ನಿಲ್ಲಿಸುವ ಬಟನ್ ಅಲ್ಲ: ಅದು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುತ್ತದೆ, ಸ್ಕ್ರಿಪ್ಟ್ ಓಡಿಸುತ್ತದೆ ಮತ್ತು ಸೆಷನ್ ಅನ್ನು ಪುನರಾರಂಭಿಸಬಹುದಾಗಿ ಬಿಡುತ್ತದೆ: --cookie. SIGUSR2 ತಕ್ಷಣ ಮರುಸಂಪರ್ಕಕ್ಕೆ ಒತ್ತಾಯಿಸುತ್ತದೆ. SIGKILL ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತಪ್ಪಿಸುತ್ತದೆ, ಮತ್ತು ಈ ಲೇಖನವು ಸರಿಯಾಗಿ ಆ ಸ್ಥಿತಿಯ ಬಗ್ಗೆ.
resolv.conf ಬದಲಿಸದೆ resolver ಸರಿಪಡಿಸಿ
ಹೆಚ್ಚಿನ Ubuntu ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ /etc/resolv.conf systemd-resolved ಗೆ ಸಿಂಬಾಲಿಕ್ ಲಿಂಕ್, ನೀವು ಸಂಪಾದಿಸಬೇಕಾದ ಫೈಲ್ ಅಲ್ಲ. ಅದನ್ನು ಬದಲಿಸುವುದು ಪ್ರತಿ ನೆಟ್ವರ್ಕ್ಗೂ ಹೆಸರು ರೆಸಲ್ಯೂಶನ್ ಮುರಿಯುತ್ತದೆ, VPN ಗೆ ಮಾತ್ರವಲ್ಲ. ಬದಲಾಗಿ ಸುರಂಗದ ನೋಂದಣಿ ತೆಗೆದುಹಾಕಿ:
resolvectl revert tun0
resolvectl query example.com
ವ್ಯವಸ್ಥೆಯು systemd-resolved ಬದಲು resolvconf ಬಳಸಿದರೆ, ಪ್ರತಿ ಇಂಟರ್ಫೇಸ್ ದಾಖಲೆ ಲಿಂಕ್ ಬಿಡಲು ಹೇಳುವವರೆಗೆ ಉಳಿಯುತ್ತದೆ, ಮತ್ತು resolvconf -d tun0 ಸಮಾನ ಕ್ರಿಯೆ. ಆಜ್ಞೆ ಆಯ್ಕೆ ಮಾಡುವ ಮೊದಲು ಯಾವ resolver ಬಳಸಲಾಗುತ್ತಿದೆ ಎಂದು ಪರಿಶೀಲಿಸಿ.
ಸತ್ತ ಲಿಂಕ್ನ ಹಿಂದಿನ ಸರ್ವರ್ನತ್ತ ಇನ್ನೂ ಗುರಿಯಿಟ್ಟ lookup ಟೈಮೌಟ್ ಆಗುವವರೆಗೆ ನೇತಾಡುತ್ತದೆ, ಮತ್ತು ಆ ವಿಳಂಬ ಉಳಿದ ಮಾರ್ಗಕ್ಕಿಂತ ಮುರಿದ DNS ಸರ್ವರ್ನಂತೆ ಕಾಣುತ್ತದೆ.
ಮುಂದಿನ disconnect ಅನ್ನು ನೀರಸಗೊಳಿಸಿ
ಪ್ರಾರಂಭ ಮತ್ತು ಶಟ್ಡೌನ್ನಲ್ಲಿ pid ಫೈಲ್ ಮಾರ್ಗವನ್ನು ಒಂದೇ ರೀತಿ ಇರಿಸಿ, ಪ್ರತಿ ಬಾರಿ --pid-file ನೀಡುವ ಮೂಲಕ, ಅಥವಾ openconnect ಅನ್ನು unit ಅಡಿಯಲ್ಲಿ ಓಡಿಸಿ ಅದರ KillSignal ನಿಮ್ಮ ಆವೃತ್ತಿ ದಾಖಲಿಸುವ ಸಿಗ್ನಲ್ಗೆ ಹೊಂದುತ್ತದೆ. ಮೊದಲು ಫೋರ್ಗ್ರೌಂಡ್ನಲ್ಲಿ ಪರೀಕ್ಷಿಸುವುದು ಸಹಾಯಕ ಮುದ್ರಿಸುವ ಶಟ್ಡೌನ್ ಸಂದೇಶಗಳನ್ನು ತೋರಿಸುತ್ತದೆ.
ಸಂಪರ್ಕಿಸಿ, ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ ಮತ್ತು ಮೂರು ಪರಿಶೀಲನೆಗಳನ್ನು ಒಮ್ಮೆ ಓಡಿಸಿ. ಸ್ವಚ್ಛ ನಿರ್ಗಮನವು VPN ಲಿಂಕ್, VPN ಮಾರ್ಗ ಅಥವಾ VPN resolver ನಮೂದನ್ನು ಬಿಡುವುದಿಲ್ಲ. ಮೂರರಲ್ಲಿ ಒಂದು ಉಳಿದರೆ, ಯಾವ ಘಟಕ ಸ್ವಚ್ಛಗೊಳಿಸಲಿಲ್ಲ ಎಂದು ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ. ಮುಂದಿನ ತನಿಖೆ ಆಗ ನೇತಾಡುವ lookup ನಿಂದ ಅಲ್ಲ, ಆ ಉತ್ತರದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.