ਜਦੋਂ ਲੈਪਟਾਪ ਪਹਿਲਾਂ ਹੀ ਉਸ ਨੈੱਟਵਰਕ 'ਤੇ ਹੋਵੇ ਤਾਂ ਘਰ ਦੇ ਨੈੱਟਵਰਕ ਦੇ VPN ਕੋਲ ਕਰਨ ਲਈ ਕੁਝ ਨਹੀਂ ਹੁੰਦਾ। ਲੁਭਾਉਣ ਵਾਲਾ ਸ਼ਾਰਟਕੱਟ ਉਹ ਤਿਆਰੀ ਕਮਾਂਡ ਹੈ ਜੋ ਗੈਰ-ਜ਼ੀਰੋ ਕੋਡ ਨਾਲ ਬਾਹਰ ਨਿਕਲਦੀ ਹੈ; ਇਹ ਯੂਨਿਟ ਨੂੰ ਫੇਲ੍ਹ ਕਰ ਦਿੰਦੀ ਹੈ ਅਤੇ ਹਰ ਡੈਸ਼ਬੋਰਡ ਟੁੱਟਿਆ ਦਿਖਦਾ ਹੈ। systemd ਕੋਲ ਠੀਕ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਫੈਸਲੇ ਲਈ ਇੱਕ ਨਿਰਦੇਸ਼ ਹੈ, ਅਤੇ ਇਹ ਜਾਣ-ਬੁੱਝ ਕੇ ਛੱਡਣ ਨੂੰ ਅਸਲੀ ਖਰਾਬੀ ਤੋਂ ਵੱਖ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ ਸਹੀ ਕਰਨਾ ਮੁੱਖ ਤੌਰ 'ਤੇ ਇਹ ਲਿਖਣਾ ਹੈ ਕਿ ਹਰ ਐਗਜ਼ਿਟ ਕੋਡ ਦਾ ਕੀ ਅਰਥ ਹੈ।

ਫੇਲ੍ਹ ਹੋਣ ਵਾਲੀ ਪੂਰਵ-ਸ਼ਰਤ ਗਲਤ ਰੂਪ ਕਿਉਂ ਹੈ

ExecStartPre ਗੈਰ-ਜ਼ੀਰੋ ਐਗਜ਼ਿਟ ਨੂੰ ਸਟਾਰਟਅਪ ਫੇਲ੍ਹਤਾ ਮੰਨਦਾ ਹੈ, ਜੋ ਸੇਵਾ ਤਿਆਰ ਕਰਨ ਵਾਲੀ ਕਮਾਂਡ ਲਈ ਸਹੀ ਹੈ। ਇਸਨੂੰ ਸ਼ਰਤ ਵਜੋਂ ਵਰਤਣਾ ਨੀਤੀ ਦੇ ਫੈਸਲੇ ਨੂੰ ਟੁੱਟੀ ਨਿਰਭਰਤਾ ਤੋਂ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ। ExecCondition ਇਸ ਲਈ ਹੈ ਕਿ ਯੂਨਿਟ ਫੇਲ੍ਹ ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਹੋਏ ਬਿਨਾਂ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਇਨਕਾਰ ਕਰ ਸਕੇ।

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

ਪਹਿਲਾਂ ਐਗਜ਼ਿਟ-ਕੋਡ ਸਮਝੌਤਾ ਲਿਖੋ

ਸਕ੍ਰਿਪਟ ਤੋਂ ਪਹਿਲਾਂ ਸਮਝੌਤਾ ਲਿਖੋ। ਜ਼ੀਰੋ ਐਗਜ਼ਿਟ ਦਾ ਅਰਥ ਹੈ ਜਾਰੀ ਰੱਖਣਾ, ਇੱਕ ਐਗਜ਼ਿਟ ਦਾ ਅਰਥ ਹੈ ਬਾਕੀ ਸਟਾਰਟ ਕਮਾਂਡਾਂ ਛੱਡਣਾ, ਅਤੇ 255 ਐਗਜ਼ਿਟ ਦਾ ਅਰਥ ਹੈ ਕਿ ਸ਼ਰਤ ਆਪ ਨਹੀਂ ਚੱਲ ਸਕੀ। ਦੋ ਅਤੇ 254 ਵਿਚਕਾਰ ਕੋਡ ਵੀ ਆਮ ਤੌਰ 'ਤੇ ਛੱਡਣ ਦਾ ਅਰਥ ਦਿੰਦੇ ਹਨ, ਜੋ ਹੈਲਪਰ ਵੱਲੋਂ ਕੋਈ ਬੇਤਰਤੀਬ ਗਲਤੀ ਕੋਡ ਦੇਣ 'ਤੇ ਭੁੱਲਣਾ ਸੌਖਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤਾ drop-in ਹੈਲਪਰ ਨੂੰ ਯੂਨਿਟ ਦੇ ਅਸਲੀ ਨਾਮ ਨਾਲ ਜੋੜਦਾ ਹੈ।

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

ਡਿਫੌਲਟ ਅਰਥ ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰਭਾਵੀ ਯੂਨਿਟ ਵਿੱਚ ਵਿਰਾਸਤੀ SuccessExitStatus ਜਾਂ stop-post ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ। ਫਿਰ ਤਿੰਨਾਂ ਨਤੀਜਿਆਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਜਾਂਚੋ।

