🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Requisitos previos
  • Actualizar e instalar paquetes
  • Configurar DHCP
  • Configuración de servicio DHCP
  • Configuración de una red en DHCP
  • Configuración de varias subredes
  • Configuración de un servidor DHCP failover (alta disponibilidad)
  • Revisar servicios de red
  1. Servicios
  2. DHCP

DHCP con Ubuntu

El servicio por defecto de Ubuntu para el dhcp es el isc-dhcp-server que vamos a utilizar en la práctica.

Vamos a montar una práctica donde dos máquinas virtuales, una servidor y otra cliente se den servicio de DHCP la una a la otra.

Requisitos previos

  • Dos MV:

    • Una con Ubuntu Desktop 22.04 y un adaptador de red:

      • red NAT sin DHCP

    • Otra con Sistema operativo cliente y un adaptador de red:

      • Red interna

Actualizar e instalar paquetes

Actualizamos los repositorios de nuestro sistema:

sudo apt update

Una vez hecho esto, procedemos a instalar el paquete isc-dhcp-server:

sudo apt install isc-dhcp-server

En caso de error prueba con un sudo apt upgrade

Configurar DHCP

Planificaremos para nuestra configuración una máquina Ubuntu server con la siguiente información:

Red: 10.0.0.0/24
Máscara: 255.255.255.0
IP server: 10.0.0.5
Rango de Ips: 10.0.0.10 10.0.0.50
DNS: 10.0.0.5
Gateway: 10.0.0.1 //el GW de salida de la red NAT
Broadcast: 10.0.0.255 
Tiempo de arrendamiento (lease-time): 600s

Primero revisemos que adaptadores de red tenemos disponibles en nuestra MV, aparecen tres:

  • lo: dirección de loopback 127.0.0.1/8

  • enp0s3: actualmente asignado mediante red NAT pero lo cambiaremos a IP fija.

Configuración de servicio DHCP

Edita el archivo de configuración de la interfaz de red en /etc/default/isc-dhcp-server para especificar en qué interfaz debe escuchar el servidor DHCP. Abre el archivo en un editor de texto:

sudo nano /etc/default/isc-dhcp-server

Asegúrate de que la línea INTERFACESv4 esté configurada para la interfaz que estás utilizando. Por ejemplo:

INTERFACESv4="enp0s3"

Configuración de una red en DHCP

La información antes mencionada la dispondremos dentro de los archivos de configuración del servicio, para editar el fichero de configuración de nuestro servidor DHCP:

Antes de editar el archivo procedemos a realizar una copia de seguridad:

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.BKP

Para luego editar el archivo con nano:

sudo nano /etc/dhcp/dhcpd.conf

Una vez dentro lo escribiremos de tal forma:

#Para tener una referencia
option domain-name "alexdns.local";
option domain-name-servers ns1.alexdns.local;

default-lease-time 600;
max-lease-time 7200;

authoritative;

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.50;
option routers 10.0.0.1; #con la Ip de GW de antes
option broadcast-address 10.0.0.255; #lo mismo con el broadcast
option domain-name-servers 10.0.0.5; #lo dejaremos configurado para poder usarlo como DNS

}

Si quiere asegurarte que el archivo de configuración del servidor DHCP (/etc/dhcp/dhcpd.conf) está correctamente configurado y sin errores de sintaxis puedes verificar la sintaxis del archivo con el siguiente comando:

sudo dhcpd -t

Configuración de varias subredes

El Objetivo ahora es configurar el servidor DHCP para manejar múltiples subredes, útil en redes grandes con diferentes segmentos, para ello seguiremos los mismos pasos que antes pero modificaremos el archivo /etc/dhcp/dhcpd.conf

#Vamos a trabajar con la siguiente configuración:
IP server/DNS: 10.0.0.5
Máscara: 255.255.255.224

    Subred1 (La subred del servidor)
    IP red: 10.0.0.0/27
    Rango: 10.0.0.1 -- 10.0.0.30
    Broadcast: 10.0.0.31
    
    Subred2
    IP red: 10.0.0.32/27
    Rango: 10.0.0.33 -- 10.0.0.62
    Broadcast: 10.0.0.63
    
    Subred3
    IP red: 10.0.0.64/27
    Rango: 10.0.0.65 -- 10.0.0.94
    Broadcast: 10.0.0.95

En el archivo /etc/dhcp/dhcpd.conf, agrega configuraciones para varias subredes:

subnet 10.0.0.32 netmask 255.255.255.224 {
  range 10.0.0.33 10.0.0.62;
  option routers 10.10.0.34;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

subnet 10.0.0.64 netmask 255.255.255.224 {
  range 10.0.0.65 10.0.0.94;
  option routers 10.10.0.65;
  option domain-name-servers 1.1.1.1;
}

Ahora debemos configurar un DHCP Relay para reenviar solicitudes DHCP entre subredes cuando el servidor DHCP no está en la misma red que los clientes.

  1. Instala el servicio de retransmisión:

    sudo apt install isc-dhcp-relay
  2. Configura el archivo /etc/default/isc-dhcp-relay con la dirección del servidor DHCP y las interfaces que se usarán para reenviar las solicitudes:

    SERVERS="10.0.0.5"
    INTERFACES="enp0s3"
    OPTIONS=""
  3. Reinicia el servicio y verifica que las solicitudes DHCP se reenvíen al servidor apropiado desde otra subred.

Vamos a mirar que en caso de fallo de servidor, tener un entorno de alta disponibilidad para DHCP, con dos servidores que puedan operar en modo activo/pasivo.

Primero vayamos a simular la caída del servidor DHCP y luego recuperarlo sin interrumpir a los clientes que ya han recibido una IP:

  1. Apaga el servidor DHCP temporalmente:

    sudo systemctl stop isc-dhcp-server
  2. Monitoreamos el comportamiento de los clientes que intentan renovar su IP durante el tiempo de arrendamiento.

  3. Reactiva el servidor y verifica que los clientes puedan renovar correctamente sus direcciones IP:

    sudo systemctl start isc-dhcp-server
  4. Ahora sí, configuremos el archivo /etc/dhcp/dhcpd.conf en ambos servidores para establecer el modo failover, este código lo pondremos en nuestro servidor primario:

    failover peer "dhcp-failover" {
      primary;  # en el servidor primario
      address 10.0.0.5;
      port 519;
      peer address 10.0.0.50; #Ip del servidor secundario
      peer port 519;
      max-response-delay 60;
      max-unacked-updates 10;
      load balance max seconds 3;
      mclt 3600;
      split 128;
    }
  5. Configura el segundo servidor como secundario con las configuraciones que hemos visto en anteriores puntos.

  6. Verifica que ambos servidores puedan compartir el estado de los clientes DHCP simulando el entorno de nuevo.

Revisar servicios de red

Reinicia el servicio DHCP para aplicar los cambios:

sudo systemctl restart isc-dhcp-server
sudo service isc-dhcp-server restart

Para asegurarte de que el servicio DHCP se inicie automáticamente al arrancar, ejecuta el siguiente comando:

sudo systemctl enable isc-dhcp-server

Además, podemos ver en el servidor si el cliente tiene una dirección DHCP. Esto lo podemos ver en en el archivo de "arrendamientos":

cat /var/lib/dhcp/dhcpd.leases

AnteriorDHCPSiguienteDHCP & DNS script

Última actualización hace 7 meses

Configuración de un servidor DHCP failover (alta disponibilidad)

🚧
🗃️
Page cover image