wg-quick ಇಂಟರ್ಫೇಸ್ ನಿಲ್ಲಿಸಿದಾಗ wg0.conf ಅನ್ನು ಮತ್ತೆ ಏಕೆ ಬರೆಯುತ್ತದೆ
SaveConfig ಎಂಬುದು ಆಫ್ ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಉಳಿಸುವಿಕೆ, ಹಿನ್ನೆಲೆ ಸಿಂಕ್ ಅಲ್ಲ. ಸುರಂಗ ಸಕ್ರಿಯವಾಗಿರುವಾಗ ಫೈಲ್ ಸಂಪಾದಿಸಿ, ಮತ್ತು ಮರುಪ್ರಾರಂಭ ಹಳೆಯ ಸ್ಥಿತಿಯನ್ನು ಅದರ ಮೇಲೆ ಬರೆಯಬಹುದು.
ನೀವು /etc/wireguard/wg0.conf ಗೆ peer ಸೇರಿಸುತ್ತೀರಿ, systemctl restart wg-quick@wg0 ಚಲಾಯಿಸುತ್ತೀರಿ, ಮತ್ತು ಮತ್ತೆ ನೋಡಿದಾಗ peer ಫೈಲ್ನಿಂದ ಕಾಣೆಯಾಗಿದೆ. ಯಾವುದೂ ಯಾವುದನ್ನೂ ಹಾಳುಮಾಡಿಲ್ಲ. ಮರುಪ್ರಾರಂಭ ಎಂದರೆ ನಿಲ್ಲಿಸುವಿಕೆಯ ನಂತರ ಆರಂಭ, ಮತ್ತು ನಿಲ್ಲಿಸುವ ಹಂತವು ಪ್ರಸ್ತುತ ರನ್ಟೈಮ್ ಸ್ಥಿತಿಯನ್ನು ನೀವು ಈಗಷ್ಟೇ ಸಂಪಾದಿಸಿದ ಫೈಲ್ನ ಮೇಲೆ ಬರೆಯಬಹುದು. ಜವಾಬ್ದಾರಿಯ ಸೆಟ್ಟಿಂಗ್ ನೀವು ಸಂಪಾದಿಸುತ್ತಿದ್ದ ಅದೇ ಫೈಲ್ನಲ್ಲಿದೆ, ಮತ್ತು ಅದೇ ಈ ಲೂಪ್ ಅನ್ನು ಮೊದಲ ಬಾರಿ ಎದುರಿಸಿದಾಗ ಇಷ್ಟು ಗೊಂದಲಮಯವಾಗಿಸುತ್ತದೆ.
ಎರಡು ಸ್ಥಿತಿಗಳು, ಒಂದು ಫೈಲ್ ಮತ್ತು ಆಫ್ ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಉಳಿಸುವಿಕೆ
WireGuard ನ ರನ್ಟೈಮ್ ಸ್ಥಿತಿ ಮತ್ತು wg-quick ಸಂರಚನಾ ಫೈಲ್ ಸಂಬಂಧಿಸಿವೆ ಆದರೆ ವಿಭಿನ್ನ. ಫೈಲ್ ಇನ್ಪುಟ್: wg-quick ಅದನ್ನು ಓದುತ್ತದೆ, ಇಂಟರ್ಫೇಸ್ ರಚಿಸುತ್ತದೆ, ವಿಳಾಸಗಳು ಮತ್ತು ಮಾರ್ಗಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು peer ಗಳನ್ನು ಸಂರಚಿಸುತ್ತದೆ. ಕರ್ನಲ್ ಸಾಧನವು ಜೀವಂತ ವಸ್ತು, ಮತ್ತು 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 ಪ್ರೊಫೈಲ್, ರೌಟರ್ ರಫ್ತು ಅಥವಾ ಕಂಟೇನರ್ ಎಂಟ್ರಿಪಾಯಿಂಟ್ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಮರುಲೋಡ್ ಮಾಡುವಂತೆ ಮಾಡುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಆ ನಿರ್ವಾಹಕರು ಈ ಫೈಲ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಓದುವುದಿಲ್ಲ.
ಇಂಟರ್ಫೇಸ್ ಹರಿದುಹೋಗದೆ peer ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ
ಪ್ರತಿ ಸಂಪಾದನೆಗೂ ಅಡಚಣೆ ಬೇಕಿಲ್ಲ. ಫೈಲ್ ಅನ್ನು ಸಂರಚನೆಯಾಗಿ ಪರಿವರ್ತಿಸಿ ಸಿಂಕ್ ಮಾಡುವ ಮೂಲಕ ಚಾಲನೆಯಲ್ಲಿರುವ ಇಂಟರ್ಫೇಸ್ಗೆ peer ಮಟ್ಟದ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಬಹುದು, ಇದು ಕೆಳಗಿಳಿಸುವ ಹಂತವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತಪ್ಪಿಸುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಉಳಿಸುವಿಕೆಯನ್ನೂ ತಪ್ಪಿಸುತ್ತದೆ:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip ಹಂತ ಮುಖ್ಯ. ಅದು ಕೇವಲ wg-quick ಗೆ ಸೇರಿದ ಕೀಗಳನ್ನು ತೆಗೆದು ಫೈಲ್ ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ, ಇದರಿಂದ ವಿಳಾಸಗಳು, DNS ಮತ್ತು ರೂಟಿಂಗ್ ಸೂಚನೆಗಳು ಅವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳದ ಸಾಧನಕ್ಕೆ ಹೋಗುವುದಿಲ್ಲ. ನಂತರ ಸಿಂಕ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮರುರಚಿಸದೆ peer ಗಳು ಮತ್ತು ಕೀಗಳನ್ನು ಜೀವಂತ ಸಾಧನಕ್ಕೆ ಅನ್ವಯಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಇರುವ ಸೆಷನ್ಗಳು ಮತ್ತು ಮಾರ್ಗಗಳು ಉಳಿಯುತ್ತವೆ.
ಮಿತಿಗಳ ಬಗ್ಗೆ ನಿಖರವಾಗಿರಿ. peer ಸಿಂಕ್ ಮಾಡುವುದು ಇಂಟರ್ಫೇಸ್ ವಿಳಾಸ, 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
ಮೂರನೇ ಆಜ್ಞೆ ಜೀವಂತ ಸಂರಚನೆಯನ್ನು ಫೈಲ್ನಂತೆಯೇ ಸ್ವರೂಪದಲ್ಲಿ ಮುದ್ರಿಸುತ್ತದೆ, ಖಾಸಗಿ ಕೀ ಸೇರಿದಂತೆ, ಇದು ಹೋಲಿಕೆಗೆ ಉಪಯುಕ್ತ ಮತ್ತು ಟಿಕೆಟ್ನಲ್ಲಿ ಅಪಾಯಕಾರಿ. ಅಂಟಿಸುವ ಮೊದಲು ಅದನ್ನು ಮರೆಮಾಡಿ; ಬೆಂಬಲ ಥ್ರೆಡ್ನಲ್ಲಿ ಖಾಸಗಿ ಕೀ ಶಾಶ್ವತ ರಾಜಿಯಾಗುವಿಕೆ, ಟೈಪೊ ಅಲ್ಲ.
ಸೇವಾ ಘಟಕ ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದರೂ ಇಂಟರ್ಫೇಸ್ ಇದ್ದರೆ, ಬೇರೆ ಯಾವುದೋ ಅದನ್ನು ರಚಿಸಿದೆ ಮತ್ತು ಫೈಲ್ ಅಧಿಕೃತವಲ್ಲ. ಆ ಒಂದು ಅವಲೋಕನವು ಯಾವುದೂ ಓದದ ಫೈಲ್ ಅನ್ನು ಸಂಪಾದಿಸುವ ಒಂದು ಗಂಟೆಯನ್ನು ಉಳಿಸುತ್ತದೆ.
ಮುಂದಿನ ಮರುಪ್ರಾರಂಭವನ್ನು ಪರಿಶೀಲಿಸಿ, ನಂತರ ರೋಲ್ಬ್ಯಾಕ್ ಇಟ್ಟುಕೊಳ್ಳಿ
ಸರಿಪಡಿಸುವಿಕೆಯನ್ನು ನಿಜವಾಗಿ ಸಾಬೀತುಪಡಿಸುವ ಪರೀಕ್ಷೆ ಎರಡನೇ ಮರುಪ್ರಾರಂಭ, ಏಕೆಂದರೆ ಮೊದಲ ಬಾರಿ ವಿಫಲವಾದದ್ದು ಅದೇ ಕ್ರಮ. peer ಅದನ್ನು ಉಳಿದುಕೊಂಡಿದೆ ಮತ್ತು ಜೀವಂತ ಸಂರಚನೆ ಇನ್ನೂ ಡಿಸ್ಕ್ನಲ್ಲಿರುವುದಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ:
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 ಗೆ ಹಾನಿಕರವಲ್ಲ ಮತ್ತು ಮುಂದಿನ ವ್ಯಕ್ತಿಗೆ ಗೊಂದಲಮಯ, ಅವರು ಕೊನೆಗೆ ತಪ್ಪಾದದನ್ನು ಸಂಪಾದಿಸುತ್ತಾರೆ.