Routing tal-VPN fuq Android: regoli tal-politika qabel it-tabella main
Android jagħżel tabella tar-routing b'regoli tal-uid u tal-marka qabel kull tfittxija tad-destinazzjoni, għalhekk rotta miżjuda ma' main tista' qatt ma tiġi eżaminata.
Rotta miżjuda mat-tabella main fuq Android tidher korretta f'kull lista u xorta ma ġġorrx it-traffiku. Ir-raġuni hija li t-tabella main hija għażla waħda fost diversi, u mhijiex mistoqsija l-ewwel. Is-servizz tan-netwerk ta' Android jibni regoli tal-politika li jagħżlu tabella tar-routing bl-użu ta' informazzjoni li l-indirizz tad-destinazzjoni ma fihiex — l-uid tal-applikazzjoni, marka fuq il-pakkett, l-interface li wassal għaliha — u t-tfittxija tad-destinazzjoni sseħħ wara, ġewwa t-tabella li għażlu dawk ir-regoli.
Tliet deċiżjonijiet fi ordni fissa
Pakkett li joħroġ jieħu tliet deċiżjonijiet separati. L-ewwel, regola tal-politika tiddeċiedi liema tabella tar-routing tapplika. It-tieni, rotta ġewwa dik it-tabella tiddeċiedi l-hop li jmiss u l-interface tal-ħruġ. It-tielet, il-hooks tan-netfilter jiddeċiedu jekk il-pakkett jibqax ħaj, jiġix modifikat jew jiġix ridirett.
L-ordni hija importanti għax kull stadju jista' jwieġeb biss il-mistoqsija tiegħu. Regola tal-firewall li taċċetta pakkett ma tagħżilx tabella, u rotta miżjuda ma' tabella li l-ebda regola ma tagħżel hija inattiva. Ħafna mill-konfużjoni dwar il-VPN ta' Android tiġi mill-fatt li tissewwa waħda mit-tlieta u ma jidher l-ebda tibdil, għax il-ħsara kienet f'waħda oħra.
| Stage | Selector | What it cannot decide |
|---|---|---|
| Policy rule | uid range, mark, incoming interface | Which route exists inside the table |
| Route lookup | Destination prefix, longest match | Whether the packet is allowed out |
| Netfilter hook | Chain position, match conditions | Which table was selected |
Il-marki huma qasam ippakkjat, mhux tikketta li tippossjedi
Android jippakkja diversi fatti fl-istess valur tal-marka: liema network intgħażel, jekk applikazzjoni għażlitx network b'mod espliċitu, jekk socket huwiex protett mill-VPN, u bits relatati mal-permessi. L-intestatura fwmark tal-AOSP tiddefinixxi dak il-layout għas-siġra attwali, u l-layout huwa ħaġa interna tal-pjattaforma li tinbidel bejn il-ħarġiet.
Huwa għalhekk li fuq Android huwa perikoluż li tikteb valur tal-marka sħiħ b'iptables -j MARK --set-mark. Dan ma jżidx tikketta; jissostitwixxi l-għażla tan-network li s-sistema diġà għamlet. Il-pakkett imbagħad jaqbel ma' regoli differenti, li jista' jidher qisu l-VPN beda jaħdem, jew qisu applikazzjoni mhux relatata tilfet il-konnettività, skont liema bits inkitbu mill-ġdid.
Jekk trid tmiss il-marki, aqra l-valur attwali l-ewwel u uża maskra sabiex jinbidlu biss il-bits li tifhem:
ip rule show
ip route show table all | head -40
ip route get 10.20.4.11Il-marka tal-konnessjoni hija oġġett separat mill-marka tal-pakkett, u l-ebda waħda mhi rotta. Li tirrestawra l-marka fuq il-pakketti tar-risposta huwa pass separat mill-għażla tat-tabella fil-ħruġ, u għalhekk it-tiswijiet f'direzzjoni waħda jipproduċu konnessjonijiet li jinfetħu u mbagħad jiddendlu.
Min jippossjedi r-regoli u t-tabelli
Is-servizz tan-network ta' Android, netd, joħloq ir-regoli u t-tabelli għal kull network. Il-AOSP RouteController huwa l-post fejn dawk ir-regoli jinġemgħu għall-VPN, networks fiżiċi u firxiet uid, u ċ-ċiklu tal-ħajja tiegħu huwa marbut ma' avvenimenti tan-network u mhux ma' fajl tal-konfigurazzjoni.
Jsegwu żewġ konsegwenzi. L-ewwel, il-prijoritajiet u n-numri tat-tabelli li ssib fuq apparat wieħed huma dettalji interni tal-bini, mhux interface: numri li jidhru l-istess fuq verżjoni oħra ta' Android jistgħu jfissru xi ħaġa totalment differenti. It-tieni, l-istat jinbena mill-ġdid meta n-networks jinbidlu, għalhekk regola li tiddaħħal illum minn root shell tista' tkun marret wara t-tranżizzjoni tal-Wi-Fi li jmiss.
Dan l-għajbien huwa spiss irrappurtat bħala li s-sistema tinjora rotta. Dak li ġara fil-fatt huwa li r-regola li għażlet it-tabella m'għadhiex teżisti, u r-rotta ġewwa t-tabella issa hija unreachable mill-perspettiva tal-pakkett. Iċċekkja l-lista tar-regoli, mhux il-lista tar-rotot, meta konfigurazzjoni li kienet taħdem tieqaf taħdem wara rikonnessjoni.
Mistoqsijiet dwar l-ordni tal-hooks m'għandhomx tweġiba universali
Il-mistoqsija jekk iptables huwiex qed jaħdem qabel ir-routing tal-VPN ma tistax tiġi mwieġba mingħajr ma ssemmi l-passaġġ tal-pakkett. Pakkett iġġenerat lokalment jaqsam il-hook tal-output, fejn bidla fil-marka tqanqal verifika ta' routing mill-ġdid — tfittxija oħra, mhux edit retroattiv tal-ewwel waħda. Pakkett li jasal minn klijent tether jaqsam il-passaġġ prerouting u jingħadda 'l quddiem minflok, u l-ktajjen li jarawh huma oħrajn.
Għalhekk l-istess regola tista' tkun effettiva għat-traffiku ta' applikazzjoni u inviżibbli għat-traffiku tether, u counter li jibqa' fuq iż-żero jgħidlek liema passaġġ ħa l-pakkett, mhux jekk ir-regola hijiex żbaljata. Uża counters biex tistabbilixxi l-passaġġ qabel ma tbiddel xi kundizzjoni ta' tqabbil.
Dan huwa wkoll l-istadju fejn żball fir-routing tal-politika jsir diffiċli biex jidher. Ir-routing lejn tabella li teżisti iżda ma fihiex id-destinazzjoni jipproduċi network unreachable li jidher qisu drop tal-firewall, filwaqt li drop tal-firewall jipproduċi timeout li jidher qisu toqba sewda tar-routing.
Iddijanjostika ġewwa s-sistema, jew ħalliha kif inhi
Għal reviżjoni awtorizzata, stabbilixxi erba' fatti qabel ma tmiss xejn: l-uid u l-profil tal-applikazzjoni, in-network li Android għażel għaliha, jekk il-VPN jinkludix dik l-applikazzjoni xejn, u jekk il-problema teżistix għaż-żewġ familji tal-indirizzi. L-esklużjoni għal kull applikazzjoni tispjega ħafna rapporti ta' VPN mhux jaħdem mingħajr ebda ħsara fir-routing.
Imbagħad aqra r-regoli, il-maskri u t-tabelli li huma fil-fatt fis-seħħ, u żomm bidla tan-network fil-tieqa tal-osservazzjoni. Jekk l-imġiba tinbidel matul rikonnessjoni, qed tara ċiklu tal-ħajja ġestit, mhux rotta nieqsa.
Għal ħtiġijiet ordinarji, uża l-kontrolli appoġġjati: inklużjoni u esklużjoni għal kull applikazzjoni fl-applikazzjoni VPN, u l-għażla tan-network tal-pjattaforma stess għal kull ħaġa li teħtieġ passaġġ speċifiku. Jekk integrazzjoni privileġġata tassew trid tikkoopera mal-makkinarju tar-routing, immira l-implimentazzjoni tal-verżjoni eżatta ta' Android li tappoġġja u żomm iċ-ċiklu tal-ħajja tagħha permezz tal-komponent li jippossjediha. Li tħott il-ktajjen tal-pjattaforma jew li ddaħħal regola ta' prijorità għolja jbiddel dijanjożi fi tieni maniġer tan-network, u t-telefon iġib ruħu skont dan.