ಒಂದು ದೇಶಕ್ಕಾಗಿ ನಲವತ್ತು .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

ಯಾರೂ ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದನ್ನು ನೆನಪಿಲ್ಲದ ಇನ್ಸ್ಟಾನ್ಸ್ ಸಾಮಾನ್ಯವಾಗಿ ಪ್ಯಾಕೇಜ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಅಲೆದಾಡುವ ಸಂರಚನಾ ಫೈಲ್ಗೆ ಕೊಂಡೊಯ್ಯುತ್ತದೆ. ಟೆಂಪ್ಲೇಟ್ ಬದಲು ಆ ಹೆಸರಿನ ಇನ್ಸ್ಟಾನ್ಸ್ ಅನ್ನು ಆಫ್ ಮಾಡಿ, ಇಲ್ಲದಿದ್ದರೆ ಮುಂದಿನ ಪ್ಯಾಕೇಜ್ ಅಪ್ಗ್ರೇಡ್ ಅದನ್ನು ಮತ್ತೆ ತರುತ್ತದೆ. ಬದಲಾವಣೆಯ ನಂತರ ಯುನಿಟ್ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಜರ್ನಲ್ ವರದಿ ಮಾಡುವ ಆದೇಶ ಸಾಲನ್ನು ಓದಿ, ನಂತರ ಅದು ನಿಜವಾಗಿ ತೆರೆದ ಸಂರಚನಾ ಮಾರ್ಗವನ್ನು ಖಚಿತಪಡಿಸಿ. ಆ ಒಂದು ಪರಿಶೀಲನೆ ಕೆಲಸ ಮಾಡುವ ಯಾದೃಚ್ಛಿಕ ಆಯ್ಕೆಯನ್ನು ಕಳೆದ ತಿಂಗಳ ಫೈಲ್ ಅನ್ನು ಸದ್ದಿಲ್ಲದೆ ಮರುಬಳಕೆ ಮಾಡುತ್ತಿರುವ ಸೇವೆಯಿಂದ ಬೇರ್ಪಡಿಸುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು