Configurar redes en vagrant


Vagrant permite definir redes para tus máquinas virtuales de forma sencilla y controlada a través del archivo Vagrantfile

Configurar redes en vagrant
oscar Escrito por oscar 22 April 2025 486 0

Vagrant permite definir redes para tus máquinas virtuales de forma sencilla y controlada a través del archivo Vagrantfile. Estas redes son fundamentales para probar servicios, configurar entornos de desarrollo y simular redes reales.

Redes en vagrant 

De la documentación oficial https://developer.hashicorp.com/vagrant/docs/networking podemos mencionar los siguientes puntos:

  • Vagrant proporciona opciones de red de alto nivel como puertos reenviados, redes públicas y redes privadas para facilitar el acceso al entorno virtual.
  • Estas configuraciones son compatibles con múltiples proveedores, lo que permite usar el mismo Vagrantfile con VirtualBox, VMware, entre otros.
  • Se recomienda a los principiantes usar únicamente las opciones de red de alto nivel hasta dominar el flujo de trabajo de Vagrant, ya que la configuración específica del proveedor puede ser compleja y riesgosa.
  • Existe una suposición por defecto de que hay un adaptador NAT disponible en eth0, lo que garantiza la comunicación básica con la máquina virtual.
  • Los proveedores pueden tener suposiciones adicionales, por lo que es importante revisar su documentación específica.
  • Para configuraciones más avanzadas, es posible personalizar las interfaces de red, pero esto requiere entender cómo funciona el proveedor subyacente.
redes en vagrant
redes en vagrant

Ejercicio de prueba

Antes de explicar cuales son las redes en vagrant, vamos a crear un ejercicio, procedemos a crear un proyecto en vagrant como lo explico en primeros pasos con vagrant, creamos un directorio llamado proyecto-vagrant y ejecutamos:

vagrant init

Esto creara en el directorio el archivo proyecto-vagrant vagrantfile el cual vamos a agregar el box "ubuntu/bionic64" de momento, nos deberá quedar de la siguiente forma:

Vagrant.configure("2") do |config| 
  config.vm.box = "ubuntu/focal64"
  
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

Vemos en el vagrantfile anterior que añadimos una linea para configurar "forwared_port", de esta forma añadimos la configuración de las redes en vagrant.

Uso básico de redes

De la documentación https://developer.hashicorp.com/vagrant/docs/networking/basic_usage se pueden sacar las siguientes ideas:

  • Se pueden definir varias redes mediante varias config.vm.network llamadas dentro del Vagrantfile.
  • Las redes se configuran y habilitan automáticamente después de haber sido definidas en el Vagrantfile como parte del vagrant upproceso vagrant reload.
  • Se puede definir un nombre de host para una máquina virtual Vagrant mediante la config.vm.hostname

Redes en vagrant

📑 Red Reenviada (Port Forwarding)

Los puertos reenviados de Vagrant le permiten acceder a un puerto en su máquina host y tener todos los datos reenviados a un puerto en la máquina invitada, a través de TCP o UDP.

Ejemplo:

Vagrant.configure("2") do |config| 
  config.vm.box = "ubuntu/focal64"
  
  config.vm.network "forwarded_port", guest: 80, host: 8080, id:"tcp8080"
end

Esto significa que accediendo a localhost:8080 en tu máquina real, verás el servicio que corre en el puerto 80 de la VM.

Respuesta forwarded_port
Respuesta forwarded_port

🖥️ Red Privada (Private Network o Host-only)

Las redes privadas de Vagrant te permiten acceder a tu equipo invitado mediante una dirección que no es pública desde internet. Se asigna una IP fija o tambien puede asignarla manualmente:

DHCP

La forma más fácil de utilizar una red privada es permitir que la IP se asigne mediante DHCP.

Vagrant.configure("2") do |config|
  config.vm.network "private_network", type: "dhcp"
end

Esto asignará automáticamente una dirección IP del espacio de direcciones reservado. La dirección IP se puede determinar accediendo vagrant ssha la máquina por SSH y usando la herramienta de línea de comandos adecuada para encontrarla, como ifconfigo ip addr show.

⚠️ Nota: si al ejecutar vagrant up recibe el siguiente mensaje ✴️ "A host only network interface you're attempting to configure via DHCP already has a conflicting host only adapter with DHCP enabled.", se debe a que Vagrant está tratando de crear una red privada (host-only) que use DHCP, pero VirtualBox ya tiene otra interfaz host-only con DHCP habilitado, y eso está causando un conflicto.

 interfaz host-only con DHCP
Interfaz host-only con DHCP

Estas se deben de eliminar para que al crear la maquina virtual, vagrant pueda crear la inerfaz DHCP.

Ingresamos por ssh a la maquina de vagrant para comprobar que IP a asignado como se explica en la documentación mencionada anteriormente.

IP por DHCP
IP por DHCP

IP estática

También puede especificar una dirección IP estática para la máquina. Esto le permite acceder a la máquina administrada por Vagrant usando una IP estática conocida. El archivo Vagrantfile para una IP estática tiene este aspecto:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4"
end

Depende de los usuarios asegurarse de que la IP estática no entre en conflicto con ninguna otra máquina en la misma red.

IPv6

Puede especificar una IP estática mediante IPv6. DHCP no es compatible con IPv6. Para usar IPv6, simplemente especifique una dirección IPv6 como IP:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "fde4:8dba:82e1::c4"
end

Esto asignará esa IP a la máquina. /64Se reservará toda la subred. Asegúrese de usar las direcciones locales reservadas aprobadas para IPv6.

🌐 Red Pública (Public Network)

Uso común: Tu VM se comporta como otro dispositivo más en tu red local.

IP dinámica o fija: Puede obtener IP mediante DHCP o puedes asignarla.

Ejemplo:

config.vm.network "public_network"

Al ejecutar vagrant up, te preguntará a qué adaptador de red física conectarse.

Ventajas:

  • Accesible desde otros dispositivos de la red.
  • Útil para probar acceso externo o servicios públicos.

📊 Comparación rápida

Tipo de Red Acceso desde anfitrión Acceso desde otras máquinas Requiere IP manual
Privada Opcional
Pública Opcional
Reenviada ✅ (por puerto)

Comentario

Debe aceptar antes de enviar