ನೀವು ಸೆಟ್ಟಿಂಗ್ಸ್‌ನಲ್ಲಿ VPN ಸಾಲನ್ನು ಟ್ಯಾಪ್ ಮಾಡುತ್ತೀರಿ, ಬೇರೆಯವರು ಸ್ಥಾಪಿಸಿದ ಪ್ರೊಫೈಲ್ ಕಾಣುತ್ತೀರಿ, ಮತ್ತು ಅದನ್ನು ಸೇರಿಸುವ ಕರೆಯನ್ನು ಹುಡುಕಲು ಪ್ರಾರಂಭಿಸುತ್ತೀರಿ. ಅಂತಹ ಕರೆ ಇಲ್ಲ. ಅಪ್ಲಿಕೇಶನ್ VpnService ಮೂಲಕ ತನ್ನದೇ ಸುರಂಗವನ್ನು ತೆರೆಯಬಹುದು, ಆದರೆ ಆ ಪಟ್ಟಿಯ ನಮೂದುಗಳು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಮತ್ತು ಅವನ್ನು ರಚಿಸಿದ ಕ್ಲೈಂಟ್‌ಗೆ ಸೇರಿವೆ. ರೇಖೆ ಎಲ್ಲಿದೆ ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ತಿಳಿಯುವುದು ಗುಪ್ತ ಕ್ಲಾಸ್‌ಗಳನ್ನು ಅಟ್ಟಿಸಿಕೊಂಡು ಹೋಗುವ ಒಂದು ವಾರವನ್ನು ಉಳಿಸುತ್ತದೆ.

ಸೆಟ್ಟಿಂಗ್ಸ್ ಸ್ಕ್ರೀನ್ ತೋರಿಸುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ

VPN ಪಟ್ಟಿ ಸಿಸ್ಟಮ್ ಅಥವಾ ವೆಂಡರ್ ಕ್ಲೈಂಟ್ ಸ್ಥಾಪಿಸಿದ ಪ್ರೊಫೈಲ್‌ಗಳ ನೋಂದಣಿಯಾಗಿದೆ: PPTP, L2TP/IPsec, IKEv2, ಮತ್ತು OEM ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ MDM ತಳ್ಳಿದ ಯಾವುದೇ ಸಾಲುಗಳು. ಪ್ರತಿ ಸಾಲು ಸರ್ವರ್ ವಿಳಾಸ, ರುಜುವಾತುಗಳು ಮತ್ತು ನಿಮ್ಮ ಪ್ರಕ್ರಿಯೆಯ ಹೊರಗೆ ಬದುಕುವ ಪ್ರೋಟೋಕಾಲ್ ಅನುಷ್ಠಾನವನ್ನು ಹೊತ್ತಿರುತ್ತದೆ. ಬಳಕೆದಾರರು ಅಲ್ಲಿ ಸಂಪರ್ಕಿಸು ಟ್ಯಾಪ್ ಮಾಡಿದಾಗ ಸುರಂಗವನ್ನು ಎತ್ತುವುದು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಕ್ಲೈಂಟ್, ನಿಮ್ಮ ಕೋಡ್ ಅಲ್ಲ. ಅದಕ್ಕೇ ಸಾಲು ಮರುಪ್ರಾರಂಭದ ನಂತರವೂ ಉಳಿಯುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೇ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದರೆ ಅದು ಎಂದಿಗೂ ತೆಗೆಯುವುದಿಲ್ಲ.

ಬಳಕೆದಾರರ ಬದಿಯಿಂದ ಪಟ್ಟಿ API ಮೇಲ್ಮೈಯಂತೆ ಕಾಣುತ್ತದೆ, VPN ಸೇರಿಸುವುದು ಒಂದು ಉದ್ದೇಶದ ದೂರದಲ್ಲಿರಬೇಕಾದ ಸ್ಥಳ. ಹಾಗಿಲ್ಲ. ಅದನ್ನು ಸ್ಪರ್ಶಿಸುವ ಏಕೈಕ ಸಾರ್ವಜನಿಕ ಪ್ರವೇಶ ಬಿಂದುಗಳು ನ್ಯಾವಿಗೇಷನ್ ಉದ್ದೇಶಗಳು, ಮತ್ತು ಅದರಲ್ಲಿ ಬರೆಯುವ ಎಲ್ಲವೂ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅಥವಾ ವಿಶೇಷಾಧಿಕಾರವುಳ್ಳ ಘಟಕಕ್ಕೆ ಸೇರಿದೆ.

