Se eu entendi corretamente, seu problema é que os convidados da VM não podem acessar a si mesmos ou aos outros convidados pelos endereços IP externos. O problema que você está tendo é claramente ilustrado em esta página (imagine que o roteador é o host da VM, e o servidor da Web é um de seus convidados da VM). Você precisa configurar "Hairpin NAT".
A solução, para citar a mesma página, é que
an additional NAT rule needs to be introduced on the [VM host] to enforce that all reply traffic flows through the [VM host], despite the client and server being on the same subnet.
No seu caso, essas regras podem ser assim:
iptables -t nat -A PREROUTING -s $host_only_network -d ${guest_ip[$i]} -o $vnet_interface -p tcp -m multiport --dports "${guest_ports[$i]}" -j MASQUERADE
onde:
host_only_network=192.168.1.0/24 # replace with whatever applies to your guest network
Deixarei isso para você depurar completamente isso, já que configurações complicadas de NAT tendem a me causar dores de cabeça sérias.