Я хочу обмениваться данными между моим Android-устройством и Linux-боксом по IP через режим сетевого интерфейса USB. Я использую устройство OnePlus One с ночными сборками CM12.1. Он рутирован, и для SELinux установлено значение PERMISSIVE
. Разделение пространства имен монтирования также отключено.
Я подключил свой OPO к своему компьютеру с Linux и перевел его в режим сетевого интерфейса с помощью некоторых хакерских действий с отражением Java и системного разрешения MANAGE_USB. (Я не использую стандартную настройку модема, потому что хочу использовать свою Linux-машину в качестве шлюза, а не наоборот). Раньше я ip addr add
добавлял IP-адрес на обоих концах (Linux-бокс и OPO), а затем добавлял маршрут ip route
через мой Linux-бокс для доступа в Интернет. Я также включил переадресацию IPv4 на стороне Linux, а также включил все необходимые iptables
правила.
Моя проблема заключается в следующем: root
может общаться только через интерфейс. Например, с моим Linux-боксом at 10.42.0.1
и моим OPO 10.42.0.2
через сетевой интерфейс USB запуск ping 10.42.0.1
или ping 8.8.8.8
на стороне Android без запуска из su
оболочки не будет работать . Выполнение точно таких же команд, как и root
функций, идеально. Те же самые команды через интерфейс WiFi на стороне Android прекрасно работают без рута.
Я предполагаю, что это какая-то новая функция безопасности, реализованная в Android 5.0/5.1, так как она отлично работала в KitKat. Кто-нибудь точно знает, что это может быть?
Я тоже столкнулся с этим. Это связано с политиками маршрутизации, из-за которых «основная» таблица маршрутизации не используется ни для одного пользователя, кроме root.
Это сработало для меня, но я все еще изучаю последствия этого в широком смысле. Это не хуже, чем то, что делает мой Linux-бокс, так что вот что.
ip rule add from all lookup main pref 99