wg-quick ਇੰਟਰਫ਼ੇਸ ਬੰਦ ਕਰਨ ’ਤੇ wg0.conf ਨੂੰ ਦੁਬਾਰਾ ਕਿਉਂ ਲਿਖਦਾ ਹੈ
SaveConfig ਬੰਦ ਕਰਨ ਵੇਲੇ ਦੀ ਸੰਭਾਲ ਹੈ, ਬੈਕਗਰਾਊਂਡ ਸਿੰਕ ਨਹੀਂ। ਟਨਲ ਚਾਲੂ ਹੋਣ ਵੇਲੇ ਫ਼ਾਈਲ ਸੋਧੋ, ਅਤੇ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਪੁਰਾਣੀ ਹਾਲਤ ਉੱਤੇ ਲਿਖ ਸਕਦਾ ਹੈ।
ਤੁਸੀਂ /etc/wireguard/wg0.conf ਵਿੱਚ ਇੱਕ ਪੀਅਰ ਜੋੜਦੇ ਹੋ, systemctl restart wg-quick@wg0 ਚਲਾਉਂਦੇ ਹੋ, ਅਤੇ ਦੁਬਾਰਾ ਵੇਖਣ ’ਤੇ ਪੀਅਰ ਫ਼ਾਈਲ ਵਿੱਚੋਂ ਗ਼ਾਇਬ ਹੈ। ਕਿਸੇ ਨੇ ਕੁਝ ਵੀ ਖ਼ਰਾਬ ਨਹੀਂ ਕੀਤਾ। ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਬੰਦ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸ਼ੁਰੂ ਹੋਣਾ ਹੈ, ਅਤੇ ਬੰਦ ਹੋਣ ਦਾ ਕਦਮ ਹੁਣੇ ਸੋਧੀ ਗਈ ਫ਼ਾਈਲ ਉੱਤੇ ਮੌਜੂਦਾ ਰਨਟਾਈਮ ਹਾਲਤ ਲਿਖ ਸਕਦਾ ਹੈ। ਜ਼ਿੰਮੇਵਾਰ ਸੈਟਿੰਗ ਉਸੇ ਫ਼ਾਈਲ ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੋਧ ਰਹੇ ਸੀ, ਅਤੇ ਇਹੀ ਇਸ ਲੂਪ ਨੂੰ ਪਹਿਲੀ ਵਾਰ ਮਿਲਣ ’ਤੇ ਇੰਨਾ ਉਲਝਣ ਭਰਿਆ ਬਣਾਉਂਦਾ ਹੈ।
ਦੋ ਹਾਲਤਾਂ, ਇੱਕ ਫ਼ਾਈਲ ਅਤੇ ਬੰਦ ਕਰਨ ਵੇਲੇ ਦੀ ਸੰਭਾਲ
WireGuard ਦੀ ਰਨਟਾਈਮ ਹਾਲਤ ਅਤੇ wg-quick ਸੰਰਚਨਾ ਫ਼ਾਈਲ ਸੰਬੰਧਿਤ ਹਨ ਪਰ ਵੱਖਰੀਆਂ ਹਨ। ਫ਼ਾਈਲ ਇਨਪੁਟ ਹੈ: wg-quick ਇਸ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ, ਇੰਟਰਫ਼ੇਸ ਬਣਾਉਂਦਾ ਹੈ, ਪਤੇ ਅਤੇ ਰੂਟ ਸੈੱਟ ਕਰਦਾ ਹੈ ਅਤੇ ਪੀਅਰ ਸੰਰਚਿਤ ਕਰਦਾ ਹੈ। ਕਰਨਲ ਡਿਵਾਈਸ ਜੀਵਤ ਵਸਤੂ ਹੈ, ਅਤੇ wg ਨਾਲ ਕੀਤੀਆਂ ਨੀਵੀਂ ਪੱਧਰ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਕਦੇ ਆਪਣੇ ਆਪ ਵਾਪਸ ਨਹੀਂ ਲਿਖੀਆਂ ਜਾਂਦੀਆਂ।
ਇੱਕ ਦਿਸ਼ਾ ਨੂੰ ਛੱਡ ਕੇ। ਜਦੋਂ ਇੰਟਰਫ਼ੇਸ ਭਾਗ ਵਿੱਚ SaveConfig = true ਹੁੰਦਾ ਹੈ, wg-quick ਇੰਟਰਫ਼ੇਸ ਹੇਠਾਂ ਲਾਹੁਣ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਜੀਵਤ ਸੰਰਚਨਾ ਫ਼ਾਈਲ ਵਿੱਚ ਸੰਭਾਲਦਾ ਹੈ। wg-quick ਮੈਨੂਅਲ ਠੀਕ ਇਸੇ ਬਾਰੇ ਚੇਤਾਵਨੀ ਦਿੰਦਾ ਹੈ: ਇੰਟਰਫ਼ੇਸ ਚਾਲੂ ਰਹਿੰਦਿਆਂ ਫ਼ਾਈਲ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਨੂੰ ਹਟਾਉਣ ਵੇਲੇ ਉੱਤੇ ਲਿਖੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਬੰਦ ਕਰਨ ਵੇਲੇ ਦੀ ਸੰਭਾਲ ਹੈ, ਬੈਕਗਰਾਊਂਡ ਟਾਈਮਰ ਨਹੀਂ, ਇਸ ਲਈ ਇਹ ਤਦ ਹੀ ਚੱਲਦੀ ਹੈ ਜਦੋਂ ਕੁਝ ਇੰਟਰਫ਼ੇਸ ਬੰਦ ਕਰਦਾ ਹੈ।
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
ਸਾਰਣੀ ਨੂੰ ਕ੍ਰਮ ਬਾਰੇ ਚੇਤਾਵਨੀ ਵਜੋਂ ਪੜ੍ਹੋ। ਇਸ ਖੇਤਰ ਵਿੱਚ ਹਰ ਅਚਾਨਕ ਨੁਕਸਾਨ ਸੰਭਾਲ ਤੋਂ ਬਾਅਦ ਨਹੀਂ, ਸੰਭਾਲ ਤੋਂ ਪਹਿਲਾਂ ਹੋਈ ਸੋਧ ਤੋਂ ਆਉਂਦਾ ਹੈ।
ਪਹਿਲਾਂ ਬੰਦ ਕਰੋ, ਦੂਜਾ ਸੋਧੋ, ਆਖ਼ਰ ਵਿੱਚ ਸ਼ੁਰੂ ਕਰੋ
ਜੇ ਫ਼ਾਈਲ ਤੁਹਾਡਾ ਸੱਚ ਦਾ ਸਰੋਤ ਹੈ, ਤਾਂ ਆਸ ਨਾਲ ਨਹੀਂ, ਬਣਾਵਟ ਨਾਲ ਫ਼ਾਈਲ ਨੂੰ ਅਧਿਕਾਰਤ ਬਣਾਓ। ਇੰਟਰਫ਼ੇਸ ਹੇਠਾਂ ਲਾਹੋ, ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਇਹ ਗਿਆ, ਫਿਰ ਸੋਧੋ, ਫਿਰ ਇਸ ਨੂੰ ਮੁੜ ਉੱਪਰ ਲਿਆਓ। ਨਿਯਮ ਸਧਾਰਨ ਹੈ: ਜਿੰਨਾ ਚਿਰ ਸੰਭਾਲ ਚੱਲ ਸਕਦੀ ਹੈ, ਕੋਈ ਸੋਧ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ।
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
ਬੈਕਅਪ ਲਾਈਨ ਸਿਰਫ਼ ਰਸਮ ਨਹੀਂ ਹੈ। ਜੇ ਟਨਲ ਇਸ ਮਸ਼ੀਨ ਤੱਕ ਪਹੁੰਚਣ ਦਾ ਤੁਹਾਡਾ ਰਾਹ ਹੈ, ਤਾਂ ਹੇਠਾਂ ਲਾਹੁਣ ਦਾ ਕਦਮ ਤੁਹਾਡਾ ਸੈਸ਼ਨ ਖ਼ਤਮ ਕਰ ਸਕਦਾ ਹੈ, ਅਤੇ ਡਿਸਕ ਉੱਤੇ ਕਾਪੀ ਨਾਲ ਕੰਸੋਲ ਜਾਂ ਆਊਟ-ਆਫ਼-ਬੈਂਡ ਰਾਹ ਹੀ ਇੱਕੋ ਕੰਮ ਕਰਨ ਵਾਲਾ ਰੋਲਬੈਕ ਹੈ। ਦੂਜੀ ਲਾਈਨ ਉੱਤੇ ਭਰੋਸਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸ ਨੂੰ ਜਾਂਚੋ: ਚੁੱਪਚਾਪ ਫੇਲ੍ਹ ਹੋਣ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਪੁਰਾਣਾ ਇੰਟਰਫ਼ੇਸ ਨਾਮ ਹੀ ਉਹ ਤਰੀਕਾ ਹੈ ਜਿਸ ਨਾਲ ਲੋਕ ਅਜੇ ਜੀਵਤ ਫ਼ਾਈਲ ਸੋਧਦੇ ਹਨ।
ਆਮ ਤੌਰ ’ਤੇ ਹੇਠਾਂ ਲਾਹੁਣ ਤੋਂ ਪਹਿਲਾਂ SaveConfig = false ਸੈੱਟ ਕਰਨਾ ਦੂਜਾ ਸਵੀਕਾਰਯੋਗ ਰਾਹ ਹੈ, ਅਤੇ ਇਹ wg-quick ਅਸਲ ਵਿੱਚ ਜਿਸ ਫ਼ਾਈਲ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ ਉਸੇ ਵਿੱਚ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਉਸ ਇੱਕ ਆਟੋਮੈਟਿਕ ਸੰਭਾਲ ਨੂੰ ਰੋਕਦਾ ਹੈ। ਇਹ ਵੱਖਰੇ NetworkManager ਪਰੋਫ਼ਾਈਲ, ਰਾਊਟਰ ਐਕਸਪੋਰਟ ਜਾਂ ਕੰਟੇਨਰ ਐਂਟਰੀਪੁਆਇੰਟ ਨੂੰ ਤੁਹਾਡੀਆਂ ਸੋਧਾਂ ਮੁੜ ਲੋਡ ਕਰਨ ਲਈ ਮਜਬੂਰ ਨਹੀਂ ਕਰਦਾ, ਕਿਉਂਕਿ ਉਹ ਪ੍ਰਬੰਧਕ ਇਸ ਫ਼ਾਈਲ ਨੂੰ ਬਿਲਕੁਲ ਨਹੀਂ ਪੜ੍ਹਦੇ।
ਇੰਟਰਫ਼ੇਸ ਪਾੜੇ ਬਿਨਾਂ ਪੀਅਰ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ
ਹਰ ਸੋਧ ਲਈ ਰੁਕਾਵਟ ਲਾਜ਼ਮੀ ਨਹੀਂ। ਫ਼ਾਈਲ ਨੂੰ ਸੰਰਚਨਾ ਵਿੱਚ ਬਦਲ ਕੇ ਸਿੰਕ ਕਰਕੇ ਚੱਲ ਰਹੇ ਇੰਟਰਫ਼ੇਸ ਉੱਤੇ ਪੀਅਰ-ਪੱਧਰ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ, ਜੋ ਹੇਠਾਂ ਲਾਹੁਣ ਦਾ ਕਦਮ ਪੂਰੀ ਤਰ੍ਹਾਂ ਟਾਲਦਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਸੰਭਾਲ ਵੀ ਟਾਲਦਾ ਹੈ:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip ਕਦਮ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਸਿਰਫ਼ wg-quick ਦੀਆਂ ਚਾਬੀਆਂ ਹਟਾ ਕੇ ਫ਼ਾਈਲ ਛਾਪਦਾ ਹੈ, ਤਾਂ ਜੋ ਪਤੇ, DNS ਅਤੇ ਰਾਊਟਿੰਗ ਹਿਦਾਇਤਾਂ ਉਸ ਸਾਧਨ ਵਿੱਚ ਨਾ ਜਾਣ ਜੋ ਉਨ੍ਹਾਂ ਨੂੰ ਨਹੀਂ ਸਮਝਦਾ। ਫਿਰ ਸਿੰਕ ਇੰਟਰਫ਼ੇਸ ਮੁੜ ਬਣਾਏ ਬਿਨਾਂ ਪੀਅਰ ਅਤੇ ਚਾਬੀਆਂ ਜੀਵਤ ਡਿਵਾਈਸ ਉੱਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਅਤੇ ਰੂਟ ਬਚੇ ਰਹਿੰਦੇ ਹਨ।
ਹੱਦਾਂ ਬਾਰੇ ਸਟੀਕ ਰਹੋ। ਪੀਅਰ ਸਿੰਕ ਕਰਨ ਨਾਲ ਇੰਟਰਫ਼ੇਸ ਦਾ ਪਤਾ, wg-quick ਵੱਲੋਂ ਜੋੜੇ ਰੂਟ ਜਾਂ ਰਿਜ਼ੌਲਵਰ ਸੰਰਚਨਾ ਨਹੀਂ ਬਦਲਦੀ, ਕਿਉਂਕਿ ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ WireGuard ਡਿਵਾਈਸ ਦਾ ਨਹੀਂ ਹੈ। AllowedIPs ਵਿੱਚ ਸਬਨੈੱਟ ਜੋੜ ਕੇ ਕਰਨਲ ਦੇ ਇਸ ਨੂੰ ਰੂਟ ਕਰਨ ਦੀ ਆਸ ਰੱਖਣਾ ਆਮ ਗ਼ਲਤ ਪੜ੍ਹਤ ਹੈ; ਰੂਟ wg-quick ਵੱਲੋਂ ਉੱਪਰ ਲਿਆਉਣ ਵੇਲੇ ਜਾਂ ਤੁਹਾਨੂੰ ਜੋੜਨਾ ਪਵੇਗਾ।
ਕੁਝ ਵੀ ਸੋਧਣ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚੋ ਕਿ ਇੰਟਰਫ਼ੇਸ ਕਿਸਦਾ ਹੈ
ਸੰਰਚਨਾ ਸਿਸਟਮ ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਡੈਸਕਟਾਪ ਜਾਂ ਸਰਵਰ ਉੱਤੇ ਫ਼ਾਈਲ ਇਨਪੁਟ ਦੀ ਥਾਂ ਆਊਟਪੁਟ ਹੋ ਸਕਦੀ ਹੈ। NetworkManager ਕਨੈਕਸ਼ਨ, ਰਾਊਟਰ ਵੱਲੋਂ ਬਣਾਇਆ ਪਰੋਫ਼ਾਈਲ ਜਾਂ ਕੰਟੇਨਰ ਸਟਾਰਟਅਪ ਸਕ੍ਰਿਪਟ ਸਾਰੇ ਇੱਕੋ ਇੰਟਰਫ਼ੇਸ ਨਾਮ ਦੇ ਮਾਲਕ ਹੋ ਸਕਦੇ ਹਨ, ਅਤੇ ਉਸ ਹਾਲਤ ਵਿੱਚ ਨਿਰਦੋਸ਼ wg-quick ਕ੍ਰਮ ਵੀ ਗ਼ਲਤ ਚੀਜ਼ ਹੀ ਸੋਧਦਾ ਹੈ।
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
ਤੀਜਾ ਕਮਾਂਡ ਜੀਵਤ ਸੰਰਚਨਾ ਨੂੰ ਫ਼ਾਈਲ ਵਰਗੇ ਹੀ ਫਾਰਮੈਟ ਵਿੱਚ ਛਾਪਦਾ ਹੈ, ਨਿੱਜੀ ਚਾਬੀ ਸਮੇਤ, ਜੋ ਤੁਲਨਾ ਲਈ ਲਾਹੇਵੰਦ ਅਤੇ ਟਿਕਟ ਵਿੱਚ ਖ਼ਤਰਨਾਕ ਹੈ। ਚਿਪਕਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਸ ਨੂੰ ਧੁੰਧਲਾ ਕਰੋ; ਸਹਾਇਤਾ ਥ੍ਰੈੱਡ ਵਿੱਚ ਨਿੱਜੀ ਚਾਬੀ ਸਥਾਈ ਸਮਝੌਤਾ ਹੈ, ਟਾਈਪੋ ਨਹੀਂ।
ਜੇ ਸੇਵਾ ਇਕਾਈ ਅਕਿਰਿਆਸ਼ੀਲ ਹੈ ਪਰ ਇੰਟਰਫ਼ੇਸ ਮੌਜੂਦ ਹੈ, ਤਾਂ ਕਿਸੇ ਹੋਰ ਨੇ ਇਸ ਨੂੰ ਬਣਾਇਆ ਹੈ ਅਤੇ ਫ਼ਾਈਲ ਅਧਿਕਾਰਤ ਨਹੀਂ ਹੈ। ਉਹ ਇੱਕ ਨਿਰੀਖਣ ਕੁਝ ਨਾ ਪੜ੍ਹਨ ਵਾਲੀ ਫ਼ਾਈਲ ਸੋਧਣ ਦਾ ਇੱਕ ਘੰਟਾ ਬਚਾਉਂਦਾ ਹੈ।
ਅਗਲਾ ਮੁੜ ਸ਼ੁਰੂ ਜਾਂਚੋ, ਫਿਰ ਰੋਲਬੈਕ ਰੱਖੋ
ਜੋ ਪਰਖ ਸੱਚਮੁੱਚ ਸੁਧਾਰ ਸਾਬਤ ਕਰਦੀ ਹੈ ਉਹ ਦੂਜਾ ਮੁੜ ਸ਼ੁਰੂ ਹੈ, ਕਿਉਂਕਿ ਪਹਿਲੀ ਵਾਰ ਫੇਲ੍ਹ ਹੋਇਆ ਕ੍ਰਮ ਉਹੀ ਸੀ। ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਪੀਅਰ ਇਸ ਤੋਂ ਬਚਦਾ ਹੈ ਅਤੇ ਜੀਵਤ ਸੰਰਚਨਾ ਅਜੇ ਵੀ ਡਿਸਕ ਉੱਤੇ ਮੌਜੂਦ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
ਮੁੜ ਸ਼ੁਰੂ ਦੋ ਵਾਰ ਚਲਾਓ। ਇੱਕ ਵਾਰ ਸਾਫ਼ ਨਿਕਲਣਾ ਕਿਸਮਤ ਹੋ ਸਕਦਾ ਹੈ: ਪਹਿਲਾ ਮੁੜ ਸ਼ੁਰੂ ਅਜੇ ਸੰਭਾਲਿਆ ਨਾ ਗਿਆ ਰਨਟਾਈਮ ਬਦਲਾਅ ਖ਼ਪਤ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਦੂਜਾ ਹੀ ਤੁਹਾਨੂੰ ਦੱਸਦਾ ਹੈ ਕਿ ਪਹਿਲੇ ਦੇ ਅੰਤ ਵਿੱਚ ਫ਼ਾਈਲ ਅਤੇ ਰਨਟਾਈਮ ਸਹਿਮਤ ਸਨ।
ਪ੍ਰਕਿਰਿਆ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਦੋਹਰਾ ਮੁੜ ਸ਼ੁਰੂ ਪੂਰਾ ਹੋਣ ਤੱਕ ਬੈਕਅਪ ਰੱਖੋ, ਫਿਰ ਇਸ ਨੂੰ ਮਿਟਾਓ ਜਾਂ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਤੋਂ ਬਾਹਰ ਲੈ ਜਾਓ। ਅਸਲ ਫ਼ਾਈਲ ਦੇ ਕੋਲ ਪਈ wg0.conf.bak wg-quick ਲਈ ਨੁਕਸਾਨਦੇਹ ਨਹੀਂ ਹੈ ਅਤੇ ਅਗਲੇ ਵਿਅਕਤੀ ਲਈ ਉਲਝਾਉਣ ਵਾਲੀ ਹੈ, ਜੋ ਆਖ਼ਰ ਵਿੱਚ ਗ਼ਲਤ ਨੂੰ ਸੋਧੇਗਾ।