ಹೋಸ್ಟ್ ರೂಟ್ಗಳನ್ನು ಮುಟ್ಟದೆ ನೇಮ್ಸ್ಪೇಸ್ಗಳಲ್ಲಿ VPN ರೂಟಿಂಗ್ ಪರೀಕ್ಷಿಸಿ
ಮೂರು ಅನುಕರಣ ರೋಲ್ಗಳು, ಮೂರು ಪ್ರತ್ಯೇಕ ಸಂದರ್ಭಗಳು ಮತ್ತು ಪ್ರತಿ ಲಿಂಕ್ಗೆ ಒಂದು veth. ಹೋಸ್ಟ್ ಮುಟ್ಟುವ ಮೊದಲು ನೇಮ್ಸ್ಪೇಸ್ ಲ್ಯಾಬ್ ಅನ್ನು ಹೋಸ್ಟ್-ರೂಟ್ ಲ್ಯಾಬ್ನೊಂದಿಗೆ ಹೋಲಿಸಿ.
ಎರಡು ಲ್ಯಾಬ್ಗಳು ಒಂದೇ VPN ಟೋಪೋಲಜಿಯನ್ನು ಮಾಡೆಲ್ ಮಾಡಬಹುದು ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನ ರೀತಿಗಳಲ್ಲಿ ವಿಫಲವಾಗಬಹುದು: ಒಂದು ನೆಟ್ವರ್ಕ್ ನೇಮ್ಸ್ಪೇಸ್ಗಳಲ್ಲಿ ವಾಸಿಸುತ್ತದೆ, ಇನ್ನೊಂದು ಹೋಸ್ಟ್ನ ಸ್ವಂತ ರೂಟ್ಗಳಲ್ಲಿ. ನೇಮ್ಸ್ಪೇಸ್ ಆವೃತ್ತಿ ಪ್ರತಿ ಇಂಟರ್ಫೇಸ್, ರೂಟ್ ಮತ್ತು ಸಾಕೆಟ್ ಅನ್ನು ನೀವು ಅಳಿಸಬಹುದಾದ ಸಂದರ್ಭದಲ್ಲಿ ಇಡುತ್ತದೆ, ಆದರೆ ಹೋಸ್ಟ್ ಆವೃತ್ತಿ ಬೇಗ ಪ್ರಾರಂಭವಾಗಿ ಹಿಂದೆ ಸ್ಥಿತಿಯನ್ನು ಬಿಡುತ್ತದೆ. ಆ ಉಳಿದ ಸ್ಥಿತಿಯೇ ಒಂದು ತಿಂಗಳ ನಂತರ ಎರಡನೇ ಲ್ಯಾಬ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಲು ಕಷ್ಟವಾಗುವ ಕಾರಣ. ಮೊದಲು ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು ಹೋಲಿಸಿ, ಏಕೆಂದರೆ ಪ್ರಯೋಗವನ್ನು ಎರಡು ಬಾರಿ ನಡೆಸಬಹುದೇ ಎಂದು ಅದು ನಿರ್ಧರಿಸುತ್ತದೆ.
ಒಂದೇ ಲ್ಯಾಬ್ ನಿರ್ಮಿಸುವ ಎರಡು ದಾರಿಗಳು, ಮತ್ತು ಯಾವಾಗ ಯಾವುದು ಗೆಲ್ಲುತ್ತದೆ
ಹೋಸ್ಟ್-ರೂಟ್ ಲ್ಯಾಬ್ನಲ್ಲಿ ನೀವು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಯಂತ್ರಕ್ಕೆ ಟನೆಲ್ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ರೂಟ್ಗಳನ್ನು ಸೇರಿಸುತ್ತೀರಿ, ಆದ್ದರಿಂದ ಪ್ರಯೋಗವು ನಿಮ್ಮ shell, ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಮತ್ತು ಪ್ರತಿ ಇತರ ಸಂಪರ್ಕದೊಂದಿಗೆ ಅದೃಷ್ಟವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ. ನೇಮ್ಸ್ಪೇಸ್ ಲ್ಯಾಬ್ನಲ್ಲಿ ಪ್ರತಿ ರೋಲ್ ಇಂಟರ್ಫೇಸ್, ವಿಳಾಸ, ರೂಟ್ ಮತ್ತು ಸಾಕೆಟ್ಗಳ ತನ್ನದೇ ಸ್ಟಾಕ್ ಪಡೆಯುತ್ತದೆ, ಮತ್ತು ನೇಮ್ಸ್ಪೇಸ್ ಅಳಿಸುವುದು ಅದೆಲ್ಲವನ್ನೂ ತೆಗೆದುಹಾಕುತ್ತದೆ. ಯಾವುದೇ ಮಾಡೆಲ್ ಹೆಚ್ಚು ಸರಿಯಲ್ಲ, ಏಕೆಂದರೆ ಅವು ವಿಭಿನ್ನ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸುತ್ತವೆ. ವಿಷಯ ರೂಟಿಂಗ್ ಮತ್ತು ಫಾರ್ವರ್ಡಿಂಗ್ ಆಗಿರುವಾಗ ನೇಮ್ಸ್ಪೇಸ್ಗಳನ್ನು ಆರಿಸಿ, ಮತ್ತು ವಿಷಯ ಒಂದು ಡೆಸ್ಕ್ಟಾಪ್ ಕ್ಲೈಂಟ್ ಹೇಗೆ ಸಂಯೋಜನೆಗೊಳ್ಳುತ್ತದೆ ಎಂಬುದಾಗಿರುವಾಗ ಹೋಸ್ಟ್ ಲ್ಯಾಬ್ ಆರಿಸಿ.
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
ಎರಡನ್ನೂ ಬೆರೆಸುವುದು ಸಾಮಾನ್ಯ ತಪ್ಪು: ಹೋಸ್ಟ್ ಕ್ಲೈಂಟ್ ವಿರುದ್ಧ ಮಾತ್ರ ಪರೀಕ್ಷಿಸಿದ ನೇಮ್ಸ್ಪೇಸ್ ಲ್ಯಾಬ್ ಎರಡೂ ಜೋಡಣೆಗಳ ಬಗ್ಗೆ ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ. ಮೊದಲ ಲಿಂಕ್ ರಚಿಸುವ ಮೊದಲು ನೀವು ಯಾವ ಪ್ರಶ್ನೆ ಕೇಳುತ್ತೀರಿ ಎಂದು ನಿರ್ಧರಿಸಿ.
ಪ್ರತಿ ರೋಲ್ಗೆ ಒಂದು ಸಂದರ್ಭ, ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ
ಪ್ರತಿ ರೋಲ್ಗೆ ಒಂದು ನೇಮ್ಸ್ಪೇಸ್ ರಚಿಸಿ ಮತ್ತು ಪ್ರತಿ veth ಜೋಡಿಯ ಪ್ರತಿ ತುದಿಯನ್ನು ಅದನ್ನು ಹೊಂದಿರುವ ಸಂದರ್ಭಕ್ಕೆ ಸರಿಸಿ. ಮೊದಲ ನಾಲ್ಕು ಆಜ್ಞೆಗಳು ಆಕಾರವನ್ನು ನೋಡಲು ಸಾಕು:
ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns clientಲ್ಯಾಬ್ಗೆ ಹೋಸ್ಟ್ನಲ್ಲಿ ಯಾವುದರೊಂದಿಗೂ ಅತಿಕ್ರಮಿಸದ ಶ್ರೇಣಿಗಳನ್ನು ನೀಡಿ, ಮತ್ತು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಯಾವ ನೇಮ್ಸ್ಪೇಸ್ ಯಾವ ವಿಳಾಸವನ್ನು ಹೊಂದಿದೆ ಎಂದು ಬರೆಯಿರಿ. ಕೆಲಸ ಮಾಡುವ ಲ್ಯಾಬ್ಗೆ ಎರಡು ಪ್ರತ್ಯೇಕ ಮಾರ್ಗಗಳು ಬೇಕು: VPN ಎಂಡ್ಪಾಯಿಂಟ್ ತನ್ನ ಜೋಡಿಗೆ ತಲುಪಲು ಹೊರ ಮಾರ್ಗ, ಮತ್ತು ಸಂರಕ್ಷಿತ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಹಿಂತಿರುಗುವ ಮಾರ್ಗ. ಅವುಗಳನ್ನು ಎರಡು ನಿರ್ಧಾರಗಳಾಗಿ ಮಾಡೆಲ್ ಮಾಡಿ, ಏಕೆಂದರೆ ಹೊರಹೋಗುವ ಅರ್ಧವನ್ನು ಮಾತ್ರ ನಿರ್ಮಿಸುವ ಲ್ಯಾಬ್ ಹ್ಯಾಂಡ್ಶೇಕ್ ಪರೀಕ್ಷೆಯಲ್ಲಿ ಉತ್ತೀರ್ಣವಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಪರೀಕ್ಷೆಯಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ.
ಫಾರ್ವರ್ಡಿಂಗ್ ರೋಲ್ ಎಂಬುದು ಲ್ಯಾಬ್ಗಳು ಕುತೂಹಲಕಾರಿಯಾಗುವ ಸ್ಥಳ
ಒಂದು ರೋಲ್ ಫಾರ್ವರ್ಡ್ ಮಾಡಬೇಕು, ಅಂದರೆ ಆ ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗೆ ಫಾರ್ವರ್ಡಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ ವಿನ್ಯಾಸಕ್ಕೆ ಬೇಕಾದ ನಿಯಮವನ್ನು ಸೇರಿಸುವುದು. ಫಾರ್ವರ್ಡಿಂಗ್ ಸ್ಥಿತಿ ಪ್ರತಿ ನೇಮ್ಸ್ಪೇಸ್ಗೆ ಪ್ರತ್ಯೇಕ, ಆದ್ದರಿಂದ ಹೋಸ್ಟ್ ಸೆಟ್ಟಿಂಗ್ ಲ್ಯಾಬ್ಗೆ ಅಪ್ರಸ್ತುತ ಮತ್ತು ಲ್ಯಾಬ್ ಸೆಟ್ಟಿಂಗ್ ಹೊರಕ್ಕೆ ಸೋರುವುದಿಲ್ಲ, ನೆಟ್ವರ್ಕ್ ನೇಮ್ಸ್ಪೇಸ್ ದಾಖಲೆಗಳು ವಿವರಿಸುವಂತೆ. WireGuard ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಅದರ ಹೊರ ಸಾಕೆಟ್ ವಿಭಿನ್ನ ನೇಮ್ಸ್ಪೇಸ್ಗಳಲ್ಲಿ ವಾಸಿಸಬಹುದು ಎಂದು ದಾಖಲಿಸುತ್ತದೆ, ಇದು ಉಪಯುಕ್ತ ಉಪಾಯ ಮತ್ತು ನಿಮ್ಮನ್ನು ಗೊಂದಲಗೊಳಿಸುವ ಅದ್ಭುತ ಮಾರ್ಗ. ಇಂಟರ್ಫೇಸ್ ಸರಿಸುವುದು ಸಂಪರ್ಕದ ಪ್ರತಿ ಭಾಗವನ್ನು ಒಂದೇ ರೀತಿಯಲ್ಲಿ ಸರಿಸುತ್ತದೆ ಎಂದು ಊಹಿಸಬೇಡಿ.
ಪರೀಕ್ಷಾ ಪ್ಯಾಕೆಟ್ ನಂತರ ಫಾರ್ವರ್ಡಿಂಗ್ ಕೌಂಟರ್ ಪರಿಶೀಲಿಸಿ, ಏಕೆಂದರೆ ಎಂದಿಗೂ ಹೊಂದಿಕೆಯಾಗದ ನಿಯಮ ಮತ್ತು ಪ್ಯಾಕೆಟ್ ಬಿಟ್ಟುಬಿಟ್ಟ ನಿಯಮ ರೂಟ್ ಟೇಬಲ್ನಲ್ಲಿ ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತವೆ. ಅವುಗಳನ್ನು ಕೌಂಟರ್ಗಳು ಮಾತ್ರ ಬೇರ್ಪಡಿಸುತ್ತವೆ.
ಬೇಸ್ಲೈನ್ ದಾಖಲಿಸಿ, ನಂತರ ಒಂದು ರೂಟ್ ಮುರಿಯಿರಿ
ಏನಿದೆ ಎಂಬುದನ್ನು ದಾಖಲಿಸುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸಿ, ಪ್ರತಿ ಸಾಲಿನ ಪಕ್ಕದಲ್ಲಿ ಸಂದರ್ಭ ಬರೆಯಿರಿ. ನೇಮ್ಸ್ಪೇಸ್ಗಳನ್ನು ಓದಿ, ನಂತರ ಪರೀಕ್ಷಾ ಗಮ್ಯಸ್ಥಾನ ಅವುಗಳಲ್ಲಿ ಒಂದರ ಒಳಗೆ ತೆಗೆದುಕೊಳ್ಳುವ ರೂಟ್, ನಂತರ ಅದನ್ನು ಸಾಗಿಸುವ ಲಿಂಕ್ನಲ್ಲಿನ ಕೌಂಟರ್ಗಳು:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gಮೂರನೇ ಆಜ್ಞೆ ಜನರು ಬಿಟ್ಟುಬಿಡುವ ಆಜ್ಞೆ, ಮತ್ತು ಸಾಕ್ಷ್ಯ ಅಲ್ಲಿಯೇ ಇರುತ್ತದೆ: ಬಿಟ್ಟುಬಿಟ್ಟ ಮತ್ತು ದೋಷಗಳ ಕೌಂಟರ್ಗಳು ಪ್ಯಾಕೆಟ್ ಫಾರ್ವರ್ಡಿಂಗ್ ರೋಲ್ ತಲುಪಿದೆಯೇ ಎಂದು ಹೇಳುತ್ತವೆ. ಬದಲಾವಣೆಯ ನಂತರ ಅದೇ ಮೂರು ದೃಶ್ಯಗಳನ್ನು ಸೆರೆಹಿಡಿಯಿರಿ, ಮತ್ತು ಸಾಕ್ಷ್ಯ ನಿಮ್ಮ ನೆನಪಲ್ಲ, diff ಆಗಿರಲಿ. ನಂತರ ನಿಖರವಾಗಿ ಒಂದನ್ನು ಮುರಿಯಿರಿ, ರೂಟ್ ಅಳಿಸುವ ಮೂಲಕ ಅಥವಾ ಫಾರ್ವರ್ಡಿಂಗ್ ಮಾರ್ಗದಲ್ಲಿ ನಿರಾಕರಣೆ ನಿಯಮ ಸೇರಿಸುವ ಮೂಲಕ, ಮತ್ತು ನೀವು ಊಹಿಸಿದ ಲಕ್ಷಣವನ್ನು ಖಚಿತಪಡಿಸಿ: ಉತ್ತರವಿಲ್ಲದೆ ಪೂರ್ಣಗೊಂಡ ಹ್ಯಾಂಡ್ಶೇಕ್, ಅಥವಾ ಟೈಮೌಟ್ ಬದಲು ಹೆಸರು ಪರಿಹಾರ ವೈಫಲ್ಯ. ಕೇವಲ ಯಶಸ್ಸನ್ನು ತೋರಿಸುವ ಲ್ಯಾಬ್ ಬಹಳ ಕಡಿಮೆ ಕಲಿಸುತ್ತದೆ.
ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯೇ ಮುಂದಿನ ರನ್ ಅನ್ನು ಪುನರಾವರ್ತನೀಯಗೊಳಿಸುತ್ತದೆ
ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು ನೀವು ಹೆಸರಿಸಿದ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಸೀಮಿತಗೊಳಿಸಿ, ಏಕೆಂದರೆ ಸಂಪೂರ್ಣ ಫೈರ್ವಾಲ್ ಮರುಹೊಂದಿಕೆ ಅಥವಾ ಹೋಸ್ಟ್ ರೂಟ್ ತೆಗೆಯುವುದು ಪುನರುತ್ಪಾದನೆಯಲ್ಲ, ಅದು ಎರಡನೇ ಘಟನೆ. ಟೋಪೋಲಜಿ, ನಿಖರ ಆಜ್ಞೆಗಳು ಮತ್ತು ನೀವು ನಿರೀಕ್ಷಿಸಿದ ಅವಲೋಕನಗಳನ್ನು ಉಳಿಸಿ, ಮುಂದಿನ ರನ್ ಹಿಂದಿನ ಸ್ಥಿತಿ ಯಾವ ಸಂದರ್ಭದಲ್ಲಿತ್ತು ಎಂದು ಊಹಿಸುವ ಬದಲು ಅದೇ ವೈಫಲ್ಯವನ್ನು ಪುನರುತ್ಪಾದಿಸುತ್ತದೆ. ಆ ದಾಖಲೆ ಇಲ್ಲದೆ ಲ್ಯಾಬ್ ಕಥೆ, ಪ್ರಕ್ರಿಯೆ ಅಲ್ಲ.
ಲ್ಯಾಬ್ಗೆ ಸ್ಥಳೀಯವಾಗಿ ರಚಿಸಿದ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿ, ಮತ್ತು ಉತ್ಪಾದನಾ ಖಾತೆಗಳನ್ನು ಹಂಚಿದ ಉದಾಹರಣೆಗಳಿಂದ ದೂರವಿಡಿ. ನಂತರ ಪ್ರತಿ ನೇಮ್ಸ್ಪೇಸ್ ಅಳಿಸಿ ಮತ್ತು ಹೋಸ್ಟ್ ನೋಟ ಬದಲಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿ, ಇದೇ ಈ ಮಾಡೆಲ್ ಆಯ್ಕೆಮಾಡುವ ಸಂಪೂರ್ಣ ಕಾರಣ. ಸ್ವಚ್ಛವಾಗಿ ತೆಗೆಯಲಾಗದ ಲ್ಯಾಬ್ ಹೆಚ್ಚುವರಿ ಹಂತಗಳಿರುವ ಹೋಸ್ಟ್ ಬದಲಾವಣೆ.