You are on page 1of 8

ACCESO A INTERNET A TRAVÉS DE

HOST-ONLY
Índice
Virtual Box y el modo de red Sólo-Anfitrión 3
Configuración de la red Sólo-Anfitrión 3
Configuración de la máquina virtual 4

Configuración de la máquina anfitrión 4


Habilitar IP Forwarding 5
Configurar IPTables 5
Persistencia de las reglas 6
Resolución de nombres 7
1. Virtual Box y el modo de red Sólo-Anfitrión
VirtualBox es un software de virtualización de sistemas operativos. Con él podremos
crear máquinas virtuales en la que instalaremos diversos sistemas operativos (Windows,
CentOS, Sistemas Unix, etc…) y que serán completamente configurables externamente
(dispositivos de los que dispone, hardware y sus propiedades, modo de red, etc…). Cuando
creemos una máquina virtual se conocerá como el host o anfitrión, y la máquina
virtualizada se conocerá como guest o huésped.

En esta práctica nos centraremos en los modos de red, en concreto en el modo


solo-anfitrión. Este modo crea una red virtualizada que enlaza la máquina guest con la
máquina host. Solo estos dos equipos podrán comunicarse entre sí, por ende, la máquina
guest no tendrá acceso libre a Internet ya que está encerrado en la red virtual.

Nuestra meta es configurar las máquinas guest y host para que en una red sólo-
anfitrión, el guest tenga acceso libre a internet pasando a través del anfitrión.

1. Configuración de la red Sólo-Anfitrión


Para que las máquinas trabajen en esa estructura de red, es necesario configurar
VirtualBox previamente. En esta guia la configuraremos con VirtualBox 5.2.18 r124319 y
con una máquina virtual de Ubuntu 16.04 de 32 bits.

El primer paso será abrir el panel de Herramientas Globales de VirtualBox.


Accederemos al gestor de redes. Hacemos click en el icono de Crear y VirtualBox generará
una nueva red sólo anfitrión que deberemos configurar y habilitar:
2. Configuración de la máquina virtual
Una vez creada la red virtual, configuraremos la máquina virtual. Hemos creado una
máquina virtual con Ubuntu Desktop 16.04. El paso más importante y que sí o sí hay que
hacer para configurar la máquina virtual es configurar su adaptador de red para que esté
dentro de la red virtual que creamos anteriormente: vboxnet0

(No añadiremos ninguna tarjeta de red más, puesto que la meta de la práctica es que esta
máquina tenga acceso a internet solo a través de la interfaz vboxnet0.)

2. Configuración de la máquina anfitrión


Procederemos a configurar la máquina anfitrión para que de acceso a Internet a la
máquina huésped. En resumen, lo que vamos a hacer son dos cosas:

- Habilitar el IP Forwarding (reenvío de paquetes).


- Configurar IPTables para que redireccione los paquetes a la máquina huésped.
1. Habilitar IP Forwarding
Para habilitar el reenvío de paquetes de debemos ejecutar el siguiente comando en
el host:

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Básicamente lo que hacemos es escribir el número uno en el directorio


seleccionado.

2. Configurar IPTables
IPTables es el firewall por defecto de Ubuntu. En él definimos reglas para el tráfico
de datos. Controlamos los datos que entran, qué se hace con ellos, a donde se mandan, si
se rechazan, etc… al igual que los datos que salen de él.

Es importante saber antes de todo el nombre de la interfaz de nuestro equipo host


que tiene acceso a Internet y su IP. Se puede saber fácilmente con el comando ifconfig.
En nuestro caso la interfaz se llama enp2s0 y su IP es 172.26.105.117.

Debemos ejecutar los siguientes comandos:

- El siguiente comando mandará todo lo que entra con destino -s (red destino,
en este caso la red sólo-anfitrión) a través de -o (origen, que es nuestra
tarjeta de red con acceso a Internet) a la interfaz -i (interfaz destino, que es la
interfaz que tiene acceso a la máquina huésped). Así, todo lo que entre con
destino la máquina huésped, entrará por enp2s0 y se mandará a vboxnet0.

