Android OpenVPN ಟನಲ್ ವಿಳಾಸವಿಲ್ಲದೆ ರೂಟ್ ಸೇರಿಸುವುದಿಲ್ಲ
ಫೋನ್ ಟನಲ್ ವಿಳಾಸವನ್ನು ಹೊಂದುವವರೆಗೆ Android OpenVPN ಕ್ಲೈಂಟ್ಗಳು ರೂಟ್ಗಳನ್ನು ಸೇರಿಸಲಾರವು. ಯಾರು ಅದನ್ನು ನಿಯೋಜಿಸುತ್ತಾರೆ, ಯಾವ pull ಫಿಲ್ಟರ್ಗಳು ಅದನ್ನು ಬಿಡುತ್ತವೆ ಮತ್ತು ನೀವೇ ಯಾವಾಗ ಟೈಪ್ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಿ.
ನಿಮ್ಮ Android OpenVPN ಪ್ರೊಫೈಲ್ ರೂಟ್ ಸೇರಿಸಲು ವಿಫಲವಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಫೋನ್ ವರ್ಚುವಲ್ ಇಂಟರ್ಫೇಸ್ನಲ್ಲಿ ಯಾವುದೇ ವಿಳಾಸವನ್ನು ಹೊಂದಿಲ್ಲ, ಆದ್ದರಿಂದ ರೂಟ್ ತೋರಿಸಲು ಏನೂ ಇಲ್ಲ. ರೂಟ್ಗಳು ಪ್ಯಾಕೆಟ್ಗಳು ಎಲ್ಲಿಗೆ ಹೋಗಬೇಕು ಎಂಬುದನ್ನು ಮಾತ್ರ ಉತ್ತರಿಸುತ್ತವೆ. ಟನಲ್ ವಿಳಾಸವು ಟನಲ್ ಒಳಗೆ ಫೋನ್ ಯಾರು ಎಂಬುದನ್ನು ಉತ್ತರಿಸುತ್ತದೆ, ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಅಸ್ತಿತ್ವಕ್ಕೆ ಬರುವ ಮೊದಲು ಕ್ಲೈಂಟ್ ಒಂದನ್ನು ಒದಗಿಸಬೇಕು. ಕೆಳಗಿನ ನಾಲ್ಕು ಪರಿಶೀಲನೆಗಳನ್ನು ಕ್ರಮವಾಗಿ ಮಾಡಿ ಮತ್ತು ಮೊದಲ ವೈಫಲ್ಯದಲ್ಲಿ ನಿಲ್ಲಿಸಿ, ಏಕೆಂದರೆ ವಿಳಾಸ ಇರುವ ಮೊದಲು ರೂಟ್ಗಳನ್ನು ಸಂಪಾದಿಸುವುದು ನಿಜವಾದ ಸಮಸ್ಯೆಯನ್ನು ಮರೆಮಾಡುತ್ತದೆ.
ಕ್ಲೈಂಟ್ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಕ್ರಮದಲ್ಲಿಯೇ ವೈಫಲ್ಯವನ್ನು ಓದಿ
Android ನ VpnService.Builder ಎರಡು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಇಡುತ್ತದೆ: addAddress() ಆ್ಯಪ್ ನಿರ್ಮಿಸುತ್ತಿರುವ ಇಂಟರ್ಫೇಸ್ಗೆ ವಿಳಾಸವನ್ನು ಇಡುತ್ತದೆ, addRoute() ಗಮ್ಯಸ್ಥಾನದ ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಮತ್ತು establish() ಕನಿಷ್ಠ ಒಂದು ವಿಳಾಸ ಸೇರಿಸುವವರೆಗೆ ಇಂಟರ್ಫೇಸ್ ರಚಿಸಲು ನಿರಾಕರಿಸುತ್ತದೆ. OpenVPN ಕ್ಲೈಂಟ್ ಪ್ರೊಫೈಲ್ ಮತ್ತು ಸರ್ವರ್ ತಳ್ಳುವ ಆಯ್ಕೆಗಳನ್ನು ನಿಖರವಾಗಿ ಆ ಕರೆಗಳಿಗೆ ಮ್ಯಾಪ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ವಿಳಾಸವನ್ನು ಎಂದಿಗೂ ವಿಶ್ಲೇಷಿಸದ ಸಂಪರ್ಕವು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ಮಿಸಲಾರದು.
ನೀವು ಓದುತ್ತಿರುವ ಲಾಗ್ ಸಾಲು ರೂಟ್ ಅನ್ನು ಹೆಸರಿಸಬಹುದು ಆದರೆ ಕಾರಣ ಒಂದು ಹೆಜ್ಜೆ ಹಿಂದೆ ಇರುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಇದೇ ಕಾರಣ. ಇಂಟರ್ಫೇಸ್ ಅಸ್ತಿತ್ವಕ್ಕೆ ಬಂದ ನಂತರವೇ ಕ್ಲೈಂಟ್ ರೂಟ್ ಹಂತವನ್ನು ತಲುಪುತ್ತದೆ; ವಿಳಾಸ ಇಲ್ಲದಿದ್ದರೆ ರೂಟ್ ಕರೆ ತಕ್ಷಣ ವಿಫಲವಾಗುತ್ತದೆ ಅಥವಾ ಎಂದಿಗೂ ಚಲಿಸುವುದಿಲ್ಲ. ಲಾಗ್ ರೂಟ್ ಸೇರಿಸಲಾಗದು ಎಂದು ಹೇಳಿದಾಗ, ರೂಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ನಿಂದ ಅಲ್ಲ, ವಿಳಾಸದಿಂದ ಪ್ರಾರಂಭಿಸಿ.
ಪರಿಶೀಲನೆ 1: ಸರ್ವರ್ ಉತ್ತರದಲ್ಲಿ ವಿಳಾಸವನ್ನು ಇಡುತ್ತದೆಯೇ?
ರೂಟ್ ಮಾಡಿದ OpenVPN ಸೇವೆಗೆ ವಿಳಾಸವು ಸರ್ವರ್ ಪೂಲ್ನಿಂದ ಅಥವಾ ಪ್ರತಿ ಕ್ಲೈಂಟ್ ಹಂಚಿಕೆಯಿಂದ ಬರುತ್ತದೆ, ಮತ್ತು ಅದರ ಆಕಾರವನ್ನು ಟೋಪಾಲಜಿ ನಿರ್ಧರಿಸುತ್ತದೆ. OpenVPN 2.4 ಅಥವಾ ಹೊಸ ಸರ್ವರ್ನಲ್ಲಿ, ಸಬ್ನೆಟ್ ಟೋಪಾಲಜಿ ಇರುವ ಸೇವೆ ಹೀಗೆ ಕಾಣುತ್ತದೆ:
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd
ಆ ಆಕಾರದೊಂದಿಗೆ ಸರ್ವರ್ ifconfig 10.8.0.6 255.255.255.0 ನಂತಹದನ್ನು ತಳ್ಳುತ್ತದೆ. ಹಳೆಯ topology net30 ನಿಯೋಜನೆ ಬದಲಿಗೆ ಪೀರ್ ವಿಳಾಸವನ್ನು ತಳ್ಳುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ifconfig 10.8.0.6 10.8.0.5, ಆದ್ದರಿಂದ ಎರಡು ಮಾದರಿಗಳ ನಡುವೆ ಸರಿಸಿದ ಪ್ರೊಫೈಲ್ ಸರಿಯಾಗಿ ಕಾಣಬಹುದು ಆದರೆ ತಪ್ಪಾದ ನೆಟ್ಮಾಸ್ಕ್ ಅನ್ನು ಹೊತ್ತಿರುತ್ತದೆ.
ಕ್ಲೈಂಟ್ ಸಂಪರ್ಕ ಲಾಗ್ನಲ್ಲಿ ತಳ್ಳಲಾದ ಆಯ್ಕೆಗಳ ಗುಂಪನ್ನು ಹುಡುಕಿ. ಅದರಲ್ಲಿ ifconfig ಸಾಲೇ ಇಲ್ಲದಿದ್ದರೆ, ಸರ್ವರ್ ಎಂದಿಗೂ ವಿಳಾಸ ಕಳುಹಿಸಿಲ್ಲ ಅಥವಾ ಕ್ಲೈಂಟ್ ಆಯ್ಕೆಯನ್ನು ನಿರಾಕರಿಸಿದೆ. client-config-dir ಬಳಸುವ ಸರ್ವರ್ನಲ್ಲಿ, ಪ್ರಮಾಣಪತ್ರದ common name ಹೆಸರಿನ ಫೈಲ್ ಇರಬೇಕು ಮತ್ತು ಹಂಚಿಕೆಯನ್ನು ಹೊಂದಿರಬೇಕು:
# ccd/phone-anna
ifconfig-push 10.8.0.6 255.255.255.0
ಪರಿಶೀಲನೆ 2: ಕ್ಲೈಂಟ್ ಪಡೆದ ವಿಳಾಸವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆಯೇ?
ತುಂಬಾ ಅಗಲವಾದ ಫಿಲ್ಟರ್ ಎರಡನೇ ಸಾಮಾನ್ಯ ಕಾರಣ. pull-filter OpenVPN 2.4 ಮತ್ತು ನಂತರದ್ದರಲ್ಲಿ ಇದೆ, ಮತ್ತು ಹಲವು ಫಿಲ್ಟರ್ಗಳು ಒಂದೇ ಆಯ್ಕೆಗೆ ಹೊಂದಿಕೆಯಾದಾಗ ಕೊನೆಯದು ಗೆಲ್ಲುತ್ತದೆ, ಆದ್ದರಿಂದ ಕೊನೆಯಲ್ಲಿ ಬಿಟ್ಟ catch-all ದೋಷವಿಲ್ಲದೆ ವಿಳಾಸವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ:
# removes every pushed option, including the address
pull-filter ignore "ifconfig"
pull-filter ignore "route"
ನೀವು ನಿಜವಾಗಿಯೂ ತೊಡೆದುಹಾಕಲು ಬಯಸುವ ಆಯ್ಕೆಗೆ ಫಿಲ್ಟರ್ ಅನ್ನು ಸಂಕುಚಿಸಿ ಮತ್ತು ವಿಳಾಸವನ್ನು ಬಿಡಿ:
# keeps the pushed address, drops one unwanted LAN route
pull-filter ignore "route 10.60.0.0"
ಎಲ್ಲಾ pull ಗಳನ್ನು ಆಫ್ ಮಾಡುವ ಸಲಹೆ ಸಾಮಾನ್ಯವಾಗಿ ಒಂದೇ ರೂಟ್ ತೊಡೆದುಹಾಕಲು ಬಯಸುವವರಿಂದ ಬರುತ್ತದೆ. route-nopull ಹೆಚ್ಚು ಸಂಕುಚಿತ ಸ್ವಿಚ್: ಅದು ifconfig ಮತ್ತು ಇತರ ತಳ್ಳಲಾದ ಆಯ್ಕೆಗಳನ್ನು ಉಳಿಸಿಕೊಂಡು ತಳ್ಳಲಾದ ರೂಟ್ಗಳು ಮತ್ತು DHCP ಶೈಲಿಯ ಆಯ್ಕೆಗಳನ್ನು ನಿರಾಕರಿಸುತ್ತದೆ. ನಿಜವಾಗಿಯೂ ಅದೇ ಬೇಕಾದಾಗ ಅದನ್ನು ಬಳಸಿ, ಮತ್ತು ವಿಳಾಸದ ಪ್ರಶ್ನೆಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ಉತ್ತರಿಸಿ.
ಪರಿಶೀಲನೆ 3: ವಿಳಾಸವನ್ನು ನೀವೇ ಟೈಪ್ ಮಾಡಬಹುದೇ?
ಕೈಯಿಂದ ವಿಳಾಸ ನೀಡುವುದು ಆಪರೇಟರ್ ನಿಮಗೆ ಮೌಲ್ಯವನ್ನು ನೀಡಿದಾಗ ಮಾತ್ರ ಸರಿಯಾದದ್ದು. ನೀವೇ ಟೈಪ್ ಮಾಡಿದರೆ ಅದು VPN ಕ್ಲೈಂಟ್ ಸಬ್ನೆಟ್ನಿಂದ ಬರಬೇಕು, ಸಕ್ರಿಯ ಸೆಷನ್ಗಳ ನಡುವೆ ಅನನ್ಯವಾಗಿರಬೇಕು ಮತ್ತು ಸರ್ವರ್ ಚಲಾಯಿಸುವ ಟೋಪಾಲಜಿಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು. ಡೆಸ್ಕ್ಟಾಪ್ ಬ್ರಿಡ್ಜ್ ಅಥವಾ ದೂರದ LAN ನ ಹೋಸ್ಟ್ನ ವಿಳಾಸವನ್ನು ನಕಲಿಸುವುದು ಎರಡೂ ಕಡೆ ವಿಫಲವಾಗುತ್ತದೆ: ಫೋನ್ ಈಗಾಗಲೇ ಬೇರೆಡೆ ಇರುವ ವಿಳಾಸವನ್ನು ಕ್ಲೈಮ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಗೇಟ್ವೇಗೆ ಅದಕ್ಕೆ ಮರಳುವ ದಾರಿ ಇರುವುದಿಲ್ಲ.
ರೂಟ್ನಲ್ಲಿನ ದೂರದ LAN ಪೂರ್ವಪ್ರತ್ಯಯವು ಗಮ್ಯಸ್ಥಾನ, ಎಂದಿಗೂ ಫೋನ್ನ ಗುರುತಲ್ಲ. 10.60.0.0/24 ಗಾಗಿ ರೂಟ್ ಎಂದರೆ ಆ ನೆಟ್ವರ್ಕ್ಗೆ ಟನಲ್ ಮೂಲಕ ತಲುಪಿ; ಫೋನ್ ಯಾವ 10.60.0.x ವಿಳಾಸವನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ಅದು ಹೇಳುವುದಿಲ್ಲ, ಮತ್ತು ಫೋನ್ ಅವುಗಳಲ್ಲಿ ಯಾವುದನ್ನೂ ಹೊಂದಿರಬಾರದು. ಸ್ಥಿರ ಹಂಚಿಕೆಗಳು ಸರ್ವರ್ ಬದಿಗೆ ಸೇರಿದವು, ಅಲ್ಲಿ ಅವು ಕ್ರಿಯಾತ್ಮಕ ಪೂಲ್ನೊಂದಿಗೆ ಘರ್ಷಿಸಲಾರವು.
ಒಂದೇ ಗುರುತಿನ ಮೇಲೆ ಎರಡು ಸೆಷನ್ಗಳು ಅದೇ ಘರ್ಷಣೆಯನ್ನು ಬಯಲಿಗೆಳೆಯುತ್ತವೆ. ಒಂದೇ ಪ್ರಮಾಣಪತ್ರ ಎರಡು ಬಾರಿ ಸಂಪರ್ಕಿಸಿ ಸರ್ವರ್ ಎರಡಕ್ಕೂ ಒಂದೇ ಸ್ಥಿರ ವಿಳಾಸವನ್ನು ತಳ್ಳಿದರೆ, ಎರಡನೇ ಸೆಷನ್ ಮೊದಲನೆಯದನ್ನು ನಕಲಿಸುತ್ತದೆ, ಮತ್ತು ಪರಿಹಾರ ಕ್ಲೈಂಟ್ ಬದಿಯ ಸಂಪಾದನೆಯಲ್ಲ, ಪ್ರತ್ಯೇಕ ಗುರುತುಗಳು ಅಥವಾ ಪ್ರತ್ಯೇಕ ಹಂಚಿಕೆಗಳು.
ಪರಿಶೀಲನೆ 4: ಬೇರೆ ಯಾವುದಾದರೂ ಟನಲ್ ಸ್ಥಾನವನ್ನು ಹಿಡಿದಿದೆಯೇ?
Android ಒಂದೇ ಸಮಯದಲ್ಲಿ ಒಂದೇ ಸಕ್ರಿಯ VPN ಸೇವೆಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ. ಇನ್ನೊಂದು VPN ಆ್ಯಪ್, ಅಥವಾ ಇನ್ನು ಕೆಲಸ ಮಾಡದ ಪ್ರೊಫೈಲ್ಗೆ ಆನ್ ಆಗಿ ಬಿಟ್ಟಿರುವ always-on VPN ನಮೂದು, ನಿಮ್ಮ OpenVPN ಕ್ಲೈಂಟ್ establish() ಅನ್ನು ಕರೆಯುವ ಮೊದಲು ಆ ಸ್ಥಾನವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಆಗ ಪ್ರೊಫೈಲ್ ಸರಿಯಾಗಿದ್ದರೂ ಇಂಟರ್ಫೇಸ್ ಕಾಣುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಇನ್ನೊಂದು VPN ಅನ್ನು ಡಿಸ್ಕನೆಕ್ಟ್ ಮಾಡಿ, always-on ಸೆಟ್ಟಿಂಗ್ ಆಫ್ ಮಾಡಿ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಮುಟ್ಟುವ ಮೊದಲು ಮತ್ತೆ ಸಂಪರ್ಕಿಸಿ.
ಎಥರ್ನೆಟ್ ಬ್ರಿಡ್ಜಿಂಗ್ ಬೇಕೆಂದು ಹಟಹಿಡಿಯುವ ಸೇವೆ ಇನ್ನೊಂದು ಬಂದ ಗಲ್ಲಿ. root ಇಲ್ಲದ Android ಆ್ಯಪ್ IP ಟನಲ್ ರಚಿಸಬಹುದು, ಬ್ರಿಡ್ಜ್ ಮಾಡಿದ ಎಥರ್ನೆಟ್ ವಿಭಾಗವಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಟೈಪ್ ಮಾಡುವ ಯಾವ ವಿಳಾಸವೂ dev tap ಸರ್ವರ್ ಅನ್ನು ಕೆಲಸ ಮಾಡಿಸುವುದಿಲ್ಲ; ಆಪರೇಟರ್ ರೂಟ್ ಮಾಡಿದ ಸೇವೆಯನ್ನು ನೀಡಬೇಕು. ಸಮಸ್ಯೆಯನ್ನು ವರದಿ ಮಾಡುವಾಗ ಕ್ಲೈಂಟ್ ಹೆಸರು ಮತ್ತು ಆವೃತ್ತಿ, ತಳ್ಳಲಾದ ಆಯ್ಕೆಗಳ ಗುಂಪು, ಟೋಪಾಲಜಿ ಮತ್ತು ವಿಳಾಸ ಕಾಣಬೇಕಿದ್ದ ನಿಖರ ಹಂತವನ್ನು ಸೇರಿಸಿ.
ನಾಲ್ಕು ಪರಿಶೀಲನೆಗಳೂ ಉತ್ತೀರ್ಣವಾಗಿ ವಿಳಾಸ ಇದ್ದು, ಅನನ್ಯವಾಗಿ ಸರಿಯಾಗಿ ಮಾಸ್ಕ್ ಆಗಿದ್ದರೆ, ರೂಟ್ ಪ್ರಶ್ನೆ ಸಾಮಾನ್ಯವಾಗುತ್ತದೆ: ಸರ್ವರ್ ಯಾವ ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಅಧಿಕೃತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಕ್ಲೈಂಟ್ ಅವನ್ನು ಹೇಗೆ ಸೀಮಿತಗೊಳಿಸಬೇಕು. ಬೇರೆ ಏನನ್ನಾದರೂ ಬದಲಿಸುವ ಮೊದಲು ಟನಲ್ ವಿಳಾಸ, ಅದರ ನೆಟ್ಮಾಸ್ಕ್ ಮತ್ತು ಟೋಪಾಲಜಿಯನ್ನು ಬರೆದಿಡಿ, ಏಕೆಂದರೆ ಆಪರೇಟರ್ ಸರ್ವರ್ ದೃಶ್ಯದೊಂದಿಗೆ ಹೋಲಿಸಬೇಕಾದದ್ದು ಆ ಮೂರು ಮೌಲ್ಯಗಳನ್ನು.