VPN ipo hewani, kiolesura cha wavuti cha faragha kinajibu kupitia IPv6 kutoka kwa kompyuta ya mkononi, na simu ya Android bado inafungua ukurasa huo kupitia IPv4 au inakataa kuupakia kabisa. Rekodi ya AAAA ipo. Handaki inaripoti anwani ya IPv6. Hakuna kinachoonekana kibaya kwa mteja. Matokeo yanaamuliwa na maamuzi manne tofauti: kitatuzi kipi kilijibu, VpnService ilitangaza nini kwa Android, familia gani ya anwani kivinjari kilikuwa tayari kujaribu, na kama pakiti inaweza kufanya safari ya kwenda na kurudi. Zishughulikie kwa mpangilio huo badala ya kuongeza njia chaguo-msingi na kutumaini dalili itahama.

Hatua 1: thibitisha kitatuzi kipi kilijibu swali la AAAA

Android haina njia moja ya DNS. VPN inaweza kusukuma seva ya DNS kwa mtandao wake, mfumo unaweza kutumia Private DNS kwa majina ya mwenyeji inayoona yanafaa, na Chrome inaweza kuendesha kitatuzi chake cha usimbaji fiche kutoka chrome://settings/security. Kwenye simu ambayo handaki inasukuma 10.61.0.1 lakini Private DNS inaelekeza kwa mtoa huduma wa umma, jina ndani ya eneo lako la faragha halitatuliwi na mashine inayomiliki eneo hilo. Kivinjari kinapata jibu kutoka kwa kitatuzi kisicho na mamlaka juu ya jina hilo na kinachukulia kuwa halipo, na maandishi ya hitilafu hayataji DNS kamwe.

Uliza kitatuzi cha handaki moja kwa moja kabla ya kubadilisha kitu kingine chochote. Amri mbili za kwanza zinaonyesha seva zipi za DNS Android iliunganisha na mtandao unaotumika na kama Private DNS iko katika hali ya kiotomatiki au kali; ya tatu inaendeshwa kutoka kwa mteja yeyote ndani ya handaki, si kutoka kwa simu.

adb shell dumpsys connectivity | grep -A3 "DnsAddresses"
adb shell settings get global private_dns_mode
nslookup -type=AAAA nas.lan 10.61.0.1

Hatua 2: soma kile VpnService ilichotangaza kwa kweli

Upande wa Android ni wazi si wa kukisiwa. VpnService.Builder huongeza anwani kwa addAddress, njia kwa addRoute, seva za DNS kwa addDnsServer, na inaweza kuzuia handaki yote kwa familia moja ya anwani kwa allowFamily. Mjenzi aliyepiga allowFamily(AF_INET) kisha akaongeza njia ya IPv6 ameiambia mfumo mambo mawili yanayopingana, na kizuizi cha familia ndicho mfumo unabaki nacho. Njia inayofunika fd00:61::/64 ikiwa pamoja na anwani ya kiolesura katika kiambishi kingine inashindwa kwa sababu kama hiyo: anwani ipo, lakini si on-link kwa njia hiyo.

Soma tangazo badala ya kuamini kitufe kilichopo kwenye programu. dumpsys netd huchapisha anwani na njia zilizounganishwa na kiolesura cha tun, na LinkProperties kwa kila mtandao ndani ya dumpsys connectivity huonyesha orodha ya DNS kando ya familia ambazo mtandao unadai.

adb shell ip -6 addr show tun0
adb shell ip -6 route show table all | grep tun0
adb shell dumpsys connectivity | grep -E "LinkAddresses|Routes"

Kama kiolesura cha tun kina anwani ya IPv6 lakini hakuna njia inayolingana na kiambishi cha huduma, uwasilishaji wa IPv6 tayari umevunjika kabla kivinjari kijatumika. Hii ni hitilafu tofauti na kivinjari kinachokataa kujaribu, na inahitaji marekebisho tofauti.

Hatua 3: kivinjari kinaamua kama kijaribu IPv6 kabisa

Chromium haitumii kila rekodi ya AAAA inayopokea. Kitatuzi chake cha mwenyeji hubeba ukaguzi wa ufikivu wa IPv6 na uchujaji wa watahiniwa ambao unaweza kuachana na IPv6 au kupunguza kipaumbele chake mtandao unapoonekana hauwezi kuubeba, na chanzo cha kitatuzi kinaonyesha uchunguzi huo pamoja na masharti yanayouzunguka. Mantiki inategemea toleo na bendera, na ndiyo sababu simu mbili kwenye handaki moja zinaweza kuwa na tabia tofauti. Watahiniwa wakiwepo, Happy Eyeballs huweka familia kwenye mashindano kwa kila muunganisho, kwa hivyo njia ya IPv6 inayojibu taratibu bado inaweza kushindwa na IPv4 inayojibu haraka.

Angalia uamuzi badala ya kuukisia. Kikao kilichorekodiwa kupitia chrome://net-export na kuchezwa tena kwenye kionyeshi cha netlog kinaonyesha kila utatuzi na familia iliyochaguliwa; chrome://net-internals/#dns inaonyesha matokeo yaliyohifadhiwa. Utatuzi unaorudisha rekodi za A pekee kwa jina lenye AAAA kwenye kitatuzi chako mwenyewe unaonyesha moja kwa moja hatua hii.

Hatua 4: thibitisha kuwa pakiti inaweza kufanya safari ya kwenda na kurudi

Kuchagua anwani si uwasilishaji. Android huhifadhi majedwali ya uelekezaji na kanuni za sera kwa kila mtandao ambazo huchagua jedwali kwa fwmark, kwa hivyo njia inayoonekana kwenye jedwali kuu si lazima iwe ile inayotumiwa na soketi. Kusoma kanuni na kumwomba kerneli atatue lengwa kwa anwani ya chanzo hutenganisha hizo mbili.

adb shell ip -6 rule show
adb shell ip -6 route get fd00:61::20 from fd00:61::10

Matokeo ya route get ndiyo yanayojibu swali. Kama inataja tun0 na pakiti bado zinakufa, nenda kwenye MTU ya handaki na uelekezaji wa IPv6 wa lango badala ya kurudi kwa simu.

Kwa nini kuongeza ::/0 kwa kawaida huzidisha hali

Kuongeza ::/0 hubadilisha madai ya handaki kutoka kiambishi kimoja hadi kila lengwa la IPv6. Kwenye simu hilo linaweza kutimiza uchunguzi wa ufikivu, kwa sababu anwani ya majaribio nje ya kiambishi chako sasa inaonekana inaweza kuelekezwa. Haliundi uwezo wa IPv6 wa juu kwenye lango, na lango nyingi za nyumbani hazina kiungo cha juu cha IPv6 kinachofanya kazi kabisa. Matokeo ni shimo jeusi kwa IPv6 ya umma: majina yaliyokuwa yakirudi kwa IPv4 sasa yananing'inia, na ukurasa wa faragha unaweza kuonekana bora kwa sababu tu uchunguzi unapima kitu kingine.

Pia kuna gharama ya sera. Kukiwa na ::/0 ndani ya handaki, trafiki yote ya IPv6 hutoka kupitia VPN, ikiwa ni pamoja na trafiki ambayo mmiliki wa mtandao hakuwahi kukubali kuibeba. Chukulia hilo kama uamuzi wa usambazaji wenye mmiliki aliyetajwa, si hatua ya utatuzi unayochukua saa 1 usiku.

Mpangilio wa kazi unaomaliza hili

Thibitisha kuwa jibu la AAAA linatoka kwa kitatuzi kinachomiliki eneo, soma hali ya VpnService na netd kwa kiolesura cha tun, chukua alama ya net-export ili kuona kama Chromium iliacha mtahiniwa, kisha jaribu safari ya kwenda na kurudi kwa ip -6 route get. Rekebisha tabaka ambalo lilishindwa kweli na uache sera ya mgawanyiko. Kama majina ya faragha yanahitaji majibu tofauti na ya umma, split tunneling ni kwa ajili ya hilo.

Andika build ya simu, toleo la kivinjari na kitatuzi ulichouliza. Mambo hayo matatu hubadilisha "IPv6 is broken" kuwa kitu ambacho mtu anayefuata anaweza kuzalisha tena.

Makala zinazohusiana