DHCP

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda
De moment, aquest manual sols és per configurar el DHCP en Ubuntu i Alpine

Isc DHCP

De la web oficial:

All IP devices need addresses, and ISC DHCP is the classic way to provide them. ISC DHCP is open source software that implements the Dynamic Host Configuration Protocol for connection to an IP network. It offers a complete solution for implementing DHCP servers, relay agents, and clients for small local networks to large enterprises. ISC DHCP solution supports both IPv4 and IPv6, and is suitable for use in high-volume and high-reliability applications. DHCP is available for free download under the terms of the ISC License, a BSD style license. (nb ISC DHCP will move to the MPL 2.0 license beginning with ISC DHCP 4.4.0)

ISC is developing a new DHCP server, Kea, which we intend to eventually replace ISC DHCP in most server implementations. We recommend that new implementers considering using Kea, and implement ISC DHCP only if Kea does not meet their needs. The Kea distribution does not currently include either a client or a relay.

En ubuntu, Debian i derivades es considera el servidor estàndard per a DHCP.

Preparació

El primer que cal fer és instal·lar el servidor:

 $ sudo apt install isc-dhcp-server

Una vegada instal·lat, es pot configurar la targeta per la que donarà direccions IP. Aquesta ha de tindre una direcció estàtica.

Per a que done servei DHCP per aquesta targeta, cal que estiga donada d'alta en el fitxer /etc/default/isc-dhcp-server com a interficie que té eixida de servici DHCP.

Per reiniciar el servei o conprovar si funciona correctament, es pot fer de varies maneres:

 $ sudo service isc-dhcp-server [restart,start,stop,status]
 $ sudo systemctl restart isc-dhcp-server.service

Per detectar problemes de configuració o monitoritzar es pot utilitzar algun d'aquests comandaments:

 $ journalctl -u isc-dhcp-server -b -e
 $ journalctl -u isc-dhcp-server -b -f
 $ dhcpdump -i <nom del nic>

Configuració

Abans de res, cal anar a /etc/default/isc-dhcp-server per indicar quines són les targetes de xarxa per les que dona servei DHCP.


El fitxer principal és /etc/dhcp/dhcpd.conf. Ací tenim una configuració bàsica:

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
} 

Anem a repassar les diferents opcions que es veuen en aquest exemple:

  • default-lease-time: Aquesta opció indica el temps que el servidor DHCP oferirà als clients per a que tornen a preguntar la IP. És el temps de concessió.
  • max-lease-time: Els clients poden mantindre una IP més temps del recomanat en l'opció anterior, però mai passar-se d'aquest màxim.
  • option subnet-mask: Aquesta opció global indica la màscara que donarà als clients. No obstant es pot ignorar si és indicada en una subxarxa.
  • option broadcast-address: La direcció de broadcast per a tots els clients.
  • option routers: La porta d'enllaç per defecte dels clients. És l'equivalent a gateway en /etc/network/interfaces
  • option domain-name-servers: Llista de DNS que tindran els clients.
  • option domain-name: El nom de domini assignat a la xarxa que està donant servei.
  • subnet: Declaració d'una subnet en al que indica un rang d'IPs (range) i moltes altres possibles opcions per als clients que es configuren dins d'aquesta subnet.

Aquestes serien les opcions bàsiques, però hi ha més. Anem a observar un exemple un poc més avançat:

host

 
ddns-update-style none;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {

        option routers                  192.168.1.1;
        option subnet-mask              255.255.255.0;
        option broadcast-address        192.168.1.255;
        option domain-name-servers      194.168.4.100;
        option ntp-servers              192.168.1.1;
        option netbios-name-servers     192.168.1.1;
        option netbios-node-type 2;
        default-lease-time 86400;
        max-lease-time 86400;

        host bla1 {
                hardware ethernet DD:GH:DF:E5:F7:D7;
                fixed-address 192.168.1.2;
        }
        host bla2 {
                hardware ethernet 00:JJ:YU:38:AC:45;
                fixed-address 192.168.1.20;
        }
}

subnet  10.152.187.0 netmask 255.255.255.0 {

        option routers                  10.152.187.1;
        option subnet-mask              255.255.255.0;
        option broadcast-address        10.152.187.255;
        option domain-name-servers      194.168.4.100;
        option ntp-servers              10.152.187.1;
        option netbios-name-servers     10.152.187.1;
        option netbios-node-type 2;

        default-lease-time 86400;
        max-lease-time 86400;

        host bla3 {
                hardware ethernet 00:KK:HD:66:55:9B;
                fixed-address 10.152.187.2;
        }
}


