LINUX.ORG.RU

Настройка сети в Android как-то и работает и нет.

 ,


0

2

Всем привет!

Android же тоже Linux?
Короче такая странная штука. Колупаю AOSP с целью установки на самодельную железяку и наткнулся на одну из проблем в настройке. Не могу дотёмкать чего ему не хватает в настройке сети. Как всё выглядит:
Пробую свою сборку AOSP на QEMU и всё даже уже работает и запускается. Но есть одно НО! Сетевой интерфейс.
Тут 2 варианта развития:
1. QEMU запущено с -netdev,user,..... когда QEMU эмулирует подсетку с DHCP сервером, выдаёт клиенту адрес и натит трафик за пределы QEMU.Со стороны хоста этот процесс QEMU просто потребляет трафик как приложение. В таком варианте всё работает. Android устройство получает IP и видит «интернет».
2. QEMU запущено с -netdev,tap,.... когда QEMU подключает сетевой интерфейс к заранее созданному tap интерфейсу хоста и просто пробрасывает туда трафик. И тут от части тоже всё работает. со стороны хоста создана виртуальная сеть на базе tap и запущен dhcp, dns, nat и просто linux debian запущенный в этом же qemu всё видит и работает.
Но вот Android не то чтобы работает. Он получает IP назначает его на интерфейс. Создаёт таблицу маршрутизации, но при этом сообщает системе, что интернета нет. Если из консоли Android пытаться тестировать сеть типа `ping 8.8.8.8` то будет ошибка `network is unreachable` и так будет даже на свой собственный IP адрес присвоенный на eth0.
Но если сделать `ping 8.8.8.8 -I eth0` то всё работает. Всё начинает пинговаться.

Как так? Не могу найти отличий в настройки через user и tap. Даже уже трафик снифал, смотрел dhcp пакеты и поведение в сети в том и в том варианте. Не вижу отличий.

На какие настройки смотреть? Потыкайте носом плиз.

Ах да, почему всплыло! На реальном железе та же фигня - не работает сеть точно так же. т.е. прям как в случае с tap - адрес получает, а в сеть не ходит.