ಪ್ರಾಯೋಗಿಕ ಪರಿಣಾಮ: ಬೆಂಬಲ ಪಠ್ಯವು ಬಳಕೆದಾರರಿಗೆ ಸೆಟ್ಟಿಂಗ್ಸ್‌ನಲ್ಲಿ ಪ್ರೊಫೈಲ್ ಸೇರಿಸಲು ಹೇಳಿದರೆ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಆ ಹರಿವಿನ ಭಾಗವೇ ಅಲ್ಲ.

VpnService ನಿಜವಾಗಿ ಏನು ನೀಡುತ್ತದೆ

VpnService ಮತ್ತು VpnService.Builder ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ಮಾಲಕತ್ವದ ಒಂದು ಸುರಂಗವನ್ನು ವಿವರಿಸುತ್ತವೆ. ನೀವು ವಿಳಾಸಗಳು, ಮಾರ್ಗಗಳು, DNS ಸರ್ವರ್‌ಗಳು ಮತ್ತು MTU ಸೇರಿಸುತ್ತೀರಿ, addAllowedApplication() ಅಥವಾ addDisallowedApplication() ಮೂಲಕ ಸಂಚಾರವನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತೀರಿ, ನಂತರ establish() TUN ಇಂಟರ್‌ಫೇಸ್‌ಗೆ ParcelFileDescriptor ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಆ ಕ್ಷಣದಿಂದ ಅಪ್ಲಿಕೇಶನ್ IP ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಓದಿ ಉತ್ತರಗಳನ್ನು ಬರೆಯುತ್ತದೆ, ಅಂದರೆ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವುದು ಅಥವಾ ಎಂಬೆಡ್ ಮಾಡುವುದು ನಿಮ್ಮ ಕೆಲಸ: OpenVPN, WireGuard, ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್‌ಪೋರ್ಟ್.

ಆ ಕ್ರಮದಲ್ಲಿ ಯಾವುದೂ PPTP, L2TP/IPsec ಅಥವಾ IKEv2 ಮಾತನಾಡುವುದಿಲ್ಲ. Builder ನಲ್ಲಿ ಸಿಸ್ಟಮ್‌ನ L2TP ಕ್ಲೈಂಟ್ ಬಳಸು ಎಂದು ಹೇಳುವ ಸ್ವಿಚ್ ಇಲ್ಲ, ಮತ್ತು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಈಗಾಗಲೇ ಹೊಂದಿರುವ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಅನುಮತಿಸುವ ಕಾಲ್‌ಬ್ಯಾಕ್ ಇಲ್ಲ. ಇದೇ ನಿಜವಾದ ಗಡಿ, ಮತ್ತು ಇದು ಅನುಮತಿಗಳ ಕೊರತೆ ಅಲ್ಲ, ವಿನ್ಯಾಸದ ಗಡಿ.

ಹಾಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ Android ನಲ್ಲಿ ಖಂಡಿತವಾಗಿ VPN ಕ್ಲೈಂಟ್ ಆಗಿರಬಹುದು. ಫೋನ್ನೊಂದಿಗೆ ಬರುವ ಕ್ಲೈಂಟ್‌ಗಳ ನಿರ್ವಾಹಕ ಮಾತ್ರ ಆಗಿರಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಒಪ್ಪಿಗೆಯ ಸಂವಾದ ಅಲಂಕಾರವಲ್ಲ

