Estou tentando testar um aplicativo Android em um emulador em um servidor da Web na máquina host. Rodando em um Mac (El Capitan), eu tenho uma ponte virtual previamente configurada com a Ethernet NIC conectada à internet anexada a ela. Eu inicio o emulador com:
sudo emulator -avd Nexus_9 -qemu -netdev tap,id=mynet0,script=tapup.sh,
downscript=tapdown.sh -device virtio-net-pci,netdev=mynet0
O script tapup.sh configura o encaminhamento e conecta o TAP à ponte da seguinte forma:
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
Depois de iniciar o emulador, inicio o cliente dhcp a partir do shell adb:
adb shell "su root dhcpclient -i eth1&"
E de lá eu posso pingar o emulador do host ( mac:~ user$ ping 192.168.0.5
) e pingar o host do emulador ( generic_x86_64:/ # ping 192.168.0.4
). Nota: só posso pingar para o host como root ( su ) e não como um usuário normal; Se eu tentar, obtenho "connect: Network is unreachable" .
Com essa configuração, não consigo me conectar a um servidor da Web em execução no host nem na Internet (embora sem a bridge e o TAP eu ainda não consegui conectar-me à Internet, mas consegui acessar o servidor da Web). Alguma idéia de por que não consigo acessar o servidor web?