Android folosește o mulțime de reguli și tabele de rutare, probabil unul pentru fiecare aplicație.
După cum se poate vedea, fără o astfel de regulă adăugată și probabil fwmark-ul corespunzător, un pachet va atinge regula de rutare 32000: de neatins.
Este puțin fragil să faci ceva manual peste acest mecanism. În special, regula de rutare 10500 permite (numai) root să folosească interfața de ieșire ccmni1
, dar oif
nu este despre a permite selectarea unui pachet la această interfață, ci este despre a permite unui pachet dintr-un socket legat de această interfață (folosind SO_BINDTODEVICE
) pentru a fi selectat (oif
nu este un echivalent direct al iif
care este folosit pentru pachetele rutate și dacă iată
este, de asemenea, un caz special pentru pachetele nedirecționate).
Multe reguli primesc un marcaj de firewall, probabil stabilit de un complex echivalent iptables reguli pentru a selecta regulile de rutare specifice pentru fiecare aplicație (și UID-ul său specific). Bănuiesc că există API-uri Android specifice pentru a înregistra astfel de reguli atunci când este instalată o aplicație.
Dacă doriți să permiteți root să folosească mai întâi tabelul principal de rutare evitând astfel de neatins soarta, printre multiple alegeri posibile:
regulă ip add pref 998 uidrange 0-0 căutare principal
Sau dacă nu-ți pasă că orice utilizator poate folosi orice aplicație usb0 pur şi simplu:
regulă ip add pref 998 căutare principală
Acest lucru probabil nu se va integra bine cu sistemul Android, care ar putea amesteca regulile atunci când aplicațiile sunt instalate sau pornite și nu se poate spune ce a mai rămas. iptables/nftables (sau chiar de-a lungul SELinux, tc etc.) despre blocarea accesului.Chiar și legarea la o priză poate fi restricționată de un mecanism suplimentar (vezi, de exemplu: CONFIG_ANDROID_PARANOID_NETWORK
).