Creación y configuración de un escenario router-nat
1. Introducción
Queremos automatizar la creación de la siguiente infraestructura usando Vagrant, el esquema que queremos desarrollar, que vemos en la imagen, tiene las siguientes características:
Este escenario tiene dos máquinas:
-
Router: que está conectada a una red pública y a una red privada (muy aislada).
-
Cliente: esta máquina está conectada a la misma red privada que la máquina anterior.
-
La máquina router debe salir por la red pública. Esta máquina no va a utilizar eth0 para acceder al exterior.
Queremos configurar el escenario con ansible, para que cumpla lo siguiente:
-
La máquina cliente debe tener acceso a internet. Para ello debe salir por eth1 y la máquina router debe estar configurada para enrutar las peticiones de las máquinas conectadas a la red privada. Del mismo modo, eth0 sólo se utiliza para acceder con vagrant ssh. Debes pensar qué configuración debe tener la máquina cliente: puerta de enlace, configuración dns,…
-
La máquina cliente tendrá un servidor web instalado, la máquina router hará DNAT para que podamos acceder a la página usando su IP pública.
La receta ansible debe tener al menos 4 roles:
-
common: Estas tareas se deben ejecutar en todos los nodos: actualizar los paquetes y añadir tu clave pública a la máquinas para poder acceder a ellas con ssh. ¿Existe algún módulo de ansible que te permita copiar claves públicas?. -
router: Todas las tareas necesarias para configurar router cómo router-nat y que salga a internet por eth1. Las configuraciones deben ser permanentes. ¿Existe algún módulo de ansible que te permita ejecutar sysctl?. -
cliente: Todas las tareas necesarias para que las máquinas conectadas a la red privada salgan a internet por eth1. -
web: Las tareas necesarias para instalar y configurar un servidor web con una página estática en la máquina cliente.
En este repositorio podéis encontrar el código necesario para crear el escenario y la receta ansible.
Nos conectamos a las dos máquinas con vagrant ssh router y vagrant ssh cliente y comprobamos que tenemos acceso a internet.


Comprobamos las ip de las máquinas con ip a y vemos que la máquina router tiene dos interfaces, una para la red privada y otra para la red pública.


Comprobamos que la máquina cliente tiene acceso a internet.


Y podemos acceder a la página web que está alojada en la máquina cliente desde la máquina router.

Si queremos integrar la receta ansible en el Vagrantfile, podemos hacerlo de la siguiente manera:
config.vm.provision "ansible" do |ansible|
ansible.playbook = "/home/maria/Documentos/2 ASIR/SRI/Tema 1/Práctica 1/Ansible/site.yaml"
endY en el ansible.cfg:
remote: vagrant