iPhone VPN ನಲ್ಲಿದೆಯೇ? iOS ಆ್ಯಪ್ ನಿಜವಾಗಿ ಏನನ್ನು ನೋಡಬಲ್ಲದು
iOS SDK ನಲ್ಲಿ ಒಂದೇ VPN ಫ್ಲ್ಯಾಗ್ ಇಲ್ಲ. ಆ್ಯಪ್ ತನ್ನ ಸ್ವಂತ ಸಂರಚನೆ, ಸ್ಥಿತಿ ಅಧಿಸೂಚನೆ ಮತ್ತು ಸೀಮಿತ ಪ್ರಾಕ್ಸಿ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಅನ್ನು ಮಾತ್ರ ಗಮನಿಸಬಲ್ಲದು, ಅಷ್ಟೇ.
ಫೋನ್ VPN ನಲ್ಲಿದೆಯೇ ಎಂದು iOS ಆ್ಯಪ್ ಅನ್ನು ಕೇಳಿ, ಮತ್ತು ಪ್ರಾಮಾಣಿಕ ಉತ್ತರ ಎಂದರೆ ನೀವು ಉದ್ದೇಶಿಸಿದ ಅರ್ಥದಲ್ಲಿ ಅದು ತಿಳಿಯಲಾರದು. SDK «ಸಾಧನ ಸುರಂಗದಲ್ಲಿದೆ» ಎಂಬ ಫ್ಲ್ಯಾಗ್ ನೀಡುವುದಿಲ್ಲ, ಮತ್ತು ಅದನ್ನು ಸಮೀಪಿಸಬಹುದಾದ ಖಾಸಗಿ ಇಂಟರ್ಫೇಸ್ಗಳು ಪ್ರಕಟವಾಗುವ ಆ್ಯಪ್ಗಳಿಗೆ ಮುಚ್ಚಿವೆ. ನಿಮ್ಮ ಆ್ಯಪ್ನ ಸ್ವಂತ ಸಂರಚನೆ, ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸ್ಥಿತಿ, ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಸ್ಟ್ಯಾಕ್ನಿಂದ ಒಂದೆರಡು ಪರೋಕ್ಷ ಸುಳಿವುಗಳನ್ನು ಗಮನಿಸಬಹುದು. ಪ್ರತಿಯೊಂದೂ ಬೇರೆ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುತ್ತದೆ, ಮತ್ತು ಮುರಿದ ಪರಿಶೀಲನೆಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವು ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಸಂಪೂರ್ಣ ಉತ್ತರ ಎಂದು ಪರಿಗಣಿಸುವುದರಿಂದ ಬರುತ್ತವೆ.
ಒಂದೇ VPN ಫ್ಲ್ಯಾಗ್ನ ಪುರಾಣ
SDK ಯಲ್ಲಿ ಎಲ್ಲೋ ಸಾಧನ ಸುರಂಗದಲ್ಲಿದೆಯೇ ಎಂದು ವರದಿ ಮಾಡುವ ಗುಣಲಕ್ಷಣ ಇದೆ ಎಂಬ ನಂಬಿಕೆ ಇದೆ, ತಲುಪುವಿಕೆ ಫ್ಲ್ಯಾಗ್ ಹೋಸ್ಟ್ ಉತ್ತರಿಸುತ್ತದೆಯೇ ಎಂದು ವರದಿ ಮಾಡುವಂತೆ. ಅಂತಹ ಸಾರ್ವಜನಿಕ ಗುಣಲಕ್ಷಣ ಇಲ್ಲ. ಇದ್ದರೂ, «ಸುರಂಗ ಇದೆ» ಮತ್ತು «ನನ್ನ ಸಂಚಾರ ಅದನ್ನು ಬಳಸುತ್ತದೆ» ಬೇರೆ ಬೇರೆ ಹೇಳಿಕೆಗಳು, ಮತ್ತು ಹೆಚ್ಚಿನ ಆ್ಯಪ್ಗಳಿಗೆ ಎರಡನೆಯದು ಮಾತ್ರ ಮುಖ್ಯ.
ಈ ಅಂತರವೇ ಒಂದು ಸಾಲಿನ VPN ಪತ್ತೆದಾರವನ್ನು ಜಾಹೀರಾತು ಮಾಡುವ ಗ್ರಂಥಾಲಯಗಳು ಇಂಟರ್ಫೇಸ್ ಹೆಸರು ಅಥವಾ ಪ್ರಾಕ್ಸಿ ಕೀಯಂತಹ ಸೂಕ್ಷ್ಮ ವಸ್ತುವನ್ನು ಓದಿ ಅದನ್ನು ತೀರ್ಪಾಗಿ ಪ್ರಸ್ತುತಪಡಿಸುವ ಕಾರಣ.
nil ಅನ್ನು ನಂಬುವ ಮೊದಲು ಆದ್ಯತೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ
ಹಂಚಿಕೆಯ ಮ್ಯಾನೇಜರ್ ನಿದರ್ಶನ ನೀವು ಕೇಳಿದ ಕ್ಷಣವೇ ಇರುತ್ತದೆ, ಆದರೆ ಅದರ ಪ್ರೋಟೋಕಾಲ್ ಗುಣಲಕ್ಷಣ ಲೋಡ್ ಕಾಲ್ಬ್ಯಾಕ್ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ nil ಆಗಿ ಉಳಿಯುತ್ತದೆ. ಆದ್ದರಿಂದ nil ಪ್ರೋಟೋಕಾಲ್ «ಇನ್ನೂ ಲೋಡ್ ಆಗಿಲ್ಲ» ಎಂಬುದನ್ನು «ಸ್ಥಾಪಿಸಿಲ್ಲ» ಎಂಬಷ್ಟೇ ಸಾಮಾನ್ಯವಾಗಿ ಅರ್ಥೈಸುತ್ತದೆ. ಓದುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಬ್ಲಾಕ್ ಒಳಗೆ ಮಾಡಿ, ಮತ್ತು ಆಮೇಲೆ ಮಾತ್ರ ನಿರ್ಧರಿಸಿ: ಇರುವ ಪ್ರೋಟೋಕಾಲ್ ವಸ್ತು, ಸಕ್ರಿಯಗೊಳಿಸುವ ಫ್ಲ್ಯಾಗ್ ಆನ್ ಆಗಿರುವುದು «ಸ್ಥಾಪಿತ» ಎಂಬುದರ ರೂಪ.
ಎರಡನೇ ಸಂಕೇತ ಸಂಪರ್ಕ ವಸ್ತುವಿನ ಮೇಲಿದೆ: ಅಮಾನ್ಯ ಸ್ಥಿತಿ, ಈ ಆ್ಯಪ್ಗೆ ಯಾವುದೇ ಸಂರಚನೆ ಸ್ಥಾಪಿತವಾಗಿಲ್ಲದಿದ್ದಾಗ ಸಿಸ್ಟಂ ವರದಿ ಮಾಡುತ್ತದೆ. ಪೂರ್ಣಗೊಂಡ ಲೋಡ್ ನಂತರ ಅಮಾನ್ಯ ಸ್ಥಿತಿ ಮತ್ತು nil ಪ್ರೋಟೋಕಾಲ್ ಜೊತೆಯಾಗಿ ನಿಜವಾದ ಅನುಪಸ್ಥಿತಿ, ಸಮಯದ ಓಟವಲ್ಲ.
ಸಂಪರ್ಕ ಬದಲಾವಣೆಗಳು ಅಧಿಸೂಚನೆಗಳಾಗಿ ಬರುತ್ತವೆ
load ಮತ್ತು save ಗೆ ನೀಡಿದ ಹ್ಯಾಂಡಲರ್ಗಳು ಸಂರಚನೆಗೆ ಏನಾಯಿತು ಎಂದು ವರದಿ ಮಾಡುತ್ತವೆ, ಸುರಂಗ ಏನು ಮಾಡುತ್ತಿದೆ ಎಂದಲ್ಲ. ಸಂಪರ್ಕದ ಸಮಯದಲ್ಲಿ ಅವುಗಳಲ್ಲಿ ಒಂದು ಬೆಂಕಿ ಹೊತ್ತಿಸುವುದನ್ನು ಕಾಯುವುದು ಎಂದಿಗೂ ಪರಿಹಾರವಾಗದ ಓಟ. ಬದಲಿಗೆ ಸ್ಥಿತಿ ಬದಲಾವಣೆಯ ಅಧಿಸೂಚನೆಯನ್ನು ಗಮನಿಸಿ, ಮತ್ತು ಅದು ಬಂದಾಗ ಸಂಪರ್ಕ ವಸ್ತುವಿನ ಪ್ರಸ್ತುತ ಮೌಲ್ಯವನ್ನು ಓದಿ.
ಸಂರಚನೆ ಸ್ಥಾಪಿತವಾದ ನಂತರ ಸಂಪರ್ಕ ಸ್ಥಿತಿ ಸಣ್ಣ ಕ್ರಮವನ್ನು ದಾಟುತ್ತದೆ: ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡಿದೆ, ಸಂಪರ್ಕಿಸುತ್ತಿದೆ, ಸಂಪರ್ಕಗೊಂಡಿದೆ, ಮರುದೃಢೀಕರಿಸುತ್ತಿದೆ, ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುತ್ತಿದೆ. «ಸಂಪರ್ಕಗೊಂಡಿದೆ» ಸುರಂಗವನ್ನು ವಿವರಿಸುತ್ತದೆ, ಅದರ ಹಿಂದಿನ ಸರ್ವರ್ ಅನ್ನಲ್ಲ, ಆದ್ದರಿಂದ ಸಂಚಾರ ಹರಿಯುತ್ತಿದೆ ಎಂಬುದಕ್ಕೆ ಸಾಕ್ಷ್ಯವಲ್ಲ. On-demand ಆ್ಯಪ್ ಸಸ್ಪೆಂಡ್ ಆಗಿರುವಾಗಲೂ ಸುರಂಗವನ್ನು ಎತ್ತಬಹುದು, ಮತ್ತು ಆಗ ನವೀಕರಿಸಲು ಏನಾದರೂ ಇರುವ ಮೊದಲೇ ಅಧಿಸೂಚನೆ ಬರುತ್ತದೆ.
ಸೀಮಿತ ಪ್ರಾಕ್ಸಿ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಸುಳಿವು, ತೀರ್ಪಲ್ಲ
CFNetwork ಆ್ಯಪ್ಗೆ ಸಿಸ್ಟಂನ ಪ್ರಸ್ತುತ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀಡಬಹುದು, ಮತ್ತು ಆ ಫಲಿತಾಂಶದ ಒಳಗೆ ಇಂಟರ್ಫೇಸ್ ಹೆಸರಿನಿಂದ ಕೀಲಿಯಾದ ಸೀಮಿತ ನಿಘಂಟು ಇದೆ. tun, utun, ppp, ipsec ಅಥವಾ tap ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಹೆಸರನ್ನು ನೋಡುವುದು ಸುರಂಗ ಇರುವ ಸುಳಿವು. ಅದು ಈ ಆ್ಯಪ್ ನೋಡಬಹುದಾದದ್ದರ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಆಗಿ ಉಳಿಯುತ್ತದೆ, ಪ್ಯಾಕೆಟ್ಗಳು ಎಲ್ಲಿಗೆ ಹೋಗುತ್ತವೆ ಎಂಬ ಹೇಳಿಕೆಯಲ್ಲ.
ಪ್ರದಾತರು ಹೆಸರಿಸುವಿಕೆಯಲ್ಲಿ ಒಪ್ಪುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಪೂರ್ವಪ್ರತ್ಯಯ ಇಲ್ಲದಿರುವುದು ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಇರುವ ಇಂಟರ್ಫೇಸ್ ಸಂಚಾರವನ್ನು ಹೊತ್ತುಕೊಳ್ಳದೆಯೂ ಇರಬಹುದು. ತಲುಪುವಿಕೆ ಇನ್ನೂ ದುರ್ಬಲ: ಖಾಸಗಿ ವಿಳಾಸಕ್ಕೆ ಯಶಸ್ವಿ ವಿನಂತಿ ಆ ಕ್ಷಣದಲ್ಲಿ ಆ ವಿನಂತಿಗೆ ಮಾರ್ಗ ಕೆಲಸ ಮಾಡಿತು ಎಂದು ತೋರಿಸುತ್ತದೆ, VPN ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದಲ್ಲ.
ಸಿಮ್ಯುಲೇಟರ್ Mac ಅನ್ನು ಎರವಲು ಪಡೆಯುತ್ತದೆ, ಇತರ ಆ್ಯಪ್ಗಳು ಅಗೋಚರವಾಗಿ ಉಳಿಯುತ್ತವೆ
ಸಿಮ್ಯುಲೇಟರ್ಗೆ ತನ್ನದೇ ನೆಟ್ವರ್ಕ್ ಸ್ಟ್ಯಾಕ್ ಇಲ್ಲ; ಅದು ಮಾಡುವ ಪ್ರತಿಯೊಂದು ಸಂಪರ್ಕ Mac ನದು. ಆದ್ದರಿಂದ ಹೋಸ್ಟ್ Mac ನಲ್ಲಿ ಚಲಿಸುವ VPN ಸಿಮ್ಯುಲೇಟೆಡ್ ಆ್ಯಪ್ಗೆ ಈಗಾಗಲೇ ಜಾರಿಯಲ್ಲಿದೆ, ಮತ್ತು ಸಿಮ್ಯುಲೇಟರ್ನ ಸ್ವಂತ ಸೆಟ್ಟಿಂಗ್ಗಳು ಏನನ್ನೂ ತೋರಿಸುವುದಿಲ್ಲ. ಸಿಮ್ಯುಲೇಟರ್ ಪ್ರಾರಂಭವಾದ ನಂತರ ಸುರಂಗ ಏರಿದ್ದರೆ, ಆ್ಯಪ್ ಡೀಬಗ್ ಮಾಡುವುದಕ್ಕಿಂತ ಅದನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ವೇಗ. ಪ್ರಮಾಣಿತವಲ್ಲದ ಪೋರ್ಟ್ನಲ್ಲಿರುವ ಹೋಸ್ಟ್ಗೆ ಆ ಪೋರ್ಟ್ URL ನಲ್ಲಿ ಬೇಕು, ಅಥವಾ socat TCP-LISTEN:12345,fork TCP:host:12345 ನಂತಹ ಸ್ಥಳೀಯ ಮುಂದೂಡಿಕೆ ಬೇಕು.
ಸಾರ್ವಜನಿಕ API ಗಳು ಇತರ ಆ್ಯಪ್ಗಳಿಗೆ ಅಥವಾ ಸಂರಚನಾ ಪ್ರೊಫೈಲ್ಗಳಿಗೆ ಸೇರಿದ VPN ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವುದಿಲ್ಲ. ಒಂದು ತಿಳಿದ ಆ್ಯಪ್ಗೆ canOpenURL ಮೂಲಕ URL ಸ್ಕೀಮ್ ಪರೀಕ್ಷೆಯೇ ಸಾಗಿಸಬಹುದಾದ ತಂತ್ರ, ಮತ್ತು iOS 9 ರಿಂದ ಕೇಳಿದ ಸ್ಕೀಮ್ ನಿಮ್ಮ Info.plist ನಲ್ಲಿ ಘೋಷಿಸಬೇಕು; ಅದನ್ನು ಬಿಟ್ಟರೆ ಕರೆ false ಹಿಂತಿರುಗಿಸುತ್ತದೆ. OpenVPN Connect openvpn:// ಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ, ಇದು ಅದನ್ನು ಉತ್ತಮ ಉದಾಹರಣೆ ಮತ್ತು ಕೆಟ್ಟ ಸಾಮಾನ್ಯ ಪತ್ತೆದಾರನನ್ನಾಗಿ ಮಾಡುತ್ತದೆ.
ಮೂರು ವೀಕ್ಷಣೆಗಳನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಅವು ಏನನ್ನು ಅರ್ಥೈಸುತ್ತವೆ ಎಂದು ಹೇಳಿ
ಪ್ರಾಯೋಗಿಕವಾಗಿ ಮೂರು ಫಲಿತಾಂಶಗಳನ್ನು ಜೋಡಿಸಿ: ಲೋಡ್ ಆಗಿ ಸಕ್ರಿಯವಾಗಿರುವ ಸಂರಚನೆ, ಅಮಾನ್ಯವಲ್ಲದ ಸಂಪರ್ಕ ಸ್ಥಿತಿ, ಮತ್ತು ಸುರಂಗದ ಮೂಲಕ ಮಾತ್ರ ತಲುಪಬಹುದಾದ ವಿಳಾಸಕ್ಕೆ ವಿನಂತಿ. ಪ್ರತಿಯೊಂದೂ ಒಂಟಿಯಾಗಿ ದಾರಿತಪ್ಪಿಸುತ್ತದೆ; ಒಟ್ಟಿಗೆ ಅವು ಆ್ಯಪ್ ಏನನ್ನು ತಿಳಿಯಬಹುದು ಎಂದು ಹೇಳುತ್ತವೆ, ಬಳಕೆದಾರ ಏನನ್ನು ಊಹಿಸುತ್ತಾನೆ ಎಂದಲ್ಲ.
ಫಲಿತಾಂಶವನ್ನು ನಿಮ್ಮ ಡಯಾಗ್ನೋಸ್ಟಿಕ್ಸ್ನಲ್ಲಿ ಒಂದು boolean ಆಗಿ ಅಲ್ಲ, ಮೂರು ಸಾಲುಗಳಾಗಿ ಬರೆಯಿರಿ. ಬಳಕೆದಾರ VPN ಆಫ್ ಇದೆ ಎಂದು ಹೇಳಿದಾಗ ಮತ್ತು ನಿಮ್ಮ ಆ್ಯಪ್ ಒಪ್ಪದಿದ್ದಾಗ, ಮೂರು ಸಾಲುಗಳು ಯಾವ ವೀಕ್ಷಣೆ ಬೇರೆಯಾಯಿತು ಎಂದು ತೋರಿಸುತ್ತವೆ, ಮತ್ತು ಅದೇ ನೀವು ಕ್ರಮ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ಬೆಂಬಲ ಟಿಕೆಟ್ ಮತ್ತು «ನನ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ» ಎಂದು ಮುಗಿಯುವ ಟಿಕೆಟ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸ.