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

ਸਫਲ ਸ਼ੁਰੂਆਤ ਤੋਂ ਕੁਝ ਸਕਿੰਟ ਬਾਅਦ ਯੂਨਿਟ ਨਿਸ਼ਕਿਰਿਆ ਕਿਉਂ ਹੋ ਜਾਂਦੀ ਹੈ

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

ਨੈੱਟਵਰਕ ਕਨਫਿਗਰੇਸ਼ਨ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਕਲਾਇੰਟ ਦੇ ਵਿਵਹਾਰ ਨਾਲ ਯੂਨਿਟ ਦੀ ਕਿਸਮ ਪੜ੍ਹੋ।

ਉਹ ਕਿਸਮ ਚੁਣੋ ਜੋ ਕਲਾਇੰਟ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ

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

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect

oneshot ਅਤੇ RemainAfterExit=true ਨਾਲ ਕਮਾਂਡ ਵਾਪਸ ਆਉਣ ਤੋਂ ਬਾਅਦ ਵੀ ਯੂਨਿਟ ਸਰਗਰਮ ਰਹਿੰਦੀ ਹੈ, ਜੋ ਕਨਫਿਗਰ ਕਰੋ ਅਤੇ ਬਾਹਰ ਜਾਓ ਪੈਟਰਨ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ, ਅਤੇ ਸਟਾਪ ਕਮਾਂਡ ਸੇਵਾ ਨੂੰ ਸਾਫ਼ ਬੰਦ ਕਰਦੀ ਹੈ। ਫੋਰਕ ਕਰਨ ਵਾਲਾ ਕਲਾਇੰਟ ਉਹੀ ਆਕਾਰ ਰੱਖਦਾ ਹੈ ਪਰ ਉਸਨੂੰ Type=forking ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਜੋ systemd ਸੰਤਾਨ ਦਾ ਪਿੱਛਾ ਕਰੇ। Restart=on-failure, RestartSec=30 ਅਤੇ ਸੀਮਿਤ StartLimitBurst ਸੈਟ ਕਰੋ, ਤਾਂ ਜੋ ਪ੍ਰਦਾਤਾ ਦੀ ਰੁਕਾਵਟ ਤਰੁੱਟੀ ਨੂੰ ਦੱਬਣ ਵਾਲੇ ਰੀਸਟਾਰਟ ਲੂਪ ਵਿੱਚ ਨਾ ਬਦਲੇ।

ਨਿਗਰਾਨੀ ਹੇਠਲੇ ਕਲਾਇੰਟ ਨੂੰ ਕਦੇ ਡੈਮਨ ਨਾ ਬਣਨ ਦਿਓ

systemd ਤੋਂ ਬਾਹਰਲੇ ਨਿਗਰਾਨ ਉਸੇ ਕੰਧ ਨਾਲ ਟਕਰਾਉਂਦੇ ਹਨ। ਡੈਮਨ ਬਣੇ ਕਲਾਇੰਟ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਵਾਲੀ runit ਰਨ ਸਕ੍ਰਿਪਟ ਤੁਰੰਤ ਨਿਗਰਾਨ ਕੋਲ ਵਾਪਸ ਆ ਜਾਂਦੀ ਹੈ, ਜੋ ਉਸ ਵਾਪਸੀ ਨੂੰ ਕ੍ਰੈਸ਼ ਪੜ੍ਹ ਕੇ ਇੱਕ ਹੋਰ ਕਾਪੀ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦਾ ਹੈ। ਹਰ ਨਿਗਰਾਨ ਅੱਗੇ ਵਾਲੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਮਾਲਕੀ ਦੀ ਆਸ ਰੱਖਦਾ ਹੈ, ਜਿਵੇਂ sshd -D ਅੱਗੇ ਰਹਿੰਦਾ ਹੈ। ਨਿਗਰਾਨੀ ਹੇਠਲੀਆਂ ਕਮਾਂਡਾਂ ਲਈ ਡੈਮਨ ਫਲੈਗ ਹਟਾਓ ਅਤੇ ਪਿਛੋਕੜ ਦਾ ਕੰਮ ਨਿਗਰਾਨ ਨੂੰ ਦਿਓ। ਜੋ ਲਪੇਟਣ ਵਾਲੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਟਨਲ ਬਣਨ ਤੋਂ ਪਹਿਲਾਂ ਵਾਪਸ ਆਉਂਦੀਆਂ ਹਨ, ਉਹ ਵੀ ਉਹੀ ਉਲਝਣ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ।

ਆਪਣੇ ਆਪ ਨੂੰ ਵੱਖ ਕਰਨ ਵਾਲੀ ਪ੍ਰਕਿਰਿਆ ਉਸ ਸਭ ਲਈ ਅਦਿੱਖ ਹੁੰਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉਸ 'ਤੇ ਨਜ਼ਰ ਰੱਖਣੀ ਸੀ।

ਸੈਸ਼ਨ ਖ਼ਤਮ ਹੁੰਦਾ ਹੈ ਅਤੇ ਟਨਲ ਨੂੰ ਨਾਲ ਲੈ ਜਾਂਦਾ ਹੈ

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

ਸੇਵਾ ਵਰਤੋਂਕਾਰ ਉਸੇ ਸਮੱਸਿਆ ਦਾ ਦੂਜਾ ਅੱਧਾ ਹਿੱਸਾ ਹੈ। root ਦੀ ਮਾਲਕੀ ਵਾਲੀ ਅਤੇ ਮੋਡ 0600 ਵਾਲੀ ਕੁੰਜੀ ਦੂਜੇ ਖਾਤੇ ਹੇਠ ਚੱਲਣ ਵਾਲੀ ਯੂਨਿਟ ਲਈ ਅਪੜ੍ਹਨਯੋਗ ਹੈ, ਤੁਹਾਡੇ ਸ਼ੈਲ ਵਿੱਚ sudo ਨੇ ਜੋ ਵੀ ਹਾਸਲ ਕੀਤਾ ਹੋਵੇ।

systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -ls

ਪਤਾ ਬਣਨ ਤੋਂ ਬਾਅਦ ਨਿਰਭਰ ਯੂਨਿਟਾਂ ਨੂੰ ਕ੍ਰਮ ਵਿੱਚ ਰੱਖੋ

ਜਦੋਂ ਡੈਮਨ ਅਜੇ ਨਾ ਬਣੇ ਟਨਲ ਪਤੇ ਨਾਲ ਬੱਝਦਾ ਹੈ, ਤਾਂ ਇਹ Cannot assign requested address ਨਾਲ ਬਾਹਰ ਜਾਂਦਾ ਹੈ। ਸੁਧਾਰ ਸਪਸ਼ਟ ਕ੍ਰਮਬੱਧਤਾ ਹੈ, ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਦਾ ਲੂਪ ਨਹੀਂ।

[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.device

After= ਕੰਮਾਂ ਨੂੰ ਕ੍ਰਮ ਵਿੱਚ ਰੱਖਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਡਿਵਾਈਸ ਯੂਨਿਟ 'ਤੇ Requires= ਨਿਰਭਰ ਨੂੰ ਇੰਟਰਫੇਸ ਦੀ ਹੋਂਦ ਨਾਲ ਬੰਨ੍ਹਦਾ ਹੈ, ਜੋ ਕੇਵਲ ਨੈੱਟਵਰਕ ਟਾਰਗੇਟ ਦੀ ਉਡੀਕ ਨਾਲੋਂ ਵਧੇਰੇ ਮਜ਼ਬੂਤ ਹੈ। ਸੰਪਾਦਨ ਤੋਂ ਬਾਅਦ ਮੈਨੇਜਰ ਦੁਬਾਰਾ ਲੋਡ ਕਰੋ ਅਤੇ ਨਿਰਭਰ ਸੇਵਾ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰੋ, ਫਿਰ ਕ੍ਰਮ ਚੱਲਿਆ ਮੰਨਣ ਦੀ ਬਜਾਏ ਇਸਦਾ ਜਰਨਲ ਪੜ੍ਹੋ। ਕਲਾਇੰਟ ਦਾ ਆਉਟਪੁੱਟ StandardOutput=journal ਜਾਂ ਲੌਗ ਵਿਕਲਪ ਨਾਲ ਜਰਨਲ ਵਿੱਚ ਭੇਜੋ, ਕਿਉਂਕਿ ਜੋ ਨਿਗਰਾਨੀ ਹੇਠਲਾ ਕਲਾਇੰਟ ਅਜਿਹੀ ਫਾਈਲ ਵਿੱਚ ਲਿਖਦਾ ਹੈ ਜਿਸਨੂੰ ਕੋਈ ਨਹੀਂ ਖੋਲ੍ਹਦਾ, ਉਹ ਕਦੇ ਸ਼ੁਰੂ ਨਾ ਹੋਏ ਕਲਾਇੰਟ ਵਰਗਾ ਹੀ ਦਿਸਦਾ ਹੈ।

ਫਿਰ ਇੱਕ ਵਾਰ ਰੀਬੂਟ ਕਰੋ ਅਤੇ ਟਨਲ ਡਿਵਾਈਸ ਦਿਖਣ ਤੋਂ ਬਾਅਦ ਯੂਨਿਟ ਸਰਗਰਮ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। ਸਿਰਫ਼ systemctl start ਨਾਲ ਜਾਂਚਿਆ ਸੁਧਾਰ ਉਸ ਬੂਟ ਕ੍ਰਮ ਦੀ ਪਰਖ ਨਹੀਂ ਕੀਤੀ ਜੋ ਠੀਕ ਕਰਨਾ ਸੀ।

ਸੰਬੰਧਿਤ ਲੇਖ