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

ਲੱਛਣ: ਸ਼ੁਰੂ ਹੋ ਕੇ ਤੁਰੰਤ ਮਰਨ ਵਾਲੀ ਯੂਨਿਟ

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

ਜਰਨਲ ਤੋਂ ਸਹੀ ਹੁਕਮ ਲਾਈਨ ਪੜ੍ਹਨਾ ਇਸ ਦੀ ਪੁਸ਼ਟੀ ਦਾ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕਾ ਹੈ। systemd ਉਹੀ ਦੁਹਰਾਉਂਦਾ ਹੈ ਜੋ ਉਸ ਨੇ ਚਲਾਇਆ, ਅਤੇ ਸਟ੍ਰਿੰਗ ਪਾਈਪਲਾਈਨ ਦੇ ਅੱਖਰਾਂ ਨੂੰ ਆਪਰੇਟਰ ਵਜੋਂ ਨਹੀਂ, ਸਗੋਂ ਸ਼ਬਦੀ ਆਰਗਿਊਮੈਂਟ ਵਜੋਂ ਦਿਖਾਏਗੀ।

ExecStart ਪਾਈਪਲਾਈਨ ਕਿਉਂ ਨਹੀਂ ਚਲਾ ਸਕਦਾ

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

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

ਚੋਣ ExecStartPre ਵਿੱਚ ਕਰੋ

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

[Service]
Type=notify
ExecStartPre=/bin/bash -c "ls /etc/openvpn/profiles/au* | shuf -n 1 | xargs -r -I{} cp -f {} /etc/openvpn/%i.conf"
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/%i.conf

ਤਿੰਨ ਵੇਰਵੇ ਤੈਅ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਅਸਲ ਮਸ਼ੀਨ ਨਾਲ ਸੰਪਰਕ ਵਿੱਚ ਟਿਕੇਗਾ ਜਾਂ ਨਹੀਂ। ਨਾਮਕਰਨ ਪਹਿਲਾ ਜਾਲ ਹੈ: systemd ਯੂਨਿਟ ਪਾਰਸ ਕਰਦਿਆਂ ਹੀ, bash ਚੱਲਣ ਤੋਂ ਬਹੁਤ ਪਹਿਲਾਂ, %i ਬਦਲਦਾ ਹੈ, ਇਸ ਲਈ ਸਪੈਸੀਫਾਇਰ ਇੱਕੋ ਹਵਾਲਾ ਚਿੰਨ੍ਹਾਂ ਤੋਂ ਬਾਹਰ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ। ਗਲੋਬ ਕਿਸੇ ਚੀਜ਼ ਨਾਲ ਨਾ ਮਿਲਣ ’ਤੇ xargs -r cp ਨੂੰ ਆਰਗਿਊਮੈਂਟ ਤੋਂ ਬਿਨਾਂ ਚੱਲਣ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਅਤੇ ਫੇਲ੍ਹ ਤਿਆਰੀ ਕਦਮ ਯੂਨਿਟ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਅਤੇ ਇਹੀ ਸਹੀ ਨਤੀਜਾ ਹੈ: ਕੱਲ੍ਹ ਦੀ ਸੰਰਚਨਾ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ ਸ਼ੁਰੂ ਨਾ ਕਰਨ ਨਾਲੋਂ ਮਾੜਾ ਹੈ। ਜੋ ਬੇਤਰਤੀਬ ਚੋਣ ਹਮੇਸ਼ਾ ਇੱਕੋ ਫ਼ਾਈਲ ਲੈਂਦੀ ਹੈ ਉਹ ਆਮ ਤੌਰ ’ਤੇ ਬਦਕਿਸਮਤੀ ਨਹੀਂ ਹੁੰਦੀ। ਜਾਂਚੋ ਕਿ ਕਾਪੀ ਕੀਤੀ ਫ਼ਾਈਲ ਪੈਕੇਜ ਅਪਡੇਟ ਨਾਲ ਉੱਤੇ ਲਿਖੀ ਜਾ ਰਹੀ ਹੈ ਜਾਂ ਨਹੀਂ, ਜਾਂ ਗਲੋਬ ਸਿਰਫ਼ ਇੱਕ ਪੁਰਾਣੀ ਐਂਟਰੀ ਨਾਲ ਮਿਲ ਰਿਹਾ ਹੈ।

ਜਾਂ OpenVPN ਨੂੰ ਐਂਡਪੌਇੰਟ ਚੁਣਨ ਦਿਓ

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

client
remote-random
<connection>
remote au1.example.net 1194 udp
</connection>
<connection>
remote au2.example.net 1194 udp
</connection>

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

ਵਰਤੀ ਗਈ ਇੰਸਟੈਂਸ ਅਤੇ ਫ਼ਾਈਲ ਦੁਬਾਰਾ ਪੜ੍ਹੋ

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

systemctl list-units 'openvpn*'
systemctl cat [email protected]
journalctl -u openvpn@au -n 30 --no-pager

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

ਸੰਬੰਧਿਤ ਲੇਖ