ਨੈੱਟਵਰਕ ਸੰਕੇਤ ਸਥਾਨ ਦਾ ਸਬੂਤ ਨਹੀਂ

ਪਹੁੰਚਯੋਗ ਰਾਊਟਰ ਪਤਾ ਜਾਂ ਜਾਣਿਆ-ਪਛਾਣਿਆ MAC ਸਹੀ ਨੈੱਟਵਰਕ ਦਾ ਸੰਕੇਤ ਦੇ ਸਕਦਾ ਹੈ, ਅਤੇ ਦੋਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਇਸਨੂੰ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ। ਦੂਜਾ ਨੈੱਟਵਰਕ ਉਹੀ ਪਤਾ ਦੁਬਾਰਾ ਵਰਤ ਸਕਦਾ ਹੈ, ARP ਡੇਟਾ ਪੁਰਾਣਾ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਪਛਾਣਕਰਤਾਵਾਂ ਦੀ ਨਕਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਜਾਂਚ ਨੂੰ ਨੀਤੀ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਅਨੁਕੂਲਣ ਮੰਨੋ, ਪ੍ਰਮਾਣਿਕਤਾ ਦਾ ਨਤੀਜਾ ਨਹੀਂ।

ਅਨਿਸ਼ਚਿਤਤਾ ਦਾ ਅਰਥ ਪਹਿਲਾਂ ਹੀ ਤੈਅ ਕਰੋ। ਸ਼ੱਕ ਹੋਣ 'ਤੇ VPN ਸ਼ੁਰੂ ਕਰਨਾ ਅਜਿਹੇ ਕਲਾਇੰਟ ਲਈ ਸੁਰੱਖਿਅਤ ਹੈ ਜੋ ਬੱਸ ਜੁੜ ਨਹੀਂ ਸਕਦਾ; ਸ਼ੱਕ ਹੋਣ 'ਤੇ ਇਸਨੂੰ ਛੱਡਣਾ ਸੁਰੱਖਿਅਤ ਨਹੀਂ। ਜਾਂਚ ਨੂੰ ਸੀਮਿਤ ਰੱਖੋ, ਅਤੇ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੇ ਨੂੰ ਮੰਨਣ ਦੀ ਥਾਂ ਸਰਗਰਮ ਇੰਟਰਫ਼ੇਸ ਪੜ੍ਹੋ। ਜੋ ਜਾਂਚ ਅਟਕ ਜਾਂਦੀ ਹੈ ਉਹ “ਨਹੀਂ” ਆਖਣ ਵਾਲੀ ਜਾਂਚ ਤੋਂ ਮਾੜੀ ਹੈ, ਕਿਉਂਕਿ ਯੂਨਿਟ ਉਸਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ।

ਉਹ ਧਾਰਨਾਵਾਂ ਯੂਨਿਟ ਫਾਈਲ ਦੇ ਕੋਲ ਦਰਜ ਕਰੋ ਤਾਂ ਜੋ ਅਗਲਾ ਵਿਅਕਤੀ ਜਾਣ ਸਕੇ ਕਿ ਹੈਲਪਰ ਕੀ ਮੰਨਦਾ ਹੈ। ਸਕ੍ਰਿਪਟ ਦੇ ਸਿਖਰ 'ਤੇ ਟਿੱਪਣੀ ਉਹਨਾਂ ਨੂੰ ਰੱਖਣ ਦੀ ਸਭ ਤੋਂ ਸਸਤੀ ਥਾਂ ਹੈ।

ਨੈੱਟਵਰਕਾਂ ਵਿਚਕਾਰ ਬਦਲਾਅ ਸੰਭਾਲੋ

ਸ਼ਰਤ ਸੇਵਾ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਚੱਲਦੀ ਹੈ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਮੁਲਾਂਕਣ ਨਹੀਂ ਕਰਦੀ। ਲੈਪਟਾਪ ਦੇ ਕੈਫੇ ਜਾਣ ਤੋਂ ਬਾਅਦ ਵੀ ਛੱਡੀ ਗਈ ਯੂਨਿਟ ਛੱਡੀ ਹੋਈ ਹੀ ਰਹਿੰਦੀ ਹੈ, ਅਤੇ ਲੈਪਟਾਪ ਦੇ ਘਰ ਵਾਪਸ ਆਉਣ ਤੋਂ ਬਾਅਦ ਵੀ ਚੱਲ ਰਹੀ ਸੁਰੰਗ ਉੱਪਰ ਹੀ ਰਹਿੰਦੀ ਹੈ। ਨੈੱਟਵਰਕ ਬਦਲਾਅ ਦੇ ਜੀਵਨ ਚੱਕਰ ਨੂੰ ਵੱਖਰੀ ਵਿਧੀ ਰਾਹੀਂ ਸ਼ੁਰੂ ਅਤੇ ਬੰਦ ਦੇ ਫੈਸਲੇ ਨਾਲ ਜੋੜੋ।

systemctl cat home-vpn.service

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

ਸੰਬੰਧਿਤ ਲੇਖ