ನಿಮ್ಮ ಸುರಂಗ ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಸಂಚಾರವನ್ನು ಹಿಡಿಯಬಲ್ಲದು, ಆದ್ದರಿಂದ ಸಿಸ್ಟಮ್ ಬಳಕೆದಾರರಿಂದ ಸ್ಪಷ್ಟ ಒಪ್ಪಿಗೆ ಪಡೆಯುತ್ತದೆ. prepare() ನೀವು ಪ್ರಾರಂಭಿಸಬೇಕಾದ Intent ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಒಪ್ಪಿಗೆ ನಿಮ್ಮ ಪ್ಯಾಕೇಜ್‌ಗೆ ಬದ್ಧವಾಗಿದೆ, ಮತ್ತು ಸುರಂಗ ಚಾಲ್ತಿಯಲ್ಲಿರುವಾಗ ಸ್ಟೇಟಸ್ ಬಾರ್ ಶಾಶ್ವತ ಸೂಚಕ ತೋರಿಸುತ್ತದೆ. ಎರಡನೇ VPN ಮೇಲೆ ಬಂದರೆ ಮೊದಲನೆಯದು ನಿಷ್ಕ್ರಿಯವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ Android ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದೇ ಸಕ್ರಿಯ VPN ಚಲಾಯಿಸುತ್ತದೆ.

ಒಂದೇ-ಸಕ್ರಿಯ ನಿಯಮ ಪರೀಕ್ಷೆಯಲ್ಲಿ ಜನರನ್ನು ಎಡವಿಸುತ್ತದೆ. ಕಾರ್ಪೊರೇಟ್ ಕ್ಲೈಂಟ್ ಸಂಪರ್ಕದಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ಸುರಂಗವನ್ನು ಮೇಲೆ ಎತ್ತಿ ನಿಮ್ಮ ಕೋಡ್ ಮುರಿದಿದೆ ಎಂದು ತೀರ್ಮಾನಿಸುತ್ತೀರಿ, ಆದರೆ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಬೇರೆ ಕ್ಲೈಂಟ್‌ನಿಂದ ಬದಲಾಯಿತು ಅಷ್ಟೇ. ಒಪ್ಪಿಗೆಗಳನ್ನು ನಂತರ ಹಿಂಪಡೆಯಬಹುದು, ಮತ್ತು ಒಪ್ಪಿಗೆ ಚಟುವಟಿಕೆ ಇಲ್ಲದ ಸಾಧನಗಳಲ್ಲಿ prepare() null ಹಿಂತಿರುಗಿಸಬಹುದು, ಆದ್ದರಿಂದ establish() ಇನ್ನೂ ವೈಫಲ್ಯವನ್ನು ನಿಭಾಯಿಸಬೇಕು.

ಗುಪ್ತ API ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಸ್ ಉದ್ದೇಶಗಳು

ಹಳೆಯ ಉತ್ತರಗಳು ಒಳನಿರ್ಮಿತ ಕ್ಲೈಂಟ್ ಬಳಸುವ com.android.internal ಕ್ಲಾಸ್‌ಗಳು ಮತ್ತು AIDL ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಸೂಚಿಸುತ್ತವೆ. ಅವು SDK ನಲ್ಲಿ ಇಲ್ಲ, ಬಿಡುಗಡೆಗಳ ನಡುವೆ ಸೂಚನೆ ಇಲ್ಲದೆ ಬದಲಾಗುತ್ತವೆ, ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಸ್ಟೋರ್‌ಗಳು ಆ ಪ್ರವೇಶವನ್ನು ಅಪಾಯವೆಂದು ಪರಿಗಣಿಸುತ್ತವೆ. ಸಾಧನವನ್ನು ರೂಟ್ ಮಾಡಿದರೂ ಅವು ಸ್ಥಿರವಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ root ಮತ್ತು ಗುಪ್ತ API ಪ್ರವೇಶ ಬೇರೆಬೇರೆ ಸಮಸ್ಯೆಗಳು.

ಬೆಂಬಲಿತ ನ್ಯಾವಿಗೇಷನ್ ಸಹಾಯಕ Settings.ACTION_VPN_SETTINGS, ಅದರ ಮೌಲ್ಯ android.net.vpn.SETTINGS. ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಅದನ್ನು ಪರಿಹರಿಸಿ, ಏಕೆಂದರೆ ಕೆಲವು OEM ಬಿಲ್ಡ್‌ಗಳು ಆ ಚಟುವಟಿಕೆಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಪರಿಹಾರ ವಿಫಲವಾದಾಗ ಬರೆದ ಹಂತಗಳಿಗೆ ಹೋಗಿ. ಅದು ಬಳಕೆದಾರರನ್ನು ಸ್ಕ್ರೀನ್‌ಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ ಮತ್ತು ಏನನ್ನೂ ಸಂರಚಿಸುವುದಿಲ್ಲ.

