ಸಮ್ಮಿತೀಯ NAT ಮತ್ತು VPN: ಲೇಬಲ್ ಅಲ್ಲ, ಮ್ಯಾಪಿಂಗ್ ಅಳೆಯಿರಿ
ಎಂಡ್ಪಾಯಿಂಟ್-ಅವಲಂಬಿತ ಮ್ಯಾಪಿಂಗ್ ಪೀರ್-ಟು-ಪೀರ್ ಅನ್ವೇಷಣೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ, ಸಾಮಾನ್ಯ ಕ್ಲೈಂಟ್-ಟು-ಸರ್ವರ್ ಟನೆಲ್ ಮೇಲೆ ಅಲ್ಲ. ಪೋರ್ಟ್ ಅಳೆಯಿರಿ, ನೇರ ಮಾರ್ಗ ವಿಫಲವಾದರೆ ರಿಲೇ ಬಳಸಿ.
ಒಂದು ಬೆಂಬಲ ಥ್ರೆಡ್ “ಸಮ್ಮಿತೀಯ NAT, ಇಲ್ಲಿ VPN ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ” ಎಂಬ ತೀರ್ಪಿನೊಂದಿಗೆ ಮುಗಿಯುತ್ತದೆ, ನಂತರ ಕ್ಲೈಂಟ್ ಯಾವುದೇ ಕಾರಣವಿಲ್ಲದೆ ಮೂರು ಬಾರಿ ಮರುಸ್ಥಾಪನೆಯಾಗುತ್ತದೆ. ಲೇಬಲ್ ಹಾನಿ ಮಾಡುತ್ತದೆ ಏಕೆಂದರೆ ಯಾರೂ ಕೇಳದ ಪ್ರಶ್ನೆಗೆ ಅದು ಉತ್ತರಿಸುತ್ತದೆ. ಸ್ಥಿರ ಸರ್ವರ್ಗೆ ಹೊರಮುಖವಾಗಿ ಸಂಪರ್ಕಿಸುವ ಕ್ಲೈಂಟ್ ಮೊದಲ ಪ್ಯಾಕೆಟ್ ಕಳುಹಿಸಿದ ಕ್ಷಣವೇ ಮ್ಯಾಪಿಂಗ್ ರಚಿಸುತ್ತದೆ, ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಗೆ ಬಹುತೇಕ ಪ್ರತಿ ನೆಟ್ವರ್ಕ್ ಜಾರಿಗೊಳಿಸುವ ನಿಯಮಗಳ ಅಡಿಯಲ್ಲಿ ಹಿಂತಿರುಗಲು ಅವಕಾಶ ನೀಡಲಾಗುತ್ತದೆ. ಎಂಡ್ಪಾಯಿಂಟ್-ಅವಲಂಬಿತ ಮ್ಯಾಪಿಂಗ್ ನಿಜವಾಗಿ ಸಂಕೀರ್ಣಗೊಳಿಸುವುದು ಎರಡು ಪೀರ್ಗಳು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಪರಸ್ಪರ ತಲುಪಲು ಪ್ರಯತ್ನಿಸುವುದು, ಮತ್ತು ಅದು ಬೇರೆ ಪರೀಕ್ಷೆ.
ಒಂದು ಲೇಬಲ್ ಹಿಂದೆ ಎರಡು ಪ್ರಶ್ನೆಗಳು ಅಡಗಿವೆ
ಮೊದಲ ಪ್ರಶ್ನೆ ಎಂದರೆ ಈ ನೆಟ್ವರ್ಕ್ ಹಿಂದಿನ ಹೋಸ್ಟ್ ತಿಳಿದಿರುವ ಸಾರ್ವಜನಿಕ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ಗೆ ಸೆಷನ್ ತೆರೆಯಬಹುದೇ. ಟನೆಲ್ ಕ್ಲೈಂಟ್ಗೆ ಇದು ಸಾಮಾನ್ಯ ಸಂದರ್ಭ, ಮತ್ತು ಉತ್ತರ ಬಹುತೇಕ ಯಾವಾಗಲೂ ಹೌದು. ರೌಟರ್ ಒಳಗಿನ ಮೂಲವನ್ನು ದಾಖಲಿಸುತ್ತದೆ, ಬಾಹ್ಯ ಪೋರ್ಟ್ ಹಂಚುತ್ತದೆ, ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಹಾದುಹೋಗಲು ಬಿಡುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ಒಳಗಿನಿಂದ ಪ್ರಾರಂಭವಾದ ಸೆಷನ್ಗೆ ಸೇರಿದೆ.
ಎರಡನೇ ಪ್ರಶ್ನೆ ಎಂದರೆ ವಿವಿಧ ನೆಟ್ವರ್ಕ್ಗಳ ಹಿಂದಿನ ಎರಡು ಹೋಸ್ಟ್ಗಳು ನಡುವೆ ಸರ್ವರ್ ಇಲ್ಲದೆ ಹಂಚಿದ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಂಡು ಪರಸ್ಪರ ಕಳುಹಿಸಬಹುದೇ. ಅದು ಪ್ರತಿ ನೆಟ್ವರ್ಕ್ ಆ ಬಾಹ್ಯ ಪೋರ್ಟ್ಗಳನ್ನು ಹೇಗೆ ಹಂಚುತ್ತದೆ ಎಂಬುದನ್ನು ಅವಲಂಬಿಸಿದೆ, ಮತ್ತು ಮ್ಯಾಪಿಂಗ್ನ ವರ್ತನೆಗೆ ಮಹತ್ವ ಇರುವುದು ಅಲ್ಲಿಯೇ.
ಎರಡನ್ನೂ ಬೆರೆಸುವುದು ಆ ಸಾಂಪ್ರದಾಯಿಕ ತಪ್ಪು ನಿಧಾನವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ: ಪೀರ್-ಟು-ಪೀರ್ ವೈಶಿಷ್ಟ್ಯ ವಿಫಲವಾಗುತ್ತದೆ, ಯಾರೋ NAT ಪ್ರಕಾರದ ಪರೀಕ್ಷೆ ನಡೆಸುತ್ತಾರೆ, ಅತ್ಯಂತ ಕೆಟ್ಟ ವರ್ಗವನ್ನು ನೋಡಿ ಸಾಮಾನ್ಯ ಟನೆಲ್ ಕೂಡ ಕೆಲಸ ಮಾಡಲಾರದು ಎಂದು ತೀರ್ಮಾನಿಸುತ್ತಾರೆ. ವಿಫಲವಾದ ವಸ್ತು ಎಂದಿಗೂ ಟನೆಲ್ ಆಗಿರಲಿಲ್ಲ.
ಮ್ಯಾಪಿಂಗ್ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ ಪ್ರತ್ಯೇಕ ಗುಣಗಳು
RFC ಯ ಪರಿಭಾಷೆ ಮಾರಾಟಗಾರರು ಬಳಸುವ ಹೆಸರುಗಳಿಗಿಂತ ಹೆಚ್ಚು ನಿಖರವಾಗಿದೆ, ಮತ್ತು ಅದನ್ನು ಟಿಕೆಟ್ಗೆ ತರುವುದು ಯೋಗ್ಯ ಏಕೆಂದರೆ ಅದು ವಾದಗಳನ್ನು ತೀರ್ಮಾನಿಸುತ್ತದೆ. ಮ್ಯಾಪಿಂಗ್ ಎಂದರೆ ಬಾಹ್ಯ ಪೋರ್ಟ್ ಹೇಗೆ ಹಂಚಲ್ಪಡುತ್ತದೆ. ಫಿಲ್ಟರಿಂಗ್ ಎಂದರೆ ಯಾವ ಒಳಬರುವ ಪ್ಯಾಕೆಟ್ಗಳಿಗೆ ಹಾದುಹೋಗಲು ಅವಕಾಶ. ನೆಟ್ವರ್ಕ್ ಒಂದರಲ್ಲಿ ಕಟ್ಟುನಿಟ್ಟಾಗಿರಬಹುದು ಮತ್ತು ಇನ್ನೊಂದರಲ್ಲಿ ಉದಾರವಾಗಿರಬಹುದು, ಮತ್ತು ಆ ಸಂಯೋಜನೆಯೇ ಪೀರ್-ಟು-ಪೀರ್ ಪ್ರೋಟೋಕಾಲ್ ತಾಳಿಕೊಳ್ಳಬೇಕಾದದ್ದು.
| Behaviour | What it means | Effect on a direct peer path |
|---|---|---|
| Endpoint-independent mapping | One external port for every destination | Discovery works if the port is advertised |
| Address-dependent mapping | New port per remote address | Works only if both sides probe the same pair |
| Address-and-port-dependent | New port per remote address and port | Usually needs a relay |
ಮೂರನೇ ಸಾಲು ಹೆಚ್ಚಿನ ಗ್ರಾಹಕ ರೌಟರ್ಗಳು ಮತ್ತು ಮೊಬೈಲ್ ಆಪರೇಟರ್ಗಳು ಸಮ್ಮಿತೀಯ ಎಂದು ಅರ್ಥೈಸುವುದು. ಲೇಬಲ್ ಕೇವಲ ಹಂಚಿಕೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಅಂತಹ ಮ್ಯಾಪಿಂಗ್ ಮತ್ತು ಉದಾರ ಫಿಲ್ಟರಿಂಗ್ ಇರುವ ನೆಟ್ವರ್ಕ್ ಈಗತಾನೇ ಹಂಚಿದ ಪೋರ್ಟ್ಗೆ ಒಳಬರುವ ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಇನ್ನೂ ಸ್ವೀಕರಿಸಬಹುದು, ಆದ್ದರಿಂದ ಹೋಲ್-ಪಂಚಿಂಗ್ ಕೆಲವುಗಳಲ್ಲಿ ಯಶಸ್ವಿಯಾಗುತ್ತದೆ ಮತ್ತು ಇನ್ನು ಕೆಲವುಗಳಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ.
ಫಿಲ್ಟರಿಂಗ್ಗೆ ತನ್ನದೇ ಮೂರು ಸಂದರ್ಭಗಳಿವೆ ಮತ್ತು ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಹೆಸರಿದೆ. “ಸಮ್ಮಿತೀಯ NAT” ಎಂದು ಟಿಕೆಟ್ನಲ್ಲಿ ಬರೆಯುವುದು, ಆದರೆ ಅರ್ಥ “ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್-ಅವಲಂಬಿತ ಫಿಲ್ಟರಿಂಗ್” ಎಂದಾದರೆ, ಮುಂದಿನ ವ್ಯಕ್ತಿಯನ್ನು ಕೈಪಿಡಿಯ ತಪ್ಪು ಅಧ್ಯಾಯಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ. ಎರಡೂ ಪರೀಕ್ಷೆಯಲ್ಲಿ ಬೇರೆ ರೀತಿ ವರ್ತಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ತಪ್ಪು ಕೇವಲ ಶೈಕ್ಷಣಿಕವಲ್ಲ.
ಹೆಸರು ಕೊಡುವ ಬದಲು ಮ್ಯಾಪಿಂಗ್ ಅಳೆಯಿರಿ
ನೀವು ನಿಯಂತ್ರಿಸುವ ಯಾವುದೇ UDP ಸೇವೆಯ ಸರ್ವರ್ ಬದಿಯಿಂದ ಹಂಚಿದ ಪೋರ್ಟ್ ಅನ್ನು ನೇರವಾಗಿ ಗಮನಿಸಬಹುದು. ಸಾರ್ವಜನಿಕ ಹೋಸ್ಟ್ನಲ್ಲಿ ಕ್ಯಾಪ್ಚರ್ ಪ್ರಾರಂಭಿಸಿ, ಕ್ಲೈಂಟ್ನಿಂದ ಕಳುಹಿಸಿ, ಮತ್ತು ಪ್ಯಾಕೆಟ್ ಬಂದ ಮೂಲ ಪೋರ್ಟ್ ಓದಿ:
sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820
ಎಂಡ್ಪಾಯಿಂಟ್ ಸಾಲು ಮೂರರಲ್ಲಿ ಅತ್ಯಂತ ಉಪಯುಕ್ತ, ಏಕೆಂದರೆ WireGuard ಪ್ರತಿ ಪೀರ್ನಿಂದ ಪಡೆದ ಕೊನೆಯ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ ದಾಖಲಿಸುತ್ತದೆ. ಆ ಪೋರ್ಟ್ ಅನ್ನು ಕ್ಲೈಂಟ್ ಬಳಸುತ್ತಿದೆ ಎಂದು ಭಾವಿಸುವ ಪೋರ್ಟ್ನೊಂದಿಗೆ ಹೋಲಿಸಿ. ಯಾವುದೇ ಅನುವಾದ ಸಂಭವಿಸಿದಾಗ ಅವು ಭಿನ್ನವಾಗಿರುತ್ತವೆ, ಮತ್ತು ಮುಖ್ಯ ಪ್ರಶ್ನೆ ಎಂದರೆ ಮೌಲ್ಯ ಸ್ಥಿರವಾಗಿ ಉಳಿಯುತ್ತದೆಯೇ.
ಎರಡನೇ ಗಮ್ಯ ಪೋರ್ಟ್ ಅಥವಾ ಎರಡನೇ ಸರ್ವರ್ ವಿರುದ್ಧ ವೀಕ್ಷಣೆಯನ್ನು ಪುನರಾವರ್ತಿಸಿ ಮತ್ತೆ ಹೋಲಿಸಿ. ಬಾಹ್ಯ ಪೋರ್ಟ್ ಗಮ್ಯದ ಪ್ರಕಾರ ಬದಲಾದರೆ, ಮ್ಯಾಪಿಂಗ್ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್-ಅವಲಂಬಿತ. ಅದೇ ರೀತಿ ಉಳಿದರೆ, ನೆಟ್ವರ್ಕ್ ಒಂದೇ ಮ್ಯಾಪಿಂಗ್ ನೀಡುತ್ತದೆ ಮತ್ತು ಅನ್ವೇಷಣೆಗೆ ಅವಕಾಶವಿದೆ.
STUN ಆಧಾರಿತ ಸಾಧನಗಳು ಅದೇ ವರ್ಗೀಕರಣವನ್ನು ಒಂದೇ ಹಂತದಲ್ಲಿ ವರದಿ ಮಾಡುತ್ತವೆ, ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಸಾರ್ವಜನಿಕ STUN ಸರ್ವರ್ಗೆ ಹೊರಹೋಗುವ UDP ಗೆ ಅನುಮತಿ ನೀಡಿದಾಗ ಅವನ್ನು ಬಳಸಬಹುದು. ಅನುಮತಿ ನೀಡದಿದ್ದರೆ, ಮೇಲಿನ ಕ್ಯಾಪ್ಚರ್ ವಿಧಾನ ಇನ್ನೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಮತ್ತು ನೀವು ಈಗಾಗಲೇ ನಿಯಂತ್ರಿಸುವ ಹೋಸ್ಟ್ ಹೊರತುಪಡಿಸಿ ಬೇರೆ ಏನನ್ನೂ ಬಯಸುವುದಿಲ್ಲ.
ವೈಫಲ್ಯಕ್ಕೆ ಹೊಂದುವ ಪರಿಹಾರ ಆರಿಸಿ
ವಿಫಲವಾಗುವ ವೈಶಿಷ್ಟ್ಯ ಪೀರ್-ಟು-ಪೀರ್ ಆಗಿದ್ದರೆ, ಬೆಂಬಲಿತ ಉತ್ತರಗಳು ರಿಲೇ, ಎರಡೂ ಪೀರ್ಗಳು ತಲುಪಬಹುದಾದ ಭೇಟಿ ಸೇವೆ, ಅಥವಾ ಬೇರೆ ಟೋಪೋಲಜಿ. TURN ನಿಖರವಾಗಿ ಇದಕ್ಕಾಗಿ ಇದೆ, ಮತ್ತು ತನ್ನದೇ ರಿಲೇ ಒದಗಿಸುವ ಉತ್ಪನ್ನವು ಕೆಲವು ನೆಟ್ವರ್ಕ್ಗಳು ಶತ್ರುತನದಿಂದ ಇರುವುದನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ ಎಂದು ನಿಮಗೆ ಹೇಳುತ್ತದೆ.
ವಿಫಲವಾಗುವ ವೈಶಿಷ್ಟ್ಯ ಸಾಮಾನ್ಯ ಟನೆಲ್ ಆಗಿದ್ದರೆ, ಮ್ಯಾಪಿಂಗ್ನ ವರ್ತನೆ ನಿಮ್ಮ ಸಮಸ್ಯೆ ಅಲ್ಲ ಮತ್ತು ಮೇಲಿನ ಯಾವುದೂ ಅನ್ವಯಿಸುವುದಿಲ್ಲ. ಕ್ಲೈಂಟ್ ನಿಜವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆಯೇ, ಸರ್ವರ್ ಪ್ಯಾಕೆಟ್ ನೋಡುತ್ತಿದೆಯೇ, ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ಹಿಂತಿರುಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಆ ಕ್ರಮ ಮೂರು ವೀಕ್ಷಣೆಗಳು ಮತ್ತು ಅದು ರೌಟರ್ನ NAT ವರ್ಗದ ಬಗ್ಗೆ ಏನನ್ನೂ ತಿಳಿಯುವ ಅಗತ್ಯವಿಲ್ಲ.
ಕೆಲಸ ಮಾಡದಿರುವುದು ಎಂದರೆ ಏನಾದರೂ ಸಂಪರ್ಕಗೊಳ್ಳುವವರೆಗೆ ಸ್ಥಳೀಯ ಪೋರ್ಟ್ ಬದಲಾವಣೆಗಳನ್ನು ಚೆಲ್ಲುವುದು. ಕ್ಲೈಂಟ್ನ ಮೂಲ ಪೋರ್ಟ್ ಬದಲಿಸುವುದು ನೆಟ್ವರ್ಕ್ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಹೇಗೆ ಹಂಚುತ್ತದೆ ಎಂಬುದನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ. ಐದನೇ ಪ್ರಯತ್ನದಲ್ಲಿ ಆಕಸ್ಮಿಕ ಯಶಸ್ಸು ಸುಳ್ಳು ಧನಾತ್ಮಕ, ಮತ್ತು ತಿಂಗಳುಗಳ ಕಾಲ ಅದನ್ನು ಪರಿಹಾರ ಎಂದು ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ.
ತೀರ್ಪಲ್ಲ, ವಾಸ್ತುಶಿಲ್ಪ ದಾಖಲಿಸಿ
ಉಪಯುಕ್ತ ಟಿಪ್ಪಣಿ ಯಾವ ಪ್ರೋಟೋಕಾಲ್, ಸೆಷನ್ ಯಾವ ದಿಕ್ಕಿನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಮಾರ್ಗದಲ್ಲಿ ರಿಲೇ ಇದೆಯೇ, ಮತ್ತು ತಂತಿಯ ಮೇಲೆ ಏನು ಗಮನಿಸಲಾಯಿತು ಎಂದು ಹೇಳುತ್ತದೆ. “ಸಮ್ಮಿತೀಯ NAT, ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ” ನಿಷ್ಪ್ರಯೋಜಕ, ಏಕೆಂದರೆ ಅದು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಟನೆಲ್ ಬಗ್ಗೆ ತಪ್ಪಾಗಿದೆ ಮತ್ತು ಪೀರ್ನ ಮಾರ್ಗದ ಬಗ್ಗೆ ಮಾಹಿತಿ ನೀಡುವುದಿಲ್ಲ.
ನೀವು ಪರೀಕ್ಷಿಸಿದ್ದರೆ ಅಳೆಯಲಾದ ಪೋರ್ಟ್ ಸ್ಥಿರತೆ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ನ ವರ್ತನೆಯನ್ನು ಸೇರಿಸಿ. ಆ ಎರಡು ಸಂಗತಿಗಳು ಬೇರೆಯವರಿಗೆ ಇಡೀ ತನಿಖೆಯನ್ನು ಪುನರಾವರ್ತಿಸದೆ ಹೊಸ ವೈಶಿಷ್ಟ್ಯ ಆ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆಯೇ ಎಂದು ಊಹಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತವೆ. ಅವು ಪ್ರತಿ ಸಹಾಯ ಪುಟದಲ್ಲಿ ಸ್ವಲ್ಪ ಬೇರೆ ಅರ್ಥವಿರುವ ಮಾರಾಟಗಾರ ವರ್ಗಕ್ಕಿಂತ ಚೆನ್ನಾಗಿ ಹಳೆಯದಾಗುತ್ತವೆ.
ಕೊನೆಯದಾಗಿ, ಅದನ್ನು ಬರೆಯುವಾಗ RFC 4787 ರ ಪರಿಭಾಷೆ ಕೈಯಲ್ಲಿರಿಸಿ. ನಿಖರ ಪದಗಳ ಬಳಕೆಗೆ ಒಂದು ವಾಕ್ಯದ ವೆಚ್ಚ, ಮತ್ತು ಅದು ಮುಂದಿನ ಓದುಗನಿಗೆ ಅದೇ ತಪ್ಪು ನಿಧಾನವನ್ನು ಪುನರಾವರ್ತಿಸದಂತೆ ತಡೆಯುತ್ತದೆ, ಮತ್ತು ಟಿಪ್ಪಣಿ ಬರೆಯುವ ಉದ್ದೇಶವೇ ಅದು.