Проверка связи между хостом и эмулятором Android с использованием моста / TAP, но без доступа к серверу на хосте

670
bchase

Я пытаюсь протестировать приложение Android в эмуляторе на веб-сервере на хост-компьютере. Работая на Mac (El Capitan), у меня есть предварительно настроенный виртуальный мост с подключенным к Интернету сетевым адаптером Ethernet. Я запускаю эмулятор с:

sudo emulator -avd Nexus_9 -qemu -netdev tap,id=mynet0,script=tapup.sh, downscript=tapdown.sh -device virtio-net-pci,netdev=mynet0 

Сценарий tapup.sh настраивает переадресацию и подключает TAP к мосту следующим образом:

sysctl net.link.ether.inet.proxyall=1 sysctl net.inet.ip.forwarding=1 sysctl net.inet.ip.fw.enable=1 ifconfig bridge1 addm $1 ifconfig $1 up 

После запуска эмулятора я запускаю клиент dhcp из оболочки adb:

adb shell "su root dhcpclient -i eth1&" 

И оттуда я могу пропинговать эмулятор с хоста ( mac:~ user$ ping 192.168.0.5) и пинговать хост с эмулятора ( generic_x86_64:/ # ping 192.168.0.4). Примечание: я могу пинговать хост только как root ( su ), а не как обычный пользователь; если я пытаюсь получить «подключиться: сеть недоступна» .

С этой настройкой я не могу подключиться к веб-серверу, работающему на хосте, ни к Интернету (хотя без моста и TAP я все еще не мог подключиться к Интернету, но мог получить доступ к веб-серверу). Любые идеи о том, почему я не могу получить доступ к веб-серверу?

0

0 ответов на вопрос