ಸಾಧನ-ಮಾಲೀಕ ಮತ್ತು MDM ಮಾರ್ಗಗಳು ಜನರು ಸಾಮಾನ್ಯವಾಗಿ ಉದ್ದೇಶಿಸುವ ವಿನಾಯಿತಿ. DevicePolicyManager ಯಾವಾಗಲೂ-ಚಾಲ್ತಿಯಲ್ಲಿರುವ VPN ಪ್ಯಾಕೇಜ್ ನಿಗದಿಪಡಿಸಬಹುದು, ಮತ್ತು ನಿರ್ವಹಿತ ಸಂರಚನೆಗಳು ಅವನ್ನು ಬೆಂಬಲಿಸುವ ಕ್ಲೈಂಟ್‌ಗೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮೊದಲೇ ಲೋಡ್ ಮಾಡಬಹುದು, ಆದರೆ ಅದು ಇನ್ನೂ ಸಾರ್ವಜನಿಕ SDK PPTP ಪ್ರೊಫೈಲ್ ಬರೆಯುವುದಿಲ್ಲ.

ಬಳಕೆದಾರರ ಬದಿಯಿಂದ ನಿರ್ಧಾರವನ್ನು ನಡೆಯಿರಿ

ನಿಮ್ಮ ಉತ್ಪನ್ನ ಸಂಚಾರವನ್ನು ಸಾಗಿಸಬೇಕಾದರೆ, VpnService ಜೊತೆಗೆ ನಿಜವಾದ ಪ್ರೋಟೋಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಯೋಜಿಸಿ, ಮತ್ತು ಒಪ್ಪಿಗೆ ಹರಿವು ಹಾಗೂ ಒಂದು-VPN ನಿಯಮಕ್ಕೆ ಸಮಯ ಕಾಯ್ದಿರಿಸಿ. ಗುರಿ ಇರುವ ಕಾರ್ಪೊರೇಟ್ ಪ್ರೊಫೈಲ್‌ಗೆ ಸಂಪರ್ಕಿಸುವುದಾದರೆ, ನಿಮ್ಮ ಕೆಲಸ ಮಾರ್ಗದರ್ಶನ: ಸೆಟ್ಟಿಂಗ್ಸ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಆಳವಾದ ಲಿಂಕ್, ಕ್ಷೇತ್ರಗಳ ದಾಖಲೆ, ಮತ್ತು ಸುರಂಗವನ್ನು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಕ್ಲೈಂಟ್‌ಗೆ ಮಾಡಲು ಬಿಡಿ. ಅಪ್ಲಿಕೇಶನ್ ಖಾಸಗಿ ಎಂಡ್‌ಪಾಯಿಂಟ್ ತಲುಪಬೇಕಾದರೆ ಮಾತ್ರ, ಅದಕ್ಕೆ ತನ್ನದೇ ಸುರಂಗ ಅಗತ್ಯವೇ ಇಲ್ಲ.

ಕೋಡ್ ಬರೆಯುವ ಮೊದಲು ಆ ನಿರ್ಧಾರವನ್ನು ಬರೆಯಿರಿ, ಏಕೆಂದರೆ ಮೊದಲ ಸ್ಪ್ರಿಂಟ್ ನಂತರ ಮೂರು ಮಾರ್ಗಗಳಲ್ಲಿ ಬಹುತೇಕ ಏನೂ ಸಾಮ್ಯವಿಲ್ಲ.

ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಕೊನೆಯ ಪರಿಶೀಲನೆ: ಅಗತ್ಯವು ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಸಂಪರ್ಕಿಸುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತದೆಯೇ, ಅಥವಾ ಸಾಧನ ಸಂಪರ್ಕಿಸುತ್ತದೆ ಎಂದು? ಮೊದಲನೆಯದು VpnService, ಎರಡನೆಯದು ನೀವು ರಚಿಸಲಾಗದ ಪ್ರೊಫೈಲ್. ಆ ವಾಕ್ಯವನ್ನು ಸರಿಯಾಗಿ ಮಾಡುವುದು ಯಾವುದೇ ಮರುರಚನೆಗಿಂತ ಅಗ್ಗ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು