ਸੁਰੰਗ ਬੰਦ ਹੈ, ਪਰ ਮਸ਼ੀਨ ਅਜੇ ਵੀ ਇੰਝ ਵਿਵਹਾਰ ਕਰਦੀ ਹੈ ਜਿਵੇਂ ਇਹ ਚਾਲੂ ਹੋਵੇ: ਇੱਕ lookup ਟਾਈਮਆਊਟ ਹੋਣ ਤੱਕ ਲਟਕਦਾ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਰੂਟ ਉਸ ਇੰਟਰਫ਼ੇਸ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੈ ਜੋ ਹੁਣ ਨਹੀਂ ਹੈ। ਇਹ ਉਸ openconnect ਪ੍ਰਕਿਰਿਆ ਦੀ ਨਿਸ਼ਾਨੀ ਹੈ ਜੋ ਆਪਣੇ ਡਿਸਕਨੈਕਟ ਹੈਲਪਰ ਨੂੰ ਚਲਾਏ ਬਿਨਾਂ ਮਰ ਗਈ। ਇਸਨੇ ਬਣਾਈ ਨੈੱਟਵਰਕ ਸਥਿਤੀ ਅਜੇ ਵੀ ਸਥਾਪਿਤ ਹੈ, ਅਤੇ ਸਿਸਟਮ ਵਿੱਚ ਹੋਰ ਕੋਈ ਨਹੀਂ ਜਾਣਦਾ ਕਿ ਇਸਨੂੰ ਕਿਵੇਂ ਹਟਾਉਣਾ ਹੈ।

ਮਸ਼ੀਨ ਵਿੱਚ ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਚੱਲੋ ਜਿਸ ਵਿੱਚ ਸਥਿਤੀ ਬਣੀ ਸੀ: ਪ੍ਰਕਿਰਿਆ, ਲਿੰਕ, ਰੂਟ, resolver। ਹਰ ਕਦਮ ਦੱਸਦਾ ਹੈ ਕਿ ਕਲਾਇੰਟ ਸੱਚਮੁੱਚ ਗਿਆ ਜਾਂ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਟਰਮੀਨਲ ਤੋਂ ਵੱਖ ਹੋਇਆ, ਅਤੇ ਇਹ ਫ਼ਰਕ ਹੀ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਕੁਝ ਠੀਕ ਕਰਨਾ ਹੈ ਜਾਂ ਨਹੀਂ।

ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ, ਸੰਰਚਨਾ ਨਾਲ ਨਹੀਂ

ਰੂਟ ਨੂੰ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਟਰਮੀਨਲ ਖੋਲ੍ਹੋ ਅਤੇ ਪੁੱਛੋ ਕਿ ਹਾਲੇ ਕੀ ਚੱਲ ਰਿਹਾ ਹੈ। pgrep -a openconnect ਹਰ ਇੰਸਟੈਂਸ ਨੂੰ ਇਸਦੇ ਆਰਗਿਊਮੈਂਟਾਂ ਸਮੇਤ ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ, ਜੋ pid ਫ਼ਾਈਲ ਅਤੇ ਇਸਨੂੰ ਦਿੱਤੀ ਸਕ੍ਰਿਪਟ ਦਿਖਾਉਂਦਾ ਹੈ। ਜਿਸ ਪ੍ਰਕਿਰਿਆ ਦੀ ਤੁਸੀਂ ਉਮੀਦ ਨਹੀਂ ਕੀਤੀ ਸੀ ਉਹ ਫੈਂਟਮ ਸੁਰੰਗ ਨੂੰ ਕਿਸੇ ਵੀ ਲੌਗ ਨਾਲੋਂ ਤੇਜ਼ ਸਮਝਾਉਂਦੀ ਹੈ।

