Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

netutils-wrapper-1.0
Инструменты настройки сетевого стека

Тип файла: команда

   

Комментарии
Оболочка NETUTILS

Операционная система Android содержит стандартные сетевые утилиты Linux,
такие как ifconfig , ip и ip6tables .

Эти утилиты находятся в образе системы и позволяют настраивать весь сетевой стек Linux.
На устройствах под управлением Android 7.x и ниже коду поставщика разрешено напрямую вызывать
эти двоичные файлы, что создает следующие проблемы:

Поскольку сетевые утилиты обновляются в образе системы, они не обеспечивают стабильной работы.
Набор сетевых утилит настолько широк, что сложно развивать образ системы,
гарантируя при этом предсказуемое поведение.

На устройствах под управлением Android 8.0 и выше раздел поставщика остается прежним,
а системный раздел получает обновление.

Для этого в Android 8.0 предусмотрена возможность определить стабильный версионный интерфейс,
а также использовать ограничения SELinux, чтобы сохранить взаимозависимость производителя
и образа системы в заведомо хорошем наборе.

Поставщики могут использовать предоставленные платформой утилиты настройки сети
для настройки сетевого стека Linux, но эти утилиты еще не включают интерфейсную оболочку HIDL.

Для определения такого интерфейса в Android 8.0 включен netutils-wrapper-1.0

ОБОЛОЧКА NETUTILS

Утилита-оболочка netutils предоставляет подмножество конфигурации сетевого стека Linux,
на которую не влияют обновления системного раздела.

Android 8.0 содержит обертки версии 1.0, которые позволяют передавать те же аргументы,
что и обернутые утилиты, установленные в системный раздел в /system/bin следующим образом:

u:object_r:system_file:s0 /system/bin/ip-wrapper-1.0 -> netutils-wrapper-1.0
u:object_r:system_file:s0 /system/bin/ip6tables-wrapper-1.0 -> netutils-wrapper-1.0
u:object_r:system_file:s0 /system/bin/iptables-wrapper-1.0 -> netutils-wrapper-1.0
u:object_r:system_file:s0 /system/bin/ndc-wrapper-1.0 -> netutils-wrapper-1.0
u:object_r:netutils_wrapper_exec:s0 /system/bin/netutils-wrapper-1.0
u:object_r:system_file:s0 /system/bin/tc-wrapper-1.0 -> netutils-wrapper-1.0

Симлинки показывают сетевые утилиты, обернутые оболочкой netutils , в том числе:

  • ip
  • iptables
  • ip6tables
  • ndc
  • tc

    Чтобы использовать эти утилиты в Android 8.0 и более поздних версиях, реализации поставщиков
    должны соответствовать следующим правилам:

  • Процессы поставщика не должны запускать /system/bin/netutils-wrapper-1.0 напрямую;
    попытки сделать это приведут к ошибке.

  • Все утилиты, обернутые netutils-wrapper-1.0 , должны запускаться по их симлинкам.
    Например, измените код поставщика, который делал это раньше ( /system/bin/ip <FOO> <BAR> )
    на /system/bin/ip-wrapper-1.0 <FOO> <BAR> .

  • Выполнение обёрток без смены домена запрещено политикой платформы SELinux.
    Это правило нельзя изменять, и оно проверено в наборе тестов на совместимость с Android (CTS) .

  • Выполнение утилит напрямую (например, /system/bin/ip <FOO> <BAR> ) из процессов поставщика
    также запрещено политиками платформы SELinux. Это правило нельзя изменять, и оно проверено в CTS.

  • Любой домен поставщика (процесс), которому необходимо запустить оболочку, должен добавить
    следующее правило перехода домена в политику SELinux:

    domain_auto_trans( VENDOR-DOMAIN-NAME , netutils_wrapper_exec, netutils_wrapper) .

    Примечание. Дополнительные сведения о SELinux в Android 8.0 и более поздних версиях см.
    в разделе Настройка SEPolicy в Android 8.0+ .

    ФИЛЬТРЫ-ОБОЛОЧКИ NETUTILS

    Обернутые утилиты можно использовать для настройки практически любого аспекта сетевого стека Linux.
    Однако для обеспечения стабильного интерфейса и разрешения обновлений системного раздела разрешены
    только определенные комбинации аргументов командной строки; другие команды будут отклонены.

    Интерфейсы и цепочки поставщиков

    Обертка имеет концепцию интерфейсов поставщиков.
    Это интерфейсы, обычно управляемые кодом поставщика, например интерфейсы передачи данных по сотовой сети.
    Как правило, другие типы интерфейсов (например, Wi-Fi) управляются HAL и инфраструктурой.
    Оболочка распознает интерфейсы поставщика по имени (используя регулярное выражение)
    и позволяет коду поставщика выполнять над ними множество операций.

    В настоящее время интерфейсы поставщиков:
  • Интерфейсы, имена которых заканчиваются на «oem», за которым следует номер, например, oem0 или r_oem1234 .
  • Интерфейсы, используемые текущими реализациями SOC и OEM, например rmnet_data[0-9] .

    Имена интерфейсов, которыми обычно управляет инфраструктура (например, wlan0 ),
    никогда не являются интерфейсами поставщиков.

    Оболочка имеет аналогичную концепцию цепочек поставщиков.
    Они используются в командах iptables и также распознаются по имени.

    В настоящее время торговые сети:
  • Начните с oem_ .
  • Используются текущими реализациями SOC и OEM, например, цепочки, начинающиеся с nm_ или qcom_ .

    РАЗРЕШЕННЫЕ КОМАНДЫ

    В настоящее время разрешенные команды перечислены ниже.
    Ограничения реализуются через набор регулярных выражений в исполняемых командных строках.
    Подробности см. в system/netd/netutils_wrappers/NetUtilsWrapper-1.0.cpp

  • IP

    Команда ip используется для настройки IP-адресов, маршрутизации, шифрования IPsec и ряда других параметров сети. Оболочка допускает следующие команды:

    Добавляйте и удаляйте IP-адреса из интерфейсов, управляемых поставщиком.
    Настройте шифрование IPsec.

  • iptables/ip6tables

    Команды iptables и ip6tables используются для настройки брандмауэра, управления пакетами, NAT и другой обработки пакетов.

    Оболочка допускает следующие функции:

    Добавлять и удалять цепочки поставщиков.

    Добавлять и удалять правила в любой цепочке, которая относится к пакетам, входящим ( -i ) или исходящим ( -o ) интерфейсу поставщика.

    Перейти к цепочке поставщиков из любой точки любой другой цепочки.

  • ndc

    Команда ndc используется для связи с демоном netd , который выполняет большую часть настройки сети на Android.

    Оболочка допускает следующие функции:

    Создавать и уничтожать OEM-сети ( oemXX).

    Добавить интерфейсы, управляемые поставщиком, в OEM-сети.

    Добавить маршруты к сетям OEM.

    Включить или отключить IP-переадресацию глобально и на интерфейсах поставщиков.

  • tc

    Команда tc используется для настройки организации очереди и формирования трафика на интерфейсах поставщиков