Skip to main content

Configurar un servidor NAT en Linux

Requisitos

Para realizar esta tarea vamos a tener un entorno de red montado sobre "VirtualBox" con las siguientes características:

  • Maquina Debian servidor:
    • Dos adaptadores de red. El primero estará como adaptador puente y el segundo configurado como red interna.
    • El sistema será instalado sin entorno de escritorio.
    • La configuración de red será estática para la red interna.
  • Maquina Debian 9.6 cliente:
    • En nuestro caso usaremos el sistema con entorno de escritorio "Mate".
    • El adaptador de red debe estar configurado como red interna.
    • La configuración de red será estática.
  • Maquina Windows 7 cliente:
    • La configuración de red será estática.

Instalación del servidor.

Vamos a utilizar la distribución Debian como servidor, lo instalaremos usando la imagen de instalación por red, el cual lo podemos obtener de su web oficial. Durante la instalación escogeremos solamente la opción de "utilidades básicas del sistema y servidor SSH".

Una vez haya terminado la instalación, configuraremos un nombre para nuestra máquina y un nombre de dominio. Para este caso será el nombre de un supuesto instituto:

  • Fichero "/etc/hostname"

davidrg-debser

  • Fichero "/etc/hosts"

127.0.0.1 localhost 127.0.1.1 davidrg-debser.iesrg.com davidrg-debser

Una vez escrito podemos comprobar que está correctamente configurado con el comando "hostname"

Cambiar el nombre de las interfaces de red

Tenemos que configurar el servidor para que los clientes puedan acceder a internet desde la red interna. Para esto necesitaremos tener dos adaptadores de red. El primero de ellos en modo puente y con DHCP externo, y el otro adaptador estará como red interna y estática. En las últimas versiones de la distribución Debian las tarjetas de red serán renombradas por el sistema, dejarán de llamarse "eth0, wlan0..." y se llamarán "enp0s3...". Para que el nombre siga llamándose como lo conocemos normalmente necesitaremos hacer unos cambios en el fichero "/etc/default/grub".

  • Nos situamos en la siguiente línea:

GRUB_CMDLINE_LINUX=""

  • Modificamos la línea:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

  • Ejecutamos el siguiente comando:
sudo grub-mkconfig -o /boot/grub/grub.cfg

Cuando reiniciemos nuestro servidor, podremos ver que ya aparecen los dos adaptadores de red con los nombres "eth0, eth1" respectivamente.

Configuración de red del servidor

Nuestro servidor cuenta con dos interfaces de red y tiene que ser configurado desde el fichero "/etc/network/interfaces". En esta configuración, se especificará que la tarjeta de red en modo puente (eth0) estará configurada por el servicio DHCP disponible en la red. La interfaz de red que tenemos configurada como "red interna" tendrá una configuración estática, y por último añadiremos una opción al fichero para permitir el protocolo NAT entre las dos interfaces.

  • Configuración del fichero "/etc/network/interfaces"
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0

up iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
down iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

Una vez terminada esta configuración, solamente deberemos activar el reenvío de paquetes entre las dos interfaces, y reiniciar el servicio de red del sistema. Para activar el reenvío de paquetes tendremos que modificar una línea del fichero "systcl.conf". A continuación dejaré la línea que debemos descomentar en el fichero, en caso de no existir dicha línea debemos escribirla nosotros.

  • Modificación del fichero "/etc/sysctl.conf"

net.ipv4.ip_forward=1

  • Comando para reiniciar el servicio de red:
systemctl restart networking

Comprobando que se esta realizando nat en la maquina

Con las máquinas clientes configuraremos una dirección IP que esté dentro de la misma red con máscara /24, añadiremos como puerta de enlace la IP "192.168.1.254" y por último un servidor DNS valido.

A continuación dejaré varias imágenes dónde podremos ver la configuración de red del servidor y pruebas de funcionamiento desde las máquinas clientes.

  • Configuración de red de la máquina servidor: Comprobación de funcionamiento
  • Cliente "Windows 7" navegando por internet: Comprobación de funcionamiento
  • Cliente "Debian" navegando por internet: Comprobación de funcionamiento

Con esto ya tendríamos configurados dos clientes que navegarán por internet pasando por el servidor.

Posible error

Este proceso puede causar problemas cuando el servidor tiene en ambas tarjetas de red dos direcciones IP que son de la misma red. Por poner un ejemplo, podemos tener ambas tarjetas de red en la misma red de "192.168.1.0", aunque tengan distintas direcciones IP, el proceso de MASQUERADE puede causar conflicto en estos casos.