GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar redes en Vagrant

vagabundo es tan popular entre los desarrolladores y los ingenieros de DevOps, porque pueden continuar usando las herramientas de desarrollo existentes (por ejemplo, editores, navegadores, depuradores, etc.) en su sistema local. Por ejemplo, los desarrolladores pueden sincronizar los archivos de una máquina invitada al sistema local, usar su editor favorito para editar esos archivos y finalmente sincronizarlos con la máquina invitada. Del mismo modo, si han creado una aplicación web en la VM, pueden acceder y probar esa aplicación desde el navegador web de su sistema local. En esta guía, veremos cómo configurar la red en Vagrant para brindar acceso a la máquina invitada desde el sistema host local.

Configurar redes en Vagrant

Vagrant ofrece las siguientes tres opciones de red:

  1. Reenvío de puertos
  2. Red privada (red de solo host)
  3. Red pública (red en puente)

1. Configurar el reenvío de puertos

De forma predeterminada, podemos acceder a las máquinas virtuales de Vagrant a través de ssh usando vagrant ssh dominio. Cuando accedemos a una máquina virtual a través de SSH, Vagrant reenvía el puerto 22 desde la máquina invitada a un puerto abierto en la máquina host. Esto se llama redirección de puertos. Vagrant maneja automáticamente este proceso de reenvío de puertos sin la intervención del usuario. También puede reenviar un puerto específico de su elección. Por ejemplo, si redirigió el puerto 80 en la máquina invitada al puerto 8080 en la máquina host, puede acceder al servidor web navegando a http://localhost:8080 en su máquina host.

El reenvío de puertos se puede configurar en el "Vagrantfile". Vaya al directorio de su proyecto Vagrant y abra Vagrantfile en su editor favorito.

Busque la siguiente línea:

Vagrant.configure("2") do |config|
[...]
   # config.vm.network "forwarded_port", guest: 80, host: 8080
end

Descoméntelo y defina qué puertos reenviar a dónde. En este ejemplo, reenvío el puerto 80 del invitado al puerto 8080 del host.

Vagrant.configure("2") do |config|
[...]
   config.vm.network "forwarded_port", guest: 80, host: 8080
end

Ahora reinicie la máquina Vagrant con el Vagrantfile actualizado:

$ vagrant reload --provision

Verá que el reenvío de puertos está configurado en la salida:

==> default: Halting domain…
==> default: Starting domain.
==> default: Waiting for domain to get an IP address…
==> default: Waiting for SSH to become available…
==> default: Creating shared folders metadata…
==> default: Forwarding ports…
==> default: 80 (guest) => 8080 (host) (adapter eth0)
==> default: Rsyncing folder: /home/sk/myvagrants/ => /vagrant

También puede destruir la VM y volver a ejecutarla con Vagrantfile actualizado:

$ vagrant destroy <VM-name>
$ vagrant up

Ahora SSH en la máquina invitada con el comando:

$ vagrant ssh

Instale el servidor web Apache en él. Si la máquina virtual está basada en Deb, ejecute:

$ sudo apt install apache2

Si es un sistema basado en RHEL, ejecute esto:

$ sudo yum install httpd

Inicie el servicio Apache:

$ sudo systemctl enable --now httpd

Ahora abra el navegador web en su sistema host y vaya a http://localhost:8080 dirección desde su navegador. Verá la página de prueba de Apache en su navegador.

Aunque accedemos al servidor web con URL http://localhost:8080 en el sistema host, no se sirve desde el servidor web local. El sitio web real (es decir, la página de prueba de Apache) se sirve desde la máquina virtual invitada y todos los datos reales de la red se envían al invitado.

1.1. ¿Qué sucede si otra aplicación está utilizando el puerto 8080?

En nuestro ejemplo anterior, reenviamos el puerto 80 del invitado al puerto 8080 en el host. En otras palabras, el tráfico enviado al puerto 8080 en realidad se reenvía al puerto 80 en la máquina invitada. ¿Qué pasa si alguna otra aplicación está usando actualmente el puerto 8080? La colisión de puertos ocurre cuando se ejecutan varias máquinas virtuales. Sin saberlo, puede reenviar un puerto ya utilizado. ¡No hay problema! Vagrant tiene soporte incorporado para detectar colisiones de puertos. Si otra aplicación ya está utilizando el puerto, Vagrant lo informará en la salida, por lo que puede liberar el puerto o usar otro puerto.

Vagrant también es lo suficientemente inteligente como para encontrar y corregir la colisión de puertos automáticamente. Si encuentra que un puerto colisiona con otro puerto, lo corregirá automáticamente utilizando cualquier otro puerto no utilizado por usted.

Para habilitar la corrección automática, agregue una opción adicional auto_correct: true en la definición de redirección de puertos en tu Vagrantfile.

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true

De forma predeterminada, Vagrant elegirá el puerto de corrección automática entre el puerto 2200 y puerto 2250 distancia. También puede elegir su propio rango personalizado definiendo la siguiente línea en el Vagrantfile como se muestra a continuación.

config.vm.usable_port_range = (2200..2250)

Reinicie la máquina Vagrant para que se apliquen los cambios:

1.2. Cambiar protocolo de red