ਜੇ ਕੁਝ ਨਹੀਂ ਚੱਲ ਰਿਹਾ, ਤਾਂ ਲਿੰਕ ਵੇਖੋ। ip link show tun0 ਦੱਸਦਾ ਹੈ ਕਿ ਇੰਟਰਫ਼ੇਸ ਬਚਿਆ ਹੈ ਜਾਂ ਨਹੀਂ, ਅਤੇ ip route show dev tun0 ਅਜੇ ਵੀ ਇਸ ਨਾਲ ਬੱਝੇ ਰੂਟ ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ। ਫਿਰ resolver ਨੂੰ ਇਸ ਨਾਲ ਜਾਂਚੋ resolvectl status। ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨੇ ਆਉਟਪੁੱਟ ਲਿਖ ਲਓ, ਕਿਉਂਕਿ ਉਹੀ ਰਿਕਾਰਡ ਬਾਅਦ ਵਿੱਚ ਪੁਰਾਣੀ ਐਂਟਰੀ ਨੂੰ ਨਵੀਂ ਤੋਂ ਵੱਖ ਕਰਨ ਦਾ ਤਰੀਕਾ ਹੈ।

ਗਈ ਹੋਈ ਇੰਟਰਫ਼ੇਸ ਆਮ ਤੌਰ ’ਤੇ ਆਪਣੇ ਰੂਟ ਨਾਲ ਲੈ ਜਾਂਦੀ ਹੈ। ਲਿੰਕ ਤੋਂ ਬਾਅਦ ਬਚੇ ਰੂਟ ਆਮ ਤੌਰ ’ਤੇ ਦੱਸਦੇ ਹਨ ਕਿ ਪ੍ਰਕਿਰਿਆ ਅਜੇ ਜੀਵਤ ਹੈ ਜਾਂ ਦੂਜਾ ਕਲਾਇੰਟ ਡਿਵਾਈਸ ਦਾ ਮਾਲਕ ਹੈ।

ਬਦਲਾਅ ਵਾਪਸ ਕਰਨ ਵਾਲੀ ਹੈਲਪਰ ਸਕ੍ਰਿਪਟ ਹੀ ਹੈ

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 ਸਰਵਰ ਵਰਗੀ ਲੱਗਦੀ ਹੈ।

ਅਗਲੇ ਡਿਸਕਨੈਕਟ ਨੂੰ ਬੋਰਿੰਗ ਬਣਾਓ

ਸਟਾਰਟਅੱਪ ਅਤੇ ਸ਼ਟਡਾਊਨ ਵਿੱਚ pid ਫ਼ਾਈਲ ਦਾ ਮਾਰਗ ਇੱਕੋ ਜਿਹਾ ਰੱਖੋ, ਹਰ ਵਾਰ --pid-file ਦੇ ਕੇ, ਜਾਂ openconnect ਨੂੰ unit ਅਧੀਨ ਚਲਾਓ ਜਿਸਦਾ KillSignal ਤੁਹਾਡੇ ਸੰਸਕਰਣ ਦੁਆਰਾ ਦਸਤਾਵੇਜ਼ਿਤ ਸਿਗਨਲ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। ਪਹਿਲਾਂ ਫੋਰਗ੍ਰਾਊਂਡ ਵਿੱਚ ਪਰਖਣ ਨਾਲ ਹੈਲਪਰ ਵੱਲੋਂ ਛਾਪੇ ਸ਼ਟਡਾਊਨ ਸੁਨੇਹੇ ਦਿਸਦੇ ਹਨ।

ਕਨੈਕਟ ਕਰੋ, ਡਿਸਕਨੈਕਟ ਕਰੋ ਅਤੇ ਤਿੰਨ ਜਾਂਚਾਂ ਇੱਕ ਵਾਰ ਚਲਾਓ। ਸਾਫ਼ ਨਿਕਾਸ ਕੋਈ VPN ਲਿੰਕ, VPN ਰੂਟ ਜਾਂ VPN resolver ਐਂਟਰੀ ਨਹੀਂ ਛੱਡਦਾ। ਜੇ ਤਿੰਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਬਚਿਆ ਰਹਿੰਦਾ ਹੈ, ਤਾਂ ਹੁਣ ਤੁਸੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਕਿਹੜਾ ਹਿੱਸਾ ਸਫ਼ਾਈ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ। ਅਗਲੀ ਜਾਂਚ ਫਿਰ ਲਟਕਦੇ lookup ਤੋਂ ਨਹੀਂ, ਉਸੇ ਜਵਾਬ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