ਸਿਰਫ਼ ਇੱਕ ਸਲੀਪ ਹੁੱਕ 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 ਅਜੇ ਦੁਬਾਰਾ ਜੁੜ ਰਿਹਾ ਹੋਵੇ, ਜੋ ਕਿਸੇ ਵੀ ਨਿਸ਼ਚਿਤ ਸਲੀਪ ਨੂੰ ਅੰਦਾਜ਼ਾ ਬਣਾ ਦਿੰਦਾ ਹੈ। ਪਹੁੰਚਯੋਗ ਪਤੇ ਦੀ ਉਡੀਕ ਕਰੋ, ਫਿਰ ਪ੍ਰੋਫਾਈਲ ਉੱਪਰ ਚੁੱਕੋ, ਅਤੇ ਉਡੀਕ ਨੂੰ ਸੀਮਤ ਕਰੋ ਤਾਂ ਜੋ ਹੁੱਕ ਮੁੜ ਸ਼ੁਰੂ ਹੋਣ ਦਾ ਮਾਰਗ ਬੇਅੰਤ ਖੁੱਲ੍ਹਾ ਨਾ ਰੱਖ ਸਕੇ। ਸੰਖਿਆਤਮਕ ਸੂਚਕਾਂਕ ਦੀ ਥਾਂ ਪ੍ਰੋਫਾਈਲ ਦਾ ਨਾਮ ਤਰਜੀਹ ਦਿਓ, ਅਤੇ ਜੇ ਸਹੀ ਪ੍ਰੋਫਾਈਲ ਨੈੱਟਵਰਕ ਅਨੁਸਾਰ ਬਦਲਦਾ ਹੈ, ਤਾਂ ਸਿਹਤਮੰਦ ਟਨਲ ਆਪਣੀ ਚੋਣ ਪਹਿਲਾਂ ਹੀ ਫਾਈਲ ਵਿੱਚ ਦਰਜ ਕਰੇ।
ਮੁੜ ਚਾਲੂ ਤੂਫ਼ਾਨਾਂ ਤੋਂ ਵੀ ਬਚੋ, ਕੋਸ਼ਿਸ਼ਾਂ ਗਿਣ ਕੇ ਅਤੇ ਰੁਕ ਕੇ। ਹਰ ਅਸਫਲ ਜਾਂਚ 'ਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਦੇਣ ਵਾਲਾ ਵਾਚਡੌਗ ਇੱਕ ਰੁਕਾਵਟ ਨੂੰ ਲੂਪ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।
ਇੱਕ ਵਾਰ ਸਸਪੈਂਡ ਕਰੋ, ਫਿਰ ਹੁੱਕ ਦੇ ਆਪਣੇ ਆਉਟਪੁੱਟ ਲਈ ਜਰਨਲ ਪੜ੍ਹੋ। ਕ੍ਰਮ ਸਾਬਤ ਕਰਨ ਵਾਲਾ ਇਹੀ ਇੱਕੋ ਪਰੀਖਣ ਹੈ।