ਕੀ OpenVPN ਹੁੱਕ ਸਕ੍ਰਿਪਟ ਉਹ ਟਨਲ ਵਰਤ ਸਕਦੀ ਹੈ ਜੋ ਉਸ ਨੇ ਹੁਣੇ ਬਣਾਈ ਹੈ?
OpenVPN ਆਪਣੇ ਹੀ ਸਟਾਰਟਅੱਪ ਦੇ ਅੰਦਰ ਹੁੱਕ ਚਲਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਟਨਲ ਦੀ ਲੋੜ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਉਸ ਟਨਲ ਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ ਜੋ ਉਸਦੀ ਉਡੀਕ ਕਰ ਰਹੀ ਹੈ। ਕੰਮ ਨੂੰ ਵੱਖ ਕਰੋ ਅਤੇ ਘਟਨਾ ਅਨੁਸਾਰ ਹੁੱਕ ਚੁਣੋ।
ਹੁੱਕ ਸਕ੍ਰਿਪਟ ਟਨਲ ਦੇ ਦੂਜੇ ਪਾਸੇ ਪਹੁੰਚਦੀ ਹੈ ਜਾਂ ਨਹੀਂ, ਇਹ ਤਿੰਨ ਸ਼ਰਤਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ: ਇਹ ਕਿਸ ਘਟਨਾ ਨਾਲ ਜੁੜੀ ਹੈ, ਸਕ੍ਰਿਪਟ ਚੱਲਦੇ ਸਮੇਂ OpenVPN ਅਜੇ ਆਪਣੇ ਸਟਾਰਟਅੱਪ ਕ੍ਰਮ ਦੇ ਅੰਦਰ ਹੈ ਜਾਂ ਨਹੀਂ, ਅਤੇ ਕੰਮ ਉਸ ਕ੍ਰਮ ਤੋਂ ਵੱਖ ਕੀਤਾ ਗਿਆ ਹੈ ਜਾਂ ਨਹੀਂ। ਬਹੁਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਤੀਜੀ ਸ਼ਰਤ 'ਤੇ ਫੇਲ੍ਹ ਹੁੰਦੀਆਂ ਹਨ। ਨੀਂਦ ਜੋੜਨਾ ਜੀਵਨ ਚੱਕਰ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਸਮੇਂ ਦੀ ਸਮੱਸਿਆ ਮੰਨਦਾ ਹੈ, ਅਤੇ ਇਹ ਗੁੰਮਰਾਹ ਕਰਨ ਲਈ ਕਾਫ਼ੀ ਵਾਰ ਕੰਮ ਕਰਦਾ ਹੈ।
ਪਹਿਲਾਂ ਘਟਨਾ ਤੈਅ ਕਰੋ, ਫਿਰ ਕੰਮ ਟਾਲਣ ਦਾ ਤਰੀਕਾ, ਫਿਰ ਉਹ ਥਾਂ ਜਿੱਥੇ ਟਾਲਿਆ ਕੰਮ ਚੱਲਦਾ ਹੈ। ਇਹ ਤਿੰਨ ਫੈਸਲੇ ਸੁਤੰਤਰ ਹਨ, ਅਤੇ ਇਨ੍ਹਾਂ ਨੂੰ ਮਿਲਾਉਣਾ ਹੀ ਦੋ ਲਾਈਨਾਂ ਦੀ ਹੁੱਕ ਨੂੰ ਪੂਰੀ ਦੁਪਹਿਰ ਬਣਾਉਣ ਦਾ ਤਰੀਕਾ ਹੈ।
ਹੁੱਕ ਉਸ ਟਨਲ ਦੀ ਉਡੀਕ ਕਿਉਂ ਕਰਦੀ ਹੈ ਜੋ ਉਸਦੀ ਉਡੀਕ ਕਰ ਰਹੀ ਹੈ
OpenVPN ਆਪਣੀਆਂ ਹੁੱਕਾਂ ਨੂੰ ਸਮਕਾਲੀ ਢੰਗ ਨਾਲ ਬੁਲਾਉਂਦਾ ਹੈ, ਪੈਕਟ ਸਰਕਾਉਣ ਵਾਲੀ ਉਸੇ ਪ੍ਰਕਿਰਿਆ ਦੇ ਅੰਦਰ। tun ਜਾਂ tap ਜੰਤਰ ਹੋਣ 'ਤੇ ਪਰ ਕੋਈ ਵੀ ਰਸਤਾ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ up ਸਰਗਰਮ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਰਸਤਿਆਂ ਤੋਂ ਬਾਅਦ route-up ਸਰਗਰਮ ਹੁੰਦਾ ਹੈ; ਇਹਨਾਂ ਦੋਵਾਂ ਪਲਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਇਹ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦਾ ਕਿ ਸਾਹਮਣਾ ਧਿਰ ਜਵਾਬ ਦੇਵੇਗੀ। ਜਦੋਂ ਤੱਕ ਕਿਸੇ ਵੀ ਹੁੱਕ ਦੀ ਸਕ੍ਰਿਪਟ ਚੱਲ ਰਹੀ ਹੈ, ਡੈਮਨ ਅੱਗੇ ਨਹੀਂ ਭੇਜ ਰਿਹਾ ਹੁੰਦਾ, ਇਸ ਲਈ ਜੋ ਹੁਕਮ ਟਨਲ ਰਾਹੀਂ ਟ੍ਰੈਫਿਕ ਲੰਘਣ ਦੀ ਆਸ ਰੱਖਦਾ ਹੈ ਉਹ ਉਸ ਟਨਲ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ ਜੋ ਉਸ ਹੁਕਮ ਦੀ ਉਡੀਕ ਕਰ ਰਹੀ ਹੈ। ਇਹ ਗੋਲ ਉਡੀਕ ਹੀ ਹੱਥ ਨਾਲ ਚਲਾਉਣ 'ਤੇ ਸਫਲਤਾ ਅਤੇ ਹੁੱਕ ਦਾ ਸਮਾਂ ਖਤਮ ਹੋਣ ਦਾ ਕਾਰਨ ਹੈ।
ਸਪਸ਼ਟ ਉਪਾਅ, ਯਾਨੀ ਕੁਝ ਸਕਿੰਟ ਨੀਂਦ, ਕਦੇ-ਕਦੇ ਕੰਮ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਦੂਰ ਵਾਲਾ ਸਿਰਾ ਆਪਣੇ ਆਪ ਉੱਪਰ ਆ ਗਿਆ, ਇਸ ਲਈ ਨਹੀਂ ਕਿ ਨੀਂਦ ਨੇ ਕੁਝ ਠੀਕ ਕੀਤਾ। ਤਿਆਰੀ ਪੁੱਛਣ ਵਾਲਾ ਸਹਾਇਕ ਵੱਖਰਾ ਜਵਾਬ ਹੈ: ਹੁੱਕ ਵਾਪਸ ਆਉਂਦੀ ਹੈ, ਅੱਗੇ ਭੇਜਣਾ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਸਹਾਇਕ ਨੂੰ ਲੋੜੀਂਦੀ ਚੀਜ਼ ਤਦ ਮਿਲਦੀ ਹੈ ਜਦੋਂ ਉਹ ਸੱਚਮੁੱਚ ਮੌਜੂਦ ਹੁੰਦੀ ਹੈ।
ਸਹੂਲਤ ਨਾਲ ਨਹੀਂ, ਘਟਨਾ ਨਾਲ ਹੁੱਕ ਚੁਣੋ
ਸਿਰਫ਼ ਜੰਤਰ ਲੋੜੀਂਦੇ ਕੰਮ ਨਾਲ up ਜੋੜੋ, ਰਸਤੇ ਲੋੜੀਂਦੇ ਕੰਮ ਨਾਲ route-up, ਅਤੇ client-connect ਤੇ client-disconnect ਰੱਖੋ ਸਰਵਰ ਪਾਸੇ ਹਰ ਕਲਾਇੰਟ ਦੇ ਕੰਮਾਂ ਲਈ। ਡਿਸਕਨੈਕਟ 'ਤੇ ਸਫਾਈ ਦੋ ਵਾਰ ਚੱਲਣਾ ਸਹਿਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਕਿਉਂਕਿ ਸਥਿਰ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਮੁੜ ਜੁੜਨਾ ਪੂਰੇ ਰੀਸਟਾਰਟ ਵਰਗਾ ਕ੍ਰਮ ਨਹੀਂ ਅਪਣਾਉਂਦਾ। ਸਰਵਰ 'ਤੇ, ਡੈਮਨ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਨਹੀਂ ਬਲਕਿ ਕਲਾਇੰਟ ਪ੍ਰਮਾਣਿਤ ਹੋਣ 'ਤੇ client-connect ਸਰਗਰਮ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਉੱਥੇ ਤਰਕ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਪੁਸ਼ਟੀ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਕੰਮ ਇਕੱਲੇ ਕਨੈਕਸ਼ਨ ਦੀ ਥਾਂ ਸੇਵਾ ਦੇ ਜੀਵਨ ਚੱਕਰ ਦਾ ਹੈ, ਤਾਂ systemd ਇਕਾਈ ਕਿਸੇ ਵੀ ਹੁੱਕ ਨਾਲੋਂ ਵਧੀਆ ਥਾਂ ਹੈ।
ਹੁੱਕ ਹੁਕਮ ਡੈਮਨ ਸਿੱਧਾ ਚਲਾਉਂਦਾ ਹੈ, ਵਿਚਕਾਰ ਕੋਈ ਸ਼ੈੱਲ ਨਹੀਂ, ਇਸ ਲਈ up ਲਾਈਨ ਵਿੱਚ ifconfig_remote ਸ਼ਬਦੀ ਪਾਠ ਵਜੋਂ ਆਉਂਦਾ ਹੈ। ਹੁਕਮ ਨੂੰ ਸਪਸ਼ਟ ਸ਼ੈੱਲ ਵਿੱਚ ਲਪੇਟੋ, ਜਾਂ ਤਰਕ ਨੂੰ ਵਾਤਾਵਰਨ ਪੜ੍ਹਨ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਰੱਖੋ। ipchange ਆਪਣੇ ਤਰਕ ਜੋੜਨ ਵਾਲਾ ਇੱਕ ਨਿਰਦੇਸ਼ ਹੈ: ਇਹ ਹੁਕਮ ਨੂੰ ਪਤਾ ਅਤੇ ਪੋਰਟ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਕਿਸੇ ਲਈ ਵੀ ਨਾ ਲਿਖੀ ਸਕ੍ਰਿਪਟ ਦੋ ਅਣਕਿਆਸੇ ਤਰਕ ਦੇਖਦੀ ਹੈ।
ਕੰਮ ਵੱਖ ਕਰਨ ਦੇ ਤਿੰਨ ਤਰੀਕੇ
ਪਹਿਲਾ ਵਿਕਲਪ ਹੁੱਕ ਦੇ ਅੰਦਰੋਂ ਸਹਾਇਕ ਨੂੰ ਪਿਛੋਕੜ ਵਿੱਚ ਭੇਜਣਾ ਹੈ: ਇਸਨੂੰ setsid ਜਾਂ systemd-run --scope ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ, ਵਿਰਾਸਤੀ ਡਿਸਕ੍ਰਿਪਟਰ ਬੰਦ ਕਰੋ, ਅਤੇ ਤੁਰੰਤ ਜ਼ੀਰੋ ਨਾਲ ਬਾਹਰ ਨਿਕਲੋ। ਦੂਜਾ ਇਹ ਹੈ ਕਿ ਹੁੱਕ ਇੱਕ ਛੋਟੀ ਸਥਿਤੀ ਫਾਈਲ ਲਿਖੇ ਅਤੇ systemd ਟਾਈਮਰ ਜਾਂ ਪਾਥ ਇਕਾਈ ਉਸ 'ਤੇ ਕੰਮ ਕਰੇ, ਜੋ ਹੁੱਕ ਨੂੰ ਸਧਾਰਨ ਰੱਖਦਾ ਹੈ ਅਤੇ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਨੀਤੀ ਨੂੰ ਉੱਥੇ ਰੱਖਦਾ ਹੈ ਜਿੱਥੇ ਲੌਗ ਹਨ। ਤੀਜਾ ਇਹ ਹੈ ਕਿ ਹੁੱਕ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਛੱਡ ਕੇ ਕੰਮ ਨੂੰ VPN ਸੇਵਾ ਤੋਂ ਬਾਅਦ ਕ੍ਰਮਬੱਧ ਇਕਾਈ ਵਿੱਚ ਭੇਜਣਾ, ਜੋ ਸਹੀ ਜਵਾਬ ਹੈ ਜਦੋਂ ਕੰਮ ਬਿਲਕੁਲ ਵੀ ਪ੍ਰਤੀ-ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ। ਤਿੰਨੇ ਇੱਕ ਨਿਯਮ ਸਾਂਝਾ ਕਰਦੇ ਹਨ: ਟਨਲ ਦੀ ਲੋੜ ਤੋਂ ਪਹਿਲਾਂ ਹੁੱਕ ਨੂੰ ਵਾਪਸ ਆਉਣਾ ਚਾਹੀਦਾ ਹੈ।
ਜੋ ਵੀ ਚੁਣੋ, ਸਹਾਇਕ ਨੂੰ ਇਡੈਂਪੋਟੈਂਟ ਅਤੇ ਨਿਰੀਖਣਯੋਗ ਬਣਾਓ। ਦੋ ਓਵਰਲੈਪਿੰਗ ਸੱਦੇ ਇੱਕੋ ਨਾ-ਬਦਲਣਯੋਗ ਕਿਰਿਆ ਦੋ ਵਾਰ ਨਹੀਂ ਚਲਾਉਣੇ ਚਾਹੀਦੇ, ਅਤੇ ਫੇਲ੍ਹ ਹੋਣ ਵਾਲੇ ਸਹਾਇਕ ਨੂੰ ਮਨੁੱਖ ਦੇ ਪੜ੍ਹਨ ਯੋਗ ਕੁਝ ਛੱਡਣਾ ਚਾਹੀਦਾ ਹੈ।
ਸੈਂਡਬਾਕਸ ਫੇਲ੍ਹਤਾਵਾਂ ਨੂੰ ਜੀਵਨ ਚੱਕਰ ਫੇਲ੍ਹਤਾਵਾਂ ਤੋਂ ਵੱਖ ਕਰੋ
ਜਦੋਂ ਸਕ੍ਰਿਪਟ root ਪ੍ਰਾਂਪਟ ਤੋਂ ਚੱਲਦੀ ਹੈ ਅਤੇ ਸੇਵਾ ਵਜੋਂ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਕਾਰਨ ਆਮ ਤੌਰ 'ਤੇ ਨੈੱਟਵਰਕ ਨਹੀਂ ਬਲਕਿ ਸੈਂਡਬਾਕਸ ਹੁੰਦਾ ਹੈ। ਪਾਬੰਦੀਸ਼ੁਦਾ ProtectHome, ਸਿਰਫ਼-ਪੜ੍ਹਨ ਯੋਗ ProtectSystem, ਜਾਂ ਉਹ ਕਾਰਜ ਡਾਇਰੈਕਟਰੀ ਜੋ ਮੌਜੂਦ ਨਹੀਂ ਸਕ੍ਰਿਪਟ ਜਾਂ ਇਸਦੇ ਡੇਟਾ ਨੂੰ ਪਹੁੰਚ ਤੋਂ ਬਾਹਰ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ SELinux ਹੋਸਟ 'ਤੇ ਫਾਈਲ ਨੂੰ ਚੱਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਲਾ ਸੰਦਰਭ ਵੀ ਚਾਹੀਦਾ ਹੈ। systemctl cat openvpn-server@server ਨਾਲ ਇਕਾਈ ਅਤੇ journalctl -u openvpn-server@server -n 80 ਨਾਲ ਜਰਨਲ ਪੜ੍ਹੋ, ਫਿਰ ਕਨੈਕਸ਼ਨ ਟਾਈਮਆਊਟ ਦੀ ਥਾਂ ਇਜਾਜ਼ਤ ਜਾਂ ਸੰਦਰਭ ਗਲਤੀ ਲੱਭੋ। ਸੈਂਡਬਾਕਸ ਬੰਦ ਕਰਨਾ ਪਹਿਲਾ ਨਹੀਂ, ਆਖਰੀ ਕਦਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
ਜੀਵਨ ਚੱਕਰ ਫੇਲ੍ਹਤਾ ਵੱਖਰੀ ਦਿਸਦੀ ਹੈ: ਹੁੱਕ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਸਹਾਇਕ ਚੱਲਦਾ ਹੈ, ਅਤੇ ਸਾਕਟ ਹਾਲੇ ਉੱਥੇ ਨਹੀਂ। ਹੁੱਕ ਤੋਂ ਹੀ ਟਾਈਮਸਟੈਂਪ ਵਾਲੀ ਲਾਈਨ ਲਿਖੋ, ਡਿਸਕਨੈਕਟ ਕਰਕੇ ਮੁੜ ਜੁੜੋ, ਅਤੇ ਘਟਨਾਵਾਂ ਕ੍ਰਮ ਵਿੱਚ ਪੜ੍ਹੋ। ਜੇ ਸਹਾਇਕ ਨੂੰ ਸੱਚਮੁੱਚ ਟਨਲ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਨਿਸ਼ਚਿਤ ਸਮਾਂ ਸੌਣ ਦੀ ਥਾਂ ਤਿਆਰੀ ਪੁੱਛਣ ਦਿਓ।
ਤਿੰਨ ਖੇਤਰ ਅਗਲੀ ਰਿਪੋਰਟ ਨੂੰ ਲਾਹੇਵੰਦ ਬਣਾਉਂਦੇ ਹਨ: ਕਿਹੜੀ ਹੁੱਕ ਚੱਲੀ, ਕਿਹੜਾ ਖਾਤਾ ਵਰਤਿਆ, ਅਤੇ ਕਿੱਥੇ ਰੁਕੀ। ਇਹਨਾਂ ਤੋਂ ਬਿਨਾਂ ਹਰ ਅਗਲੀ ਜਾਂਚ ਸ਼ੁਰੂ ਤੋਂ ਹੁੰਦੀ ਹੈ।