@Antonio G., I followed the link you gave, so I used the gateway of the real network.
@dbaxps, I cannot edit /etc/resolv.conf so I didn't define any IP of DNS. I know I'm not supposed to run any "route", however, it didn't come automatically...
@jjulien, I will edit my question with the outputs.

Comments

Having similar issues ... installing an all-in-one packstack in a virtualbox is a no go when trying to connect from cirros to anything outside the virtualbox environment. Tried so many suggestions and still pulling my hair. There is no proper documentation on troubleshooting neutron issues

However, in my host, I only see the path 192.168.1.6 > 192.168.102.227. So, actually, my instance CAN connect to external network!! But not the other way around.

I think that's because in .102.227 he tries to answer the ping with a packet to .1.6 but, of course, there is no route for that (as it is a private network) and not even the host receives that ping answer.

In the meantime I also configured a floating IP for my instance, but it seems not with that is working...

Comments

in addition make sure that the network that your virtual instance belongs to has a port to the router which has a connection to your ext-subnet. It seems you do not have the port connected to your router considering your vm instance did not have a default gw automatically created.

Yes, the computers in the external network have access to the internet. I don't only have a DNS problem: as I wrote, I cannot ping 8.8.8.8 or other IPs in the external network. So, resolve DNS will not solve this problem (and as I said, I didn't find a way to edit that in CirrOS)

@dodi, sorry but I don't know how to do that thing you said about the ports. Could you please tell me what are the commands I should use? I remember that in my instance I can ping the router with both external and internal IP.

One more thing. Now I do not have to manually add the route as I wrote in the question (it was another problem https://ask.openstack.org/en/question/65117/cirros-without-default-ipv4/ (here)). I will update the question removing that step.

@tjiagoM - If this is Openstack Juno, I am seeing you have added an ip address to your br-ex, its not the case anymore in Juno, try not to assign an external ip to your br-ex and restart the neutron services and openvswith that should do it. Let's hope :) and let me know the results.

If you are seen duplicated packets it is because you are a loop in the network, and if you are running openstack on VM, it is most likely that the loop is a software generated, not in you physical network.
When you send a brodcast packet (arp/dhcp), the packet get restransmited over all ports, physical and virtual.
In VMware i had to set the vswitch ports to use promiscous mode for the VM, with two uplink. The second uplink generate a loop just for broadcast packets.
This generates update in the bridge/mac/portID table, wich you dont wont.
Example:
if you follow the broadcast packet (tcpdump -i at every involved interface, bridge and tap), you will see it first in the TAP/PortID=1, then at the Bridge going out, then it will enter again the same packet, so the bridge will assoiate the MAC to the PortID2, then you will see the actual reply wich will be redirected to PortID2, and your VM was on PortID1.

On the next brodcast it will repeat, so your VM MAC will be jumping from portID1 to 2. As the packets flow, but it will never gets to the VM, because at that moment, the MAC will be associated to the wrong port.