ಒಂದು ಲ್ಯಾಬ್ ಸರ್ವರ್, ಮೂರು ವಿಶ್ವಾಸ ಪಾತ್ರಗಳು, ಒಂದು ವಿಫಲತೆ ಡೊಮೇನ್
VPN ಪ್ರವೇಶ, ಖಾಸಗಿ ಸೇವೆಗಳು ಮತ್ತು CI ಕೆಲಸಗಳಿಗೆ ಒಂದೇ ಸರ್ವರ್ನಲ್ಲೂ ಪ್ರತ್ಯೇಕ ಹಕ್ಕುಗಳು ಬೇಕು. ಪಾತ್ರಗಳನ್ನು ಬೇರ್ಪಡಿಸಿ, ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಿ, ಕನ್ಸೋಲ್ ಮರುಪಡೆಯುವಿಕೆಯನ್ನು ಉಳಿಸಿ.
ಬಿಲ್ಡ್ ರನ್ನರ್ಗೆ VPN ಅತಿಥಿ ಬಳಸುವ ಅದೇ ಹೋಸ್ಟ್ ಸಾಕೆಟ್ ಬೇಕಾಗುವವರೆಗೆ ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಆಗ ಒಂದು ಕೆಲಸ ಏಕೆ ಗೇಟ್ವೇಯ ಕೀಗಳನ್ನು ಓದಬಲ್ಲದು ಎಂದು ಯಾರೂ ವಿವರಿಸಲಾರರು. ಎಲ್ಲವೂ ಒಂದೇ ಯಂತ್ರದಲ್ಲಿ ಸ್ಥಾಪಿಸಲ್ಪಟ್ಟಿತು ಏಕೆಂದರೆ ಅದು ಹೊಂದಿಕೊಂಡಿತು, ಮತ್ತು ಪ್ರತಿ ಅತಿಥಿಗೆ ವಿಶಾಲ ಪ್ರವೇಶ ನೀಡಲಾಯಿತು ಏಕೆಂದರೆ ಅದನ್ನು ಕೆಲಸ ಮಾಡಿಸುವ ಅತ್ಯಂತ ವೇಗದ ದಾರಿ ಅದೇ ಆಗಿತ್ತು. ಫಲಿತಾಂಶವೆಂದರೆ ವಿಶ್ವಾಸದ ಗಡಿ ವಿದ್ಯುತ್ ಕೇಬಲ್ ಆಗಿರುವ ಹೋಸ್ಟ್. ಪಾತ್ರಗಳನ್ನು ಬೇರ್ಪಡಿಸುವುದು ಕೇಳಿಸುವುದಕ್ಕಿಂತ ಕಡಿಮೆ ಕೆಲಸ, ಮತ್ತು ಅದು ಅವುಗಳಿಗೆ ಹೆಸರು ನೀಡುವುದರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.
ಈಗ ಎಲ್ಲವನ್ನೂ ಹಂಚಿಕೊಳ್ಳುವ ಮೂರು ಪಾತ್ರಗಳು
VPN ಪ್ರವೇಶ, ಖಾಸಗಿ ಸೇವೆಗಳ ಗುಂಪು ಮತ್ತು ಬಿಲ್ಡ್ ರನ್ನರ್ ಬೇರೆ ಬೇರೆ ವಸ್ತುಗಳನ್ನು ಬಯಸುತ್ತವೆ. ಮೊದಲನೆಯದಕ್ಕೆ ಸಾರ್ವಜನಿಕ ಪೋರ್ಟ್ ಮತ್ತು ಖಾಸಗಿ ಬದಿಯಲ್ಲಿ ಸಂಕುಚಿತ ನೆಟ್ವರ್ಕ್ ಬೇಕು. ಎರಡನೆಯದಕ್ಕೆ ಶಾಶ್ವತ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ರಹಸ್ಯಗಳು ಬೇಕು. ಮೂರನೆಯದು ಬೇರೆ ಯಾರೋ ಬರೆದ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ.
ಮೂರೂ ಒಂದೇ ಪ್ರವೇಶ ಪಡೆಯುವುದೇ ಲಕ್ಷಣವನ್ನು ಗೊಂದಲಮಯವಾಗಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಆಗ ಅವುಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಉಳಿದವುಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಹೈಪರ್ವೈಸರ್ ಸಾಕೆಟ್ ತಲುಪಬಲ್ಲ ಬಿಲ್ಡ್ ಕೆಲಸವು VPN ಅನ್ನು ನಿಲ್ಲಿಸಬಲ್ಲ ಕೆಲಸ. ನಿರ್ವಹಣಾ ನೆಟ್ವರ್ಕ್ಗೆ ಮಾರ್ಗವಿರುವ ಸೇವಾ ಅತಿಥಿ ಸ್ವಿಚ್ ಸಂರಚನೆಯನ್ನು ಬದಲಾಯಿಸಬಹುದು. ಹಕ್ಕುಗಳೇ ಸಮಸ್ಯೆ, ಮತ್ತು ಪ್ರಕ್ರಿಯೆ ಪಟ್ಟಿ ಅದು ಕಾಣುವ ಸ್ಥಳ ಮಾತ್ರ. ಮೊದಲು ಪಾತ್ರಗಳಿಗೆ ಹೆಸರು ನೀಡುವುದು ಪ್ರತಿ ಹಕ್ಕಿಗೂ ವಾಸಿಸಲು ಸ್ಥಳ ನೀಡುತ್ತದೆ.
ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರ ಆ ವಿಭಜನೆಗೆ ಆರಂಭಿಕ ಬಿಂದು, ಹೆಚ್ಚಿನ ಲಭ್ಯತೆಯ ಭರವಸೆ ಅಲ್ಲ. ಅದನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾದ ಊಹೆಯಾಗಿ ಪರಿಗಣಿಸಿ, ಪೂರ್ಣಗೊಂಡ ವಿನ್ಯಾಸವಾಗಿ ಅಲ್ಲ.
ಮೂರು ಪ್ರಕ್ರಿಯೆಗಳಲ್ಲ, ಮೂರು ಪಾತ್ರಗಳನ್ನು ಬೇರ್ಪಡಿಸಿ
ಒಂದು ಹೋಸ್ಟ್ನಲ್ಲಿ ಮೂರು ಅತಿಥಿಗಳು ಮೂರು ಹಕ್ಕು ಗುಂಪುಗಳು ಮತ್ತು ಮೂರು ನೆಟ್ವರ್ಕ್ ಸ್ಥಾನಗಳನ್ನು ನೀಡುತ್ತವೆ. ಅವು ಮೂರು ವಿಫಲತೆ ಡೊಮೇನ್ಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ, ಮತ್ತು ವಿನ್ಯಾಸವು ಅದನ್ನು ಗಟ್ಟಿಯಾಗಿ ಹೇಳಬೇಕು.
ಒಂದು ಅತಿಥಿಯಲ್ಲಿನ ಒಳನುಗ್ಗುವಿಕೆ ಉಳಿದವುಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಕ್ಕು ನೀಡದಿದ್ದರೆ ಮಾತ್ರ ಬೇರ್ಪಡಿಸುವಿಕೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಅದು ಹೈಪರ್ವೈಸರ್ ಸೆಟ್ಟಿಂಗ್, ಹೆಸರಿಸುವ ಸಂಪ್ರದಾಯವಲ್ಲ. VM ಅನ್ನು ಗೇಟ್ವೇ ಎಂದು ಕರೆಯುವುದು ಇನ್ನೊಬ್ಬ ಅತಿಥಿಯನ್ನು ಹೋಸ್ಟ್ ತಲುಪದಂತೆ ತಡೆಯುವುದಿಲ್ಲ. ಹೋಸ್ಟ್ನ ಹೆಸರಿನ ಬದಲು ವರ್ಚುವಲ್ ಸ್ವಿಚ್ ಸಂರಚನೆಯನ್ನು ಓದಿ, ನಂತರ ಪ್ರತಿ ಅತಿಥಿಯೂ ನೀವು ಭಾವಿಸುವ ಸ್ಥಳದಲ್ಲಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ.
host
├─ vpn-gw 10.60.10.2/24 public 51820/udp only
├─ services 10.60.0.10/24 no route to the management network
└─ ci-runner 10.60.20.2/24 outbound only, no host socket
ಟೋಪಾಲಜಿಯನ್ನು ಬರೆದಿಟ್ಟು ನಂತರ ಅದನ್ನು ಹೊಂದಿರುವ ಸಾಧನಗಳಿಂದ ಪರಿಶೀಲಿಸಿ. ತಪ್ಪು ಸೇತುವೆಯಲ್ಲಿ ಕಾಣುವ ಅತಿಥಿ ವಿವರವಲ್ಲ, ಒಂದು ಶೋಧನೆ. ಯಾವುದೇ ಸೇವಾ ಸಂರಚನೆಯನ್ನು ಬದಲಿಸುವ ಮೊದಲು ನೆಟ್ವರ್ಕ್ ಸರಿಪಡಿಸಿ.
VPN ಅತಿಥಿಗೆ ತನ್ನದೇ ಬಾಗಿಲುಗಳನ್ನು ಮಾತ್ರ ತೆರೆಯಲು ಬಿಡಿ
ರೌಟರ್ನಲ್ಲಿ ಟನೆಲ್ ಪೋರ್ಟ್ ಅನ್ನು ಪ್ರಕಟಿಸಿ, ಬೇರೆ ಏನೂ ಇಲ್ಲ. ಅತಿಥಿ ನಿರ್ವಹಣಾ ಪೋರ್ಟ್ಗಳು ನಿರ್ವಹಣಾ ಮಾರ್ಗಕ್ಕೆ ಸೇರುತ್ತವೆ, ಇಂಟರ್ನೆಟ್ಗೆ ಅಲ್ಲ, ಮತ್ತು ಹೈಪರ್ವೈಸರ್ನ ಸ್ವಂತ ಇಂಟರ್ಫೇಸ್ ಕೂಡ ಅಲ್ಲಿಗೇ ಸೇರುತ್ತದೆ.
ಖಾಸಗಿ ಬದಿಯ ನೆಟ್ವರ್ಕ್ ದೂರದ ಬಳಕೆದಾರರಿಗೆ ಬೇಕಾದ ಸೇವೆಗಳನ್ನು ತಲುಪಿ ಅಲ್ಲೇ ನಿಲ್ಲಬೇಕು. ಅಪ್ಲಿಕೇಶನ್ ದೃಢೀಕರಣ ಆನ್ ಆಗಿಯೇ ಉಳಿಯುತ್ತದೆ, ಏಕೆಂದರೆ ಟನೆಲ್ ಸಾಗಣೆ, ಲಾಗಿನ್ ಅಲ್ಲ. VPN ಅತಿಥಿಯ ರೌಟಿಂಗ್ ಕೋಷ್ಟಕವನ್ನು ಒಂದು ವಾಕ್ಯದಲ್ಲಿ ವಿವರಿಸಬಹುದಾದಷ್ಟು ಚಿಕ್ಕದಾಗಿ ಇರಿಸಿ. ನೀವು ಅದನ್ನು ಅಷ್ಟು ಸರಳವಾಗಿ ವಿವರಿಸಲಾಗದಿದ್ದರೆ, ಗಡಿ ಈಗಾಗಲೇ ಮಂಜಾಗಿದೆ.
virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'
ಹೋಸ್ಟ್ನಲ್ಲಿ ಆಲಿಸುತ್ತಿರುವ ಮತ್ತು ನಿರ್ವಹಣೆಗೆ ಬೇಕಿಲ್ಲದ ಯಾವುದೂ ಆಲಿಸಬಾರದು. ಇದು ಹೈಪರ್ವೈಸರ್ API ಅನ್ನು ಒಳಗೊಂಡಿದೆ, ಅದನ್ನು ಸಾರ್ವಜನಿಕ ಇಂಟರ್ಫೇಸ್ನಲ್ಲಿ ತೆರೆದಿಡುವುದು ಸುಲಭ.
ಬಿಲ್ಡ್ ಕೆಲಸಗಳಿಗೆ ಬೇರೆ ರೀತಿಯ ಗಡಿ ಬೇಕು
CI ಕೆಲಸವು ರಿಪೊಸಿಟರಿ ನಿಯಂತ್ರಿತ ಆದೇಶಗಳನ್ನು ಚಲಾಯಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದರ ವಿಶ್ವಾಸ ಯಾರು ಕೋಡ್ ಪುಶ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಅವಲಂಬಿಸಿದೆ. ಶೆಲ್ ಎಕ್ಸಿಕ್ಯೂಟರ್ ಆ ಆದೇಶಗಳನ್ನು ಹೋಸ್ಟ್ನಲ್ಲಿ ರನ್ನರ್ನ ಬಳಕೆದಾರರಾಗಿ ಚಲಾಯಿಸುತ್ತದೆ, ಮತ್ತು ಅದು ಲಭ್ಯವಿರುವ ಅಗಲವಾದ ಗಡಿ.
ಕಂಟೇನರ್ ಎಕ್ಸಿಕ್ಯೂಟರ್ಗಳು ಸಂಕುಚಿತ, ಮತ್ತು ವಿಶೇಷ ಹಕ್ಕುಗಳ ಕಂಟೇನರ್ ಸಂಕುಚಿತವಾದವುಗಳಲ್ಲಿ ಒಂದಲ್ಲ. ರನ್ನರ್ ಅನ್ನು ಅದರದೇ ನೆಟ್ವರ್ಕ್ ವ್ಯಾಪ್ತಿಯೊಂದಿಗೆ ಅದರದೇ ಅತಿಥಿಯಲ್ಲಿ ಇರಿಸಿ, ಮತ್ತು ಕೆಲಸಗಳಿಗೆ ಬೇಕಾದ ಕಲಾಕೃತಿ ಮತ್ತು ನಿಯೋಜನೆ ಪ್ರವೇಶವನ್ನು ಮಾತ್ರ ನೀಡಿ. ಬಿಸಾಡಬಹುದಾದ ಕೆಲಸಗಾರರು ಉಳಿಸಿಕೊಂಡ ಸ್ಥಿತಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತಾರೆ; ಅವರು ತಲುಪುವಿಕೆ ಅಥವಾ ರಹಸ್ಯಗಳ ಬಹಿರಂಗವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದಿಲ್ಲ. ಎರಡಕ್ಕೂ ಇನ್ನೂ ಸ್ಪಷ್ಟ ಮಿತಿಗಳು ಬೇಕು.
ಸೇವಾ ಅತಿಥಿ ಡೇಟಾವನ್ನು ಹೊಂದಿದೆ, ಆದ್ದರಿಂದ ಅದರ ಬ್ಯಾಕಪ್ ಯೋಜನೆಯೇ ಕೆಲಸ ಮಾಡಬೇಕಾದದ್ದು. ರಿಪೊಸಿಟರಿಗಳು, ಅಪ್ಲೋಡ್ಗಳು ಮತ್ತು ಡೇಟಾಬೇಸ್ ಅನ್ನು ಒಂದೇ ವೇಳಾಪಟ್ಟಿಯಲ್ಲಿ ಇರಿಸಿ. ಕೆಲಸದ ಸ್ಥಿತಿಯನ್ನು ಓದುವ ಬದಲು ಮರುಸ್ಥಾಪನೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ.
ಮೂರೂ ಹಂಚಿಕೊಳ್ಳುವ ವಿಫಲತೆಗೆ ಯೋಜನೆ ಮಾಡಿ
ಒಂದು ಹೋಸ್ಟ್ ಒಂದು ವಿಫಲತೆ ಡೊಮೇನ್. ಮರುಪ್ರಾರಂಭವು ಟನೆಲ್ ಮತ್ತು ಪ್ರತಿ ಖಾಸಗಿ ಸೇವೆಯನ್ನು ಅದೇ ಕ್ಷಣದಲ್ಲಿ ತೆಗೆದುಹಾಕುತ್ತದೆ, ಮತ್ತು ಆಗಲೇ ಒಳಗೆ ಹೋಗುವ ದಾರಿ ಅತ್ಯಂತ ಮುಖ್ಯವಾಗುತ್ತದೆ.
VPN ಅತಿಥಿಯನ್ನು ಅವಲಂಬಿಸದ ಕನ್ಸೋಲ್ ಪ್ರವೇಶವನ್ನು ಉಳಿಸಿ, ಅದು ಭೌತಿಕ ಕನ್ಸೋಲ್, ಆಫ್-ಬ್ಯಾಂಡ್ ನಿರ್ವಹಣಾ ಇಂಟರ್ಫೇಸ್ ಅಥವಾ ಪೂರೈಕೆದಾರರ ಕನ್ಸೋಲ್ ಆಗಿರಬಹುದು. ಒಂದೇ ಡಿಸ್ಕ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಸ್ವತಂತ್ರ ಪ್ರತಿ ಅಲ್ಲ, ಮತ್ತು ಅದು ರಕ್ಷಿಸುವ ಅತಿಥಿಯ ಒಳಗೆ ಚಲಿಸುವ ಬ್ಯಾಕಪ್ ಕೂಡ ಅಲ್ಲ. ನಂತರ ಶೀತ ಆರಂಭವನ್ನು ಚೆಕ್ಲಿಸ್ಟ್ ಅಲ್ಲ, ಕ್ರಮವಾಗಿ ಪರೀಕ್ಷಿಸಿ: ಹೋಸ್ಟ್, ವರ್ಚುವಲ್ ನೆಟ್ವರ್ಕ್ಗಳು, ಟನೆಲ್ ಮಾರ್ಗ ಮತ್ತು ಸಾಮಾನ್ಯ ಖಾತೆಯಲ್ಲಿ ಒಂದು ಹೆಸರಿಸಿದ ಅಪ್ಲಿಕೇಶನ್.
virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'
ಪ್ರಕ್ರಿಯೆಗಳ ಆರಂಭದ ಕ್ರಮ ಮಾರ್ಗಗಳು ಮತ್ತು DNS ಬಗ್ಗೆ ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಘಟಕಗಳ ಸ್ಥಿತಿಗಳ ಬದಲು ಮಾರ್ಗವನ್ನು ಪರೀಕ್ಷಿಸಿ. ಮಾರ್ಗವೇ ದೂರದ ಬಳಕೆದಾರರಿಗೆ ನಿಜವಾಗಿ ಬೇಕಾದದ್ದು.