Mae VPN Android yn gweithio gydag IPv6, ond mae'r porwr yn dal i ddewis IPv4
Dilynnwch y pedwar cam lle mae cyfeiriad IPv6 preifat yn diflannu: y datryswr, datganiad VpnService, gwiriad ymgeiswyr y porwr a dosbarthu'r llwybr.
Mae'r VPN ymlaen, mae'r rhyngwyneb gwe preifat yn ateb dros IPv6 o liniadur, ac mae'r ffôn Android yn dal i agor yr un dudalen dros IPv4 neu'n gwrthod ei llwytho o gwbl. Mae'r cofnod AAAA yn bodoli. Mae'r twnnel yn adrodd cyfeiriad IPv6. Nid oes dim yn y cleient yn edrych yn anghywir. Pedair penderfyniad ar wahân sy'n pennu'r canlyniad: pa ddatryswr a atebodd, beth a ddatganodd VpnService i Android, pa deulu cyfeiriadau roedd y porwr yn barod i'w brofi, ac a all pecyn wneud y daith yno ac yn ôl. Gweithiwch drwyddynt yn y drefn honno yn lle ychwanegu llwybr diofyn a gobeithio y bydd y symptom yn symud.
Cam 1: profwch pa ddatryswr a atebodd yr ymholiad AAAA
Nid oes gan Android un llwybr DNS yn unig. Gall VPN wthio gweinydd DNS ar gyfer ei rwydwaith, gall y system ddefnyddio Private DNS ar gyfer enwau gwesteiwyr y mae'n eu hystyried yn gymwys, a gall Chrome redeg ei ddatryswr wedi'i amgryptio ei hun o chrome://settings/security. Ar ffôn lle mae'r twnnel yn gwthio 10.61.0.1 ond mae Private DNS yn pwyntio at ddarparwr cyhoeddus, nid yw'r enw y tu mewn i'ch parth preifat yn cael ei ddatrys gan y peiriant sy'n berchen ar y parth. Mae'r porwr yn cael ateb gan ddatryswr heb awdurdod dros yr enw hwnnw ac yn ei drin fel un ar goll, ac nid yw testun y gwall byth yn sôn am DNS.
Gofynnwch i ddatryswr y twnnel yn uniongyrchol cyn i chi newid unrhyw beth arall. Mae'r ddau orchymyn cyntaf yn dangos pa weinyddion DNS y gwnaeth Android eu cysylltu â'r rhwydwaith gweithredol ac a yw Private DNS mewn modd awtomatig neu llym; mae'r trydydd yn rhedeg o unrhyw gleient y tu mewn i'r twnnel, nid o'r ffôn.
adb shell dumpsys connectivity | grep -A3 "DnsAddresses"
adb shell settings get global private_dns_mode
nslookup -type=AAAA nas.lan 10.61.0.1
Cam 2: darllenwch beth a ddatganodd VpnService mewn gwirionedd
Mae ochr Android yn bendant yn hytrach na'i chasglu. Mae VpnService.Builder yn ychwanegu cyfeiriadau gyda addAddress, llwybrau gyda addRoute, gweinyddion DNS gyda addDnsServer, a gall gyfyngu'r twnnel cyfan i un teulu cyfeiriadau gyda allowFamily. Mae adeiladwr a alwodd allowFamily(AF_INET) ac wedyn ychwanegu llwybr IPv6 wedi dweud dau beth gwrthgyferbyniol wrth y system, a'r cyfyngiad teulu yw'r hyn y mae'r system yn ei gadw. Mae llwybr sy'n cwmpasu fd00:61::/64 ynghyd â chyfeiriad rhyngwyneb mewn rhagddodiad gwahanol yn methu am reswm tebyg: mae'r cyfeiriad yn bodoli, ond nid yw ar y cyswllt ar gyfer y llwybr hwnnw.
Darllenwch y datganiad yn lle trystio'r togl yn yr ap. Mae dumpsys netd yn argraffu'r cyfeiriadau a'r llwybrau sydd ynghlwm wrth y rhyngwyneb tun, ac mae LinkProperties fesul rhwydwaith o fewn dumpsys connectivity yn dangos y rhestr DNS wrth ochr y teuluoedd y mae'r rhwydwaith yn eu honni.
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"
Os yw'r rhyngwyneb tun yn dal cyfeiriad IPv6 ond nid oes llwybr yn cyfateb i ragddodiad y gwasanaeth, mae dosbarthu IPv6 eisoes wedi torri cyn i borwr fod yn rhan o'r darlun. Mae hynny'n fai gwahanol i borwr sy'n gwrthod ceisio, ac mae angen trwsio gwahanol.
Cam 3: y porwr sy'n penderfynu a yw'n ceisio IPv6 o gwbl
Nid yw Chromium yn defnyddio pob cofnod AAAA a ddaw ato. Mae ei ddatryswr gwesteiwyr yn cario profion cyrhaeddedd IPv6 a hidlo ymgeiswyr a all ollwng neu israddio IPv6 pan fernir nad yw'r rhwydwaith yn gallu ei gario, ac mae ffynhonnell y datryswr yn dangos y prawf hwnnw ochr yn ochr â'r amodau o'i gwmpas. Mae'r rhesymeg yn dibynnu ar fersiwn a baneri, a dyna'n union pam y gall dau ffôn ar yr un twnnel ymddwyn yn wahanol. Unwaith y bydd ymgeiswyr yn bodoli, mae Happy Eyeballs yn rasio'r teuluoedd fesul cysylltiad, felly gall llwybr IPv6 sy'n ateb yn araf golli o hyd i IPv4 sy'n ateb yn gyflym.
Gwyliwch y penderfyniad yn lle ei gasglu. Mae sesiwn a recordiwyd drwy chrome://net-export, ac a ailchwaraewyd yn y gwyliwr netlog, yn dangos pob datrysiad a'r teulu a ddewiswyd; mae chrome://net-internals/#dns yn dangos y canlyniadau wedi'u cache. Mae datrysiad sy'n dychwelyd cofnodion A yn unig ar gyfer enw sydd â AAAA yn eich datryswr eich hun yn pwyntio'n syth at y cam hwn.
Cam 4: gwiriwch y gall pecyn wneud y daith yno ac yn ôl
Nid yw dewis cyfeiriad yn ddosbarthu. Mae Android yn cadw tablau llwybro a rheolau polisi fesul rhwydwaith sy'n dewis tabl yn ôl fwmark, felly nid yw llwybr sy'n weladwy yn y prif dabl yn awtomatig y llwybr a ddefnyddir gan soced. Mae darllen rheolau a gofyn i'r cnewyllyn ddatrys cyrchfan ar gyfer cyfeiriad ffynhonnell yn gwahanu'r ddau.
adb shell ip -6 rule show
adb shell ip -6 route get fd00:61::20 from fd00:61::10
Allbwn route get yw'r un sy'n ateb y cwestiwn. Os yw'n enwi tun0 ac mae pecynnau'n dal i farw, symudwch i MTU y twnnel a blaenddirywio IPv6 y giât yn hytrach nag yn ôl at y ffôn.
Pam mae ychwanegu ::/0 fel arfer yn gwaethygu pethau
Mae ychwanegu ::/0 yn newid hawliad y twnnel o un rhagddodiad i bob cyrchfan IPv6. Ar y ffôn gall hynny fodloni prawf cyrhaeddedd, oherwydd bod cyfeiriad prawf y tu allan i'ch rhagddodiad bellach yn edrych yn llwybredig. Nid yw'n creu capasiti IPv6 i fyny'r afon ar y giât, ac mae llawer o giatiau cartref heb unrhyw gyswllt IPv6 i fyny'r afon sy'n gweithio. Y canlyniad yw twll du ar gyfer IPv6 cyhoeddus: mae enwau a arferai gwympo'n ôl i IPv4 nawr yn hongian, ac efallai y bydd y dudalen breifat yn edrych yn well dim ond oherwydd bod y prawf yn mesur rhywbeth gwahanol.
Mae cost polisi hefyd. Gyda ::/0 yn y twnnel, mae'r holl draffig IPv6 yn gadael drwy'r VPN, gan gynnwys traffig na chytunodd perchennog y rhwydwaith erioed ei gario. Triniwch hynny fel penderfyniad defnyddio â pherchennog a enwir, nid fel cam dadfygio a gymerwch am 1 o'r gloch y bore.
Y drefn waith sy'n dod â hyn i ben
Cadarnhewch fod yr ateb AAAA yn dod o'r datryswr sy'n dal y parth, darllenwch gyflwr VpnService a netd ar gyfer y rhyngwyneb tun, cymrwch ôl net-export i weld a ollwngodd Chromium yr ymgeisydd, yna profwch y daith yno ac yn ôl gyda ip -6 route get. Trwsiwch y haen a fethodd mewn gwirionedd a gadewch bolisi'r hollt yn llonydd. Os oes ar enwau preifat angen atebion gwahanol i enwau cyhoeddus, dyna'n union y mae split tunneling ar ei gyfer.
Nodwch fuild y ffôn, fersiwn y porwr, a'r datryswr y bu ichi ymholi ag ef. Mae'r tri ffaith hynny'n troi "IPv6 is broken" yn rhywbeth y gall y person nesaf ei atgynhyrchu.