Configuración de Raspberry Pi como router ethernet

Raspberry PI 3b+: Router con Ubuntu server 20.04, Iptables y Dhcp server

Para configurar un enrutador ethernet en una Raspberry Pi 3b+ en el sistema operativo Ubuntu Server, se debe activar el IP Forwarding (encargado del reenvío de paquetes), definir una dirección IP fija en una interface de red, instalar un servidor dhcp y establecer reglas de enrutamiento en iptables.

En mi caso, el enlace principal del servicio de internet corresponde a un modem Mifi ZTE. Este modem esta conectado a un puerto usb del raspberry pi y resuelve la dirección IP 192.168.0.1 en la interfaz de red eth1

diagram

Configuración de interface de red ethernet en archivo /etc/netplan/50-cloud-init.yaml:

  • ip fija (192.168.10.1)
  • sin gateway
  • con dns 192.168.0.1, 8.8.8.8, 1.1.1.1
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      optional: true
      addresses: [192.168.10.1/24]
      nameservers:
        addresses: [192.168.0.1, 8.8.8.8, 1.1.1.1]

Aplicar parámetros de interfaz de red:

sudo netplan apply

Activar reenvío de paquetes y comprobar el estado de enrutamiento:

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

cat /proc/sys/net/ipv4/ip_forward

sudo sysctl -p 

Instalar servidor dhcp y editar su archivo de configuración:

sudo apt install isc-dhcp-server

sudo nano /etc/dhcp/dhcpd.conf

Archivo /etc/dhcp/dhcpd.conf:

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.10 192.168.10.40;
  option domain-name-servers 192.168.0.1, 8.8.8.8, 1.1.1.1;
  #option domain-name "internal.example.org";
  option subnet-mask 255.255.255.0;
  option routers 192.168.10.1;
  option broadcast-address 192.168.10.255;
  default-lease-time 600;
  max-lease-time 7200;
}

Reiniciar servidor dhcp

sudo systemctl restart isc-dhcp-server

sudo systemctl status isc-dhcp-server

Aplicar regla para activar NAT de tipo MASQUERADE en la interfaz de red eth1 (en mi caso, esta interfaz corresponde al modem/mifi ZTE, conectado a un puerto usb del raspberry pi):

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE

iptables -t nat -L

Eso es todo, podemos listar los clientes dhcp activos con el comando dhcp-lease-list --lease /var/lib/dhcpd/dhcpd.leases

dhcp-lease-list



¿tienes alguna consulta?
Puedes contactarme enviándome un mensaje desde aquí.