De forma predeterminada, Vagrant usa el protocolo TCP para el reenvío de puertos. Sin embargo, puede utilizar el protocolo UDP si desea reenviar paquetes UDP.

Para usar el puerto UDP, agregue la siguiente definición en su Vagrantfile:

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true protocol: "udp"

Reinicie Vagrant VM para aplicar los cambios.

2. Configurar red privada

En redes privadas o solo de host, se crea una conexión de red entre el sistema host y las máquinas virtuales en el sistema host. La red privada se crea mediante un adaptador de red virtual que es visible para el sistema operativo host. Los otros sistemas de la red no pueden comunicarse con las máquinas virtuales. Todas las operaciones de red están permitidas dentro del sistema anfitrión.

La red privada también puede funcionar como servidor DHCP y tiene su propia subred. Cada VM en la red privada obtendrá una dirección IP de este espacio IP. Entonces, podemos acceder a las máquinas virtuales directamente usando la IP del sistema host.

Para configurar una red privada o solo de host en Vagrant con una dirección IP estática, abra el archivo Vagrant, busque la siguiente línea y elimínela.

config.vm.network "private_network", ip: "192.168.121.60"

Aquí, 192.168.121.60 es la dirección IP de la máquina virtual. Reemplace esto con su propia IP.

Reinicie la máquina virtual para aplicar los cambios.

Si desea configurar la dirección IP automáticamente desde DHCP, modifique la definición de red privada como se muestra a continuación:

config.vm.network "private_network", type: "dhcp"

Se asignará una dirección IP aleatoria a la máquina virtual. Para encontrar la IP de una máquina virtual, debe acceder a ella mediante SSH mediante vagrant ssh comando y luego encuentre su dirección IP con ip comando.

3. Configurar red pública

En redes públicas o en puente, todas las máquinas virtuales estarán en la misma red que su máquina host. Cada VM recibirá su propia dirección IP de un servidor DHCP (si está disponible en la red local). Por lo tanto, todas las máquinas virtuales actuarán como un sistema físico más en la red y podrán comunicarse con cualquier sistema de la red.

Para configurar redes públicas o en puente, edite Vagrantfile, busque la siguiente línea y elimínela:

config.vm.network "public_network"

Guarde y cierre el archivo. Reinicie la máquina virtual para aplicar los cambios. La máquina virtual obtendrá automáticamente una dirección IP.

Si desea establecer una IP estática, simplemente modifique la definición de red como se muestra a continuación:

config.vm.network "public_network", ip: "192.168.121.61"

4. Establecer nombre de host

Puede definir el nombre de host mediante config.vm.hostname ajuste en el Vagrantfile.

Edite Vagrantfile en su editor preferido y agregue/modifique la siguiente línea:

config.vm.hostname = "myhost.ostechnix.example"

Guarde y cierre el archivo. La definición anterior agregará myhost.ostechnix.example línea en /etc/hosts archivo.

Reinicie Vagrant VM para aplicar los cambios.

Verifique si el nombre de host ha cambiado:

[[email protected] ~]$ hostname -f
myhost.osechnix.example

También puede verificar directamente el contenido de /etc/hosts archivo.

$ cat /etc/hosts

Salida de muestra:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.1 myhost.osechnix.example myhost

5. Habilitar múltiples opciones de red

Cada opción de red tiene sus ventajas y desventajas. Por alguna razón, es posible que desee configurar todas las opciones de red en una sola máquina virtual. Si es así, Vagrant tiene la capacidad de habilitar múltiples opciones de red. Todo lo que tiene que hacer es definir las opciones de red una por una en el Vagrantfile como se muestra a continuación:

config.vm.hostname = "myhost.ostechnix.example"
config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true
config.vm.network "private_network", ip: "192.168.121.60"

Cuando crea una nueva VM con este Vagrantfile, Vagrant creará una VM con los siguientes detalles de red:

  • establecer nombre de host como myhost.ostechnix.example
  • configurar el reenvío de puertos
  • configurar una privada con IP estática 192.168.121.60

Además de configurar varios tipos de redes, también podemos definir varias redes. Por ejemplo, puede definir varias redes solo de host con diferentes direcciones IP, como se muestra a continuación.

config.vm.network "private_network", ip: "192.168.121.60"
config.vm.network "private_network", ip: "192.168.121.61"

Espero que esto ayude. En esta etapa, es posible que tenga una idea básica sobre los tipos de redes de Vagrant y cómo configurar las redes en Vagrant desde la línea de comandos. Hay más que aprender. Te recomiendo que consultes la documentación oficial de Vagrant para obtener una configuración más detallada.


Linux
  1. Cómo cambiar el puerto SSH en Linux

  2. Cómo instalar Vagrant en Linux

  3. Cómo instalar Vagrant en Linux

  4. Cómo configurar túneles SSH

  5. Agotamiento del puerto de red de Linux

Cómo hacer ping a un número de puerto en Linux

Cómo hacer ping a un número de puerto específico

Cómo instalar y configurar Grafana

Cómo configurar NGINX en un servidor CentOS 7

¿Cómo cambiar el puerto SSH en Centos 7.x?

¿Cómo cambiar el puerto SSH en Ubuntu?