మీ 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 సెట్టింగ్ ఆఫ్ చేసి, ప్రొఫైల్‌ను తాకే ముందు మళ్లీ కనెక్ట్ అవ్వండి.

Ethernet వంతెనను పట్టుబట్టే సేవ మరో చిక్కు మార్గం. root లేని Android యాప్ IP టనెల్ సృష్టించగలదు, వంతెన చేసిన Ethernet విభాగం కాదు, కాబట్టి మీరు టైప్ చేసే ఏ చిరునామా dev tap సర్వర్‌ను పనిచేయించదు; ఆపరేటర్ రూట్ చేసిన సేవను అందించాలి. సమస్యను నివేదించేటప్పుడు క్లయింట్ పేరు మరియు సంస్కరణ, నెట్టిన ఎంపికల సమితి, టోపాలజీ, చిరునామా కనిపించాల్సిన ఖచ్చితమైన దశను చేర్చండి.

నాలుగు తనిఖీలు దాటి, చిరునామా ఉనికిలో ఉండి, ప్రత్యేకంగా మరియు సరిగ్గా మాస్క్ చేయబడి ఉంటే, మార్గ ప్రశ్న సాధారణమవుతుంది: సర్వర్ ఏ పూర్వపదాలను అధికారపూర్వకంగా అనుమతిస్తుంది, క్లయింట్ వాటిని ఎలా పరిమితం చేయాలి. మరేదైనా మార్చే ముందు టనెల్ చిరునామా, దాని నెట్‌మాస్క్ మరియు టోపాలజీని రాసుకోండి, ఎందుకంటే సర్వర్ వీక్షణతో పోల్చడానికి ఆపరేటర్‌కు అవసరమైనది ఆ మూడు విలువలే.

సంబంధిత వ్యాసాలు