Com podem veure, es poden configurar moltes subnets amb IPs distintes. En aquest cas, pot ser que el servidor tinga 2 targetes de xarxa, una amb la configuració de la xarxa 192.168.1.0/24 i l'altra amb 10.152.187.0/24.

Amés, apareixen opcions noves:

  • option ntp-servers: Indica el servidor de Temps ntp
  • option netbios-name-servers: El servidor de noms de netbios en cas de servir a clients Windows o Samba.
  • option netbios-node-type: El tipus de servidor netbios.
  • host: Es pot donar configuracions específiques a una MAC en concret, com en l'exemple, una IP fixa.

pools

Un altre exemple:

 
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 8.8.8.8, 8.8.4.4;

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

log-facility local7;

host client1 { 
       hardware ethernet 00:16:3e:6f:13:49;
       fixed-address 192.168.200.80;
 }

subnet 192.168.200.0 netmask 255.255.255.0 {
  #range 192.168.200.2 192.168.200.50;
  option routers 192.168.200.1;
  default-lease-time 6000;
  max-lease-time 72000;
  option domain-name-servers 172.27.111.6;   

  pool {
	range 192.168.200.2 192.168.200.50;
	allow known-clients;

  }
  pool {
	range 192.168.200.51 192.168.200.75;
	allow unknown-clients;
	default-lease-time 600;
	max-lease-time 7200;
     	option domain-name-servers 8.8.8.8;   
  }

}
subnet 10.10.0.0 netmask 255.255.0.0 {
  range 10.10.1.0 10.10.4.231;
  option routers 10.10.0.100;
}

En aquest utilitza Pool per a donar una configuració diferent als clients desconeguts.

Solució del simulacre:

ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 8.8.8.8, 8.8.4.4;

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

log-facility local7;

host client7 {
hardware ethernet 00:16:3e:91:56:aa;
}

subnet 10.0.0.0 netmask 255.255.255.0 {
  option routers 10.0.0.1;
  pool { range 10.0.0.101 10.0.0.150; allow known-clients; default-lease-time 60000; option domain-name-servers 172.27.111.6; }
  pool { range 10.0.0.5 10.0.0.100; allow unknown-clients;  }
}

host client3 {
hardware ethernet 00:16:3e:da:15:1;
}

subnet 10.0.1.0 netmask 255.255.255.0 {
  option routers 10.0.1.2;
  pool { range 10.0.1.101 10.0.1.150; allow known-clients; default-lease-time 60000; option domain-name-servers 172.27.111.6; }
  pool { range 10.0.1.5 10.0.1.100; allow unknown-clients;  }
}

host client1 {
hardware ethernet 00:16:3e:bc:df:07;
}
subnet 10.0.2.0 netmask 255.255.255.0 {
  option routers 10.0.2.2;
  pool {range 10.0.2.101 10.0.2.150; allow known-clients; default-lease-time 60000; option domain-name-servers 172.27.111.6; }
  pool {range 10.0.2.5 10.0.2.100; allow unknown-clients;  }
}

shared-network

En el cas de que en un mateix domini de col·lisió (un mateix switch) tinguen que conviure varies xarxes IP distintes, el servidor DHCP ha de saber-ho i cal fer un shared-network, per exemple:

shared-network switch1 {
 subnet 192.168.1.0 netmask 255.255.255.0 { # Subxarxa del clients 1
  range 192.168.1.100 192.168.1.150; # Rang de IPs
  option routers 192.168.1.1;  # IP del firewall
 }
 subnet 192.168.11.0 netmask 255.255.255.0 { # Subxarxa dels clients 11
  range 192.168.11.100 192.168.11.150; # Rang de IPs
 }
}

El nom de la xarxa compartida eixirà en els missatges de log.

group

Pot ser que alguns clients de diferents xarxes o pools tinguen característiques comuns. Es poden declarar grups que, a una serie de hosts li aplique unes característiques determinades.

group {
   option domain-name "example.org";
   option domain-name-servers 1.1.1.1;
        host client1 {
                hardware ethernet 00:16:3e:a5:42:5d;
                fixed-address 192.168.2.200;

        }
        host client20 {
                hardware ethernet 00:16:3a:10:42:5d;
        }
}

Enllaços

Manual de DHCP de Ubuntu Manual Oficial DHCP en Alpine Manual en castellà

acf-dhcp

En Alpine recomanen instal·lar aquest.

apk add acf-dhcp

La configuració és igual a la del ISC

rc-service dhcpd start 
rc-update add dhcpd

Per al relay:

apk add dhcrelay

La configuració és en /etc/conf.d/dhcrelay Sols cal informar de les targetes on dona servei i de la IP del servidor DHCP.

rc-service dhcrelay start 
rc-update add dhcrelay