VPN ಗಾಗಿ Linux ನೆಟ್ವರ್ಕ್ ನೇಮ್ಸ್ಪೇಸ್ಗಳು: ಅವು ಏನನ್ನು ಪ್ರತ್ಯೇಕಿಸುವುದಿಲ್ಲ
ನೇಮ್ಸ್ಪೇಸ್ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು, ರೂಟ್ಗಳನ್ನು ಮತ್ತು ಸಾಕೆಟ್ಗಳನ್ನು ಸರಿಸುತ್ತದೆ, ಫೈಲ್ಗಳು ಅಥವಾ ಖಾತೆಗಳನ್ನು ಅಲ್ಲ. ಅದರ ಸ್ವಂತ netns ನಲ್ಲಿ VPN ಏನನ್ನು ಆವರಿಸುತ್ತದೆ ಮತ್ತು ಸಂಚಾರ ಎಲ್ಲಿಂದ ಇನ್ನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.
VPN ಅನ್ನು ಅದರ ಸ್ವಂತ ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗೆ ಪ್ರಾರಂಭಿಸಿ, ಅಲ್ಲಿ ಒಂದು ಅಪ್ಲಿಕೇಶನ್ ಚಲಾಯಿಸಿ, ಸಂಚಾರ ಇನ್ನೂ ಹೋಸ್ಟ್ ರೂಟ್ ಮೂಲಕವೇ ಹೊರಹೋಗುತ್ತದೆ. ಏನೂ ಮುರಿದಿಲ್ಲ: ನೇಮ್ಸ್ಪೇಸ್ ತನ್ನೊಳಗೆ ಪ್ರವೇಶಿಸುವ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಮಾತ್ರ ನಿಯಂತ್ರಿಸುತ್ತದೆ, ಮತ್ತು ಸೋರಿಕೆ ಎಂದೂ ಪ್ರವೇಶಿಸದ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಬಂದಿತು. ಇಂಟರ್ಫೇಸ್ಗಳು, ವಿಳಾಸಗಳು, ರೂಟ್ಗಳು, ಫೈರ್ವಾಲ್ ನಿಯಮಗಳು ಮತ್ತು ಸಾಕೆಟ್ಗಳು ನೇಮ್ಸ್ಪೇಸ್ ಹೊಂದಿರುವಂಥವು. ಫೈಲ್ಗಳು, ಖಾತೆಗಳು ಮತ್ತು ಈಗಾಗಲೇ ಚಾಲನೆಯಲ್ಲಿರುವ ಸೇವೆಗಳು ಅಲ್ಲ, ಮತ್ತು ಹೆಚ್ಚಿನ ಆಶ್ಚರ್ಯಗಳು ಇಲ್ಲಿಂದಲೇ ಬರುತ್ತವೆ.
ನೇಮ್ಸ್ಪೇಸ್ ಏನನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ಸಾಕೆಟ್ ಎಲ್ಲಿ ಹುಟ್ಟುತ್ತದೆ
ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗೆ ಸರಿಸಿ ಮತ್ತು ಹೋಸ್ಟ್ ಅದನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ; ಒಳಗೆ ಸುರಂಗ ನಿರ್ಮಿಸಿ ಮತ್ತು ಹೋಸ್ಟ್ ಅದನ್ನು ನೋಡಲಾಗದು. ಇದೇ ನೇಮ್ಸ್ಪೇಸ್ನಿಂದ ಸೀಮಿತವಾದ VPN ನ ಕಾರ್ಯವಿಧಾನ: ಸಾಧನ ಮತ್ತು ಅದರತ್ತ ತೋರಿಸುವ ರೂಟ್ಗಳು ಆಯ್ಕೆಯಾದ ಪ್ರಕ್ರಿಯೆಗಳಿಗೆ ಮಾತ್ರ ತಲುಪಬಹುದಾದ ಸಂದರ್ಭದಲ್ಲಿ ಜೀವಿಸುತ್ತವೆ. ಹೋಸ್ಟ್ ತನ್ನ ಡಿಫಾಲ್ಟ್ ರೂಟ್ ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ, ಆದ್ದರಿಂದ ಹೊರಗಿನ ಎಲ್ಲವೂ ಅಸ್ಪೃಶವಾಗಿ ಉಳಿಯುತ್ತದೆ.
WireGuard ಗೆ ಸೃಷ್ಟಿ ಸಂದರ್ಭವು ಪ್ರಸ್ತುತ ಸ್ಥಳದಷ್ಟೇ ಮುಖ್ಯ: UDP ಸಾಕೆಟ್ ಇಂಟರ್ಫೇಸ್ ರಚಿಸಿದ ನೇಮ್ಸ್ಪೇಸ್ನಲ್ಲಿ ಬಂಧಿಸಲ್ಪಡುತ್ತದೆ, ಸಾಧನ ಬೇರೆಡೆಗೆ ಸರಿದ ನಂತರವೂ. ಗೂಢಲಿಪೀಕರಿಸಿದ ಪ್ಯಾಕೆಟ್ಗಳು ಯಾವ ರೂಟಿಂಗ್ ಟೇಬಲ್ ಅನ್ನು ಅನುಸರಿಸುತ್ತವೆ ಎಂಬುದು ಆ ಜನ್ಮಸ್ಥಳವನ್ನು ಅವಲಂಬಿಸಿದೆ. ಸಾಕೆಟ್ ಸಹಚರರಿಗೆ ರೂಟ್ ಇಲ್ಲದ ಸಂದರ್ಭದಲ್ಲಿ ಉಳಿದರೆ, ಇಂಟರ್ಫೇಸ್ ಹುಡುಕುತ್ತದೆ ಮತ್ತು ಕೈಹಿಡಿತ ಎಂದೂ ಹೊರಹೋಗುವುದಿಲ್ಲ. ಮೊದಲು ಅದರ ಜನ್ಮಸ್ಥಳವನ್ನು, ನಂತರ ಪ್ರಸ್ತುತ ಸ್ಥಳವನ್ನು ಪರಿಶೀಲಿಸಿ.
ನೇಮ್ಸ್ಪೇಸ್ ಏನನ್ನು ಪ್ರತ್ಯೇಕಿಸುವುದಿಲ್ಲ
ಇಲ್ಲಿ ಯಾವುದೂ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು, ಖಾತೆಗಳನ್ನು ಅಥವಾ ರಹಸ್ಯಗಳನ್ನು ಬೇರ್ಪಡಿಸುವುದಿಲ್ಲ, ಮತ್ತು ನೀವು ನೇಮ್ಸ್ಪೇಸ್ ರಚಿಸಿದ್ದರಿಂದ ಆ ಗಡಿಗಳಲ್ಲಿ ಯಾವುದೂ ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ. ರಿಜಾಲ್ವರ್ ಸಂರಚನೆ ಒಂದು ಫೈಲ್, ಆದ್ದರಿಂದ ಒಳಗಿನ ಪ್ರಕ್ರಿಯೆ ಇನ್ನೂ ಹೋಸ್ಟ್ ರಿಜಾಲ್ವರ್ ಎಡೆಗೆ ತೋರಿಸುವ ಸೆಟ್ಟಿಂಗ್ ಓದಿ ತನ್ನ ಪ್ರಶ್ನೆಯನ್ನು ಅದು ಸೂಚಿಸುವ ರೂಟ್ ಮೂಲಕ ಹೊರ ಕಳುಹಿಸಬಹುದು. ವಿನಂತಿಯನ್ನು ಈಗಾಗಲೇ ಚಾಲನೆಯಲ್ಲಿರುವ ಮಧ್ಯವರ್ತಿ ಅಥವಾ ಸಿಸ್ಟಮ್ ಸೇವೆಗೆ ಒಪ್ಪಿಸುವ ಅಪ್ಲಿಕೇಶನ್ ಸಂಪೂರ್ಣ ಬೇರೆ ಸಂದರ್ಭದ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ. ಎರಡೂ ಗಡಿಯು ಎಂದೂ ಉತ್ತರಿಸಲು ಉದ್ದೇಶಿಸದ ವಿನಂತಿಗಳು.
ಪರಿಹಾರವೆಂದರೆ /etc/netns/<name>/resolv.conf ನಲ್ಲಿ ಪ್ರತಿ-ನೇಮ್ಸ್ಪೇಸ್ ಫೈಲ್, ಅಥವಾ ಸಿದ್ಧಪಡಿಸಿದ ಫೈಲ್ನ bind mount, ಒಳಗಿನಿಂದ ತಲುಪಬಹುದಾದ ರಿಜಾಲ್ವರ್ಗೆ ತೋರಿಸುವಂತೆ. ಹೋಸ್ಟ್ನಲ್ಲಿ /etc/resolv.conf ಸಂಪಾದಿಸುವುದು ನೇಮ್ಸ್ಪೇಸ್ ನೋಡುವ ಯಾವುದನ್ನೂ ಬದಲಿಸುವುದಿಲ್ಲ.
ಪ್ರಕ್ರಿಯೆಗಳ ನಿಯೋಜನೆಯೇ ನಿಯಂತ್ರಣ
ನೀವು ಪಡೆಯುವ ಪ್ರತ್ಯೇಕತೆ ಒಳಗೆ ನೀವು ಪ್ರಾರಂಭಿಸುವ ಪ್ರಕ್ರಿಯೆಗಳ ಪ್ರತ್ಯೇಕತೆಯೇ ಆಗಿದೆ. ನೇಮ್ಸ್ಪೇಸ್ನ exec ಸಹಾಯಕ ಮೂಲಕ ಪ್ರಾರಂಭವಾದ ಶೆಲ್, ಮತ್ತು ಅದು ಹುಟ್ಟಿಸುವ ಎಲ್ಲವೂ ಒಳಗೇ ಉಳಿಯುತ್ತದೆ; ಹೋಸ್ಟ್ ಅಧಿವೇಶನದಿಂದ ಪ್ರಾರಂಭಿಸಿದ ಡೆಸ್ಕ್ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಉಳಿಯುವುದಿಲ್ಲ. ಸಂದರ್ಭವನ್ನು ರಚಿಸಿ, ಸಾಧನವನ್ನು ಸರಿಸಿ, ನಂತರ ಎರಡೂ ಬದಿಗಳನ್ನು ಸಾಬೀತುಪಡಿಸಿ:
ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show
ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗಿನಿಂದ ಮೊದಲ wg show ಮತ್ತು ಹೋಸ್ಟ್ನಿಂದ ಎರಡನೆಯದನ್ನು ಓದಿ, ಅವುಗಳಲ್ಲಿ ಒಂದೇ ಸಹಚರರನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ ಎಂದು ನಿರೀಕ್ಷಿಸಿ. ಎರಡೂ ಮಾಡಿದರೆ ಸಾಧನ ಎಂದೂ ಸರಿಯಲಿಲ್ಲ; ಯಾವುದೂ ಮಾಡದಿದ್ದರೆ ಅದು ಬೇರೆಡೆಗೆ ಹೋಗಿದೆ. ಪ್ರಾರಂಭಕ ಸೇವಾ ನಿರ್ವಾಹಕನಾಗಿದ್ದರೆ ಸಂಪಾದಿಸಬೇಕಾದದ್ದು unit ಫೈಲ್, ಡೆಸ್ಕ್ಟಾಪ್ ಶಾರ್ಟ್ಕಟ್ ಅಲ್ಲ. ನೇಮ್ಸ್ಪೇಸ್ ಸೆಟ್ಟಿಂಗ್ ಇಲ್ಲದ unit ಡೀಮನ್ ಅನ್ನು ಹೋಸ್ಟ್ ಸಂದರ್ಭದಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿ ವಿನ್ಯಾಸವನ್ನು ಸದ್ದಿಲ್ಲದೆ ರದ್ದುಗೊಳಿಸುತ್ತದೆ.
ಅಪ್ಲಿಕೇಶನ್ ಸಂದರ್ಭದಿಂದ ಪರೀಕ್ಷಿಸಿ
ಅಪ್ಲಿಕೇಶನ್ ಬಳಸುವ ಅದೇ ಬೈನರಿ ಮತ್ತು ಅದೇ ಬಳಕೆದಾರರೊಂದಿಗೆ ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗೆ ಪರಿಶೀಲನೆಯನ್ನು ಚಲಾಯಿಸಿ. DNS ಮತ್ತು ಎರಡೂ ವಿಳಾಸ ಕುಟುಂಬಗಳನ್ನು ಸೇರಿಸಿ, ಏಕೆಂದರೆ ನೀವು ಎಂದೂ ಯೋಚಿಸದ IPv6 ರೂಟ್ ಸಾಮಾನ್ಯ ನಿರ್ಗಮನ ಮಾರ್ಗ. ನಿಮ್ಮದೇ ಶೆಲ್ನಿಂದ ಮಾಡಿದ ಪರೀಕ್ಷೆ ನಿಮ್ಮ ಶೆಲ್ ಪ್ರತ್ಯೇಕವಾಗಿದೆ ಎಂದು ಮಾತ್ರ ಸಾಬೀತುಪಡಿಸುತ್ತದೆ.
ನಂತರ ಹೋಸ್ಟ್ನಲ್ಲಿ ಅದೇ ಪರಿಶೀಲನೆಯನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಉತ್ತರಗಳು ಭಿನ್ನವಾಗಿವೆ ಎಂದು ದೃಢೀಕರಿಸಿ: ಒಳಗೆ ಸುರಂಗ ವಿಳಾಸ ಮತ್ತು ಉದ್ದೇಶಿತ ನಿರ್ಗಮನ, ಹೊರಗೆ ಹೋಸ್ಟ್ ರೂಟ್ ಮತ್ತು ಕಚೇರಿ ನಿರ್ಗಮನ, ಮತ್ತು ರಿಜಾಲ್ವರ್ ಹೆಸರಿನಿಂದ. ನೇಮ್ಸ್ಪೇಸ್ಗಳಿಗೆ ಪ್ರೋಟೋಕಾಲ್ ಬದಲು ನಿಯೋಜನೆಯ ಹೆಸರಿಡಿ, ಸ್ವಚ್ಛಗೊಳಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಎರಡನ್ನು ಗೊಂದಲಗೊಳಿಸದಂತೆ.
ಮುಂದುವರಿಸುವಿಕೆ, ವೈಫಲ್ಯ ನೀತಿ ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆ
ಗೇಟ್ವೇಗೆ, ಮುಂದುವರಿಸುವಿಕೆಯನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಆನ್ ಮಾಡಿ ಮತ್ತು ಸುರಂಗ ಬಿದ್ದಾಗ ಏನಾಗಬೇಕು ಎಂದು ನಿರ್ಧರಿಸಿ. ನೇಮ್ಸ್ಪೇಸ್ ಒಳಗೆ ನೀವು ಸ್ಥಾಪಿಸುವ ರೂಟ್ಗಳನ್ನು ತಡೆಯುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಹೋಸ್ಟ್ಗೆ ಪರ್ಯಾಯ ರೂಟ್ ರಚಿಸಿದರೆ ಅದು ಬಳಕೆಯಾಗುತ್ತದೆ. ಇದು ನೀತಿ ನಿರ್ಧಾರ, ಮತ್ತು ಅಡಚಣೆ ಅದನ್ನು ಪರೀಕ್ಷಿಸುವ ಮೊದಲು ಬರೆದಿಡಬೇಕು.
ನೇಮ್ಸ್ಪೇಸ್ ಹೆಸರುಗಳು, ಇಂಟರ್ಫೇಸ್ಗಳು ಮತ್ತು ಸಂರಚನೆ ಯಾರದು ಎಂಬುದನ್ನು ದಾಖಲಿಸಿ, ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆ ನಿಯೋಜನೆ ರಚಿಸಿದ್ದನ್ನು ಮಾತ್ರ ತೆಗೆಯುವಂತೆ. ರೋಲ್ಬ್ಯಾಕ್ ಸಮಯದಲ್ಲಿ ಹೋಸ್ಟ್ ನೆಟ್ವರ್ಕಿಂಗ್ ಮರುಹೊಂದಿಸುವುದು ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು ಅಡಚಣೆಯಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. network_namespaces(7) ಪುಟ ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಆ ಮಾರ್ಗವನ್ನು ವಿನ್ಯಾಸ ಮಾಡುವ ಮೊದಲು ಓದಲು ಯೋಗ್ಯವಾಗಿದೆ.