$ sudo iptables -A FORWARD -o enp2s0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --


ctstate NEW -j ACCEPT

- El siguiente ordenará que se reenvíen los paquetes en las conexiones que ya


están establecidas (en este caso la conexión de la red host-only).

$ sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j


ACCEPT

- El siguiente paso es, primero, limpiar la NAT de la máquina anfitrión para


eliminar restos que pudieran entrar en conflicto con las nuevas reglas.
Seguidamente habilitaremos un enmascarado para los paquetes
redireccionados que entran y salen, para que no puedan ser interceptados y
que no se muestren sus datos.

$ sudo iptables -t nat -F POSTROUTING


$ sudo iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE

- Ahora debemos habilitar el firewall si no está habilitado. Para controlarlo


tenemos los siguientes comandos:

$ sudo ufw status Muestra el status de IPTable

$ sudo ufw disable Deshabilita IPTable

$ sudo ufw enable Habilita IPTable

$ sudo ufw reload Recarga las reglas de IPTable

Una vez habilitado, ya tendremos acceso a Internet. En el cliente tendremos que


configurar la red manualmente (ya que por DHCP suele dar problemas). La configuración
quedaría así (en nuestra máquina virtual, el adaptador de la red host-only se llama eth1):

Una vez hecho, reiniciamos la interfaz y ya podremos hacer ping, a IPs, pero no
resolver nombres. La resolución de nombres se verá en el siguiente punto:

A. Persistencia de las reglas


Las reglas que hemos escrito en IPTables se perderán en el próximo reinicio. Existe
una forma de guardarlas permanentemente de forma manual, pero en este caso
instalaremos un paquete que nos ayudará a hacerlo de forma automática.

Instalamos IPTables-Persistent
$ sudo apt-get install iptables-persistent

Los comandos para trabajar con el paquete son:

sudo netfilter-persistent save Guarda la configuración actual de IPTables

sudo netfilter-persistent reload Recarga las reglas guardadas.

Otra forma de hacerlo es con el comando iptables-save. Lo que haremos es


exportar la configuración de iptables a un fichero y después asociaremos un comando para
que cuando la interfaz asociada a la red host-only se active, cargue las reglas.

$ sudo iptables-save > /etc/network/iptables.rules

Para que al cargarse nuestra interfaz cargue las reglas, debemos editar el fichero
/etc/network/interfaces de la siguiente forma:

iface enp2s0 inet static


....
pre-up iptables-restore < /etc/network/iptables.rules

3. Resolución de nombres
Aunque ahora las máquinas tienen acceso a Internet, no tienen servicio de
resolución de nombre, es decir, podremos conectarnos a sitios web a través de su IP:
91.142.211.62, pero no podremos hacerlo a través de su nombre: www.iesvegademijas.es

La solución más rápida para esto es configurar manualmente la dirección de un


servicio de resolución de nombres dinámico (Dynamic Name Server).

Para ello, debemos editar el fichero /etc/resolv.conf y añadir la línea indicando cual
es nuestro servidor DNS. Podemos incluso añadir servidores secundarios por si alguno no
respondiera correctamente (En este ejemplo usamos los DNS públicos de Google):

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)


# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 8.8.8.8
nameserver 8.8.4.4
Esta configuración será temporal. Si queremos que la configuración persista,
debemos editar el archivo /etc/network/interfaces y definir con la directiva dns-
nameserver:

(En nuestro caso la interfaz es eth0, pero en otros casos la interfaz puede ser otra. Además,
esta directiva puede ser ignorada por interfaces que obtengan su dirección IP por DHCP,
por lo que es mejor definir una dirección ip estática)

# The primary network interface


auto eth0
iface eth0 inet static
address 192.168.X.X
netmask 255.255.255.0
gateway 192.168.X.X
dns-nameservers 8.8.8.8

You might also like