lunes, 23 de septiembre de 2024

Router Ubuntu Server

Posted by q3it on lunes, septiembre 23, 2024 in ,


En este post voy a mostrar como configurar un router linux utilizando ubuntu server para conectarnos a través de él con un cliente en Debian. Lo primero es visualizar un diagrama de red que nos dé una idea de como se van a comunicar las máquinas. 

 
Por un lado tenemos Debian que va a ser el equipo cliente y en el otro Ubuntu Server que va a ser nuestro router. Debian estará en una red interna que se conectará a Ubuntu Server y para ello Debian tendrá un adaptador de red sin conexión a internet. Ubuntu Server por su lado se le configurará un adaptador como red interna y otro que hará de router para tener acceso a internet.
 
Abrimos la máquina Debian y lo configuramos de forma gráfica, no por terminal. 
 
 
Es muy importante que la puerta de enlace sea la IP del servidor Ubuntu. Abrimos una terminal y hacemos un ping a google.com.
 
 
Vemos que no dan respuesta ninguna de las peticiones. Lo primero que vamos a hacer es entrar en la máquina Ubuntu y configurar los adaptadores de red, que para esta práctica tenemos dos. 
 
 
El  ens160 va a ser el que nos de una IP por dhcp y nos conecte a internet y el ens256 se va a configurar como red interna. Para configurar las tarjetas de red entramos al siguiente fichero /etc/netplan/50-cloud-init.yaml y hacemos las modificaciones.
 
 
Así es como tendría que dar el fichero, ejecutamos netplan apply, pulsamos enter y, si no nos da ningún fallo es que se ha configurado perfectamente el fichero netplant. Ahora hacemos un cat al fichero /proc/sys/net/ipv4/ip ̣forward y normalmente está en 0 pero le vamos a cambiar a 1 "cero no va a permitir el paso de paquetes y 1 lo va a permitir". Vale, entonces modificamos el siguiente fichero /etc/sysctl.conf esto para que cuando reiniciamos la máquina conserve los cambios. 
 
 
Descomentamos la línea que está en amarillo y le ponemos un 1. Guardamos el fichero, y para que se apliquen los cambios ejecutamos sysctl -p /etc/sysctl.conf
si volvemos a hacer el cat sobre el fichero estará en 1.
 
 
Ahora lo que tenemos que hacer es una configuración en iptables para qué cuando nosotros hagamos una petición o enviemos un paquete, este pueda salir a internet por medio de la tarjeta de red local pasando por la tarjeta de red dhcp.
 
Lo primero es que vamos a ver como están las reglas iptables ejecutando el siguiente comando iptables -L.
 
 
Si nos fijamos, están las tres INPUT FORWARD OUTPUT en ACCEPT, por defecto viene así. ¿Qué vamos a hacer ahora? ver la tabla nat para ver el post-roating. Ejecutamos la siguiente línea iptables -L -nv -t nat. 
 
 
Si nos fijamos abajo del todo el POSTROUTING está vacío, aquí es donde nosotros tenemos que hacer el enmascaramiento. Para hacer esto ejecutamos la siguiente línea iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE Si hacemos un ping a google.com desde la máquina Debian nos responderá.
 
 
Si ahora nos fijamos en la tabla, vemos que en la última línea está la tarjeta de red ens160 enmascarada.
 
 
Vale, ahora qué tenemos que hacer para que se queden los datos guardados en el servidor de la tabla de iptables. Pues tenemos que instalar la siguiente aplicación... apt install iptables-persistent. Una vez instalda guardamos los cambios escribiendo lo siguiente: netfilter-persistent save.
 
Con esto habrémos configurado un router linux para que permita el paso mediante un adaptador puente a un router que tiene acceso a internet.