22
0
Fork 0
wiki/HowtoDHCP.md

121 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2016-12-29 11:25:39 +01:00
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
## Failover DHCP master/master
Ce mode permet à deux serveurs DHCP de fonctionner simultanément sur un même LAN.
Les leases dynamiques sont alors partagés entre les 2 serveurs et synchronisés via un échange réseau entre les serveurs. En cas de panne de l'un deux, l'autre prend alors à sa charge l'ensemble des leases.
Pour cela, il est nécessaire d'ajouter une section "failover" sur chacun des serveurs. Exemple :
Master :
~~~
failover peer "dhcp-failover" {
primary;
address 192.0.2.1;
peer address 192.0.2.2;
port 647;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
split 128;
mclt 1800;
}
~~~
Slave :
~~~
failover peer "dhcp-failover" {
secondary;
address 192.0.2.2;
peer address 192.0.2.1;
port 647;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
}
~~~
Il est également nécessaire d'englober la directive "range" et les sections "host" dans une section "pool", et l'on déclarera celle-ci en mode failover. Exemple :
~~~
subnet 192.0.2.0 netmask 255.255.0.0 {
option routers 192.2.0.254;
pool {
failover peer "dhcp-failover";
range 192.0.2.100 192.0.2.200;
host host1 {
hardware ethernet 08:00:1f:82:7a:72;
fixed-address 192.0.2.4
}
[...]
}
~~~
2021-09-30 12:21:08 +02:00
## Leases, adresses IP et adresses MAC
Les leases sont les distributions d'IP aux clients.
Le serveur DHCP les stocke dans `/var/db/dhcpd.leases`.
### Lister et compter les IP attribuées par DHCPD
~~~
awk -F" " '/lease/{print$2}' /var/db/dhcpd.leases | sort -V | uniq
awk -F" " '/lease/{print$2}' /var/db/dhcpd.leases | sort -V | uniq | wc -l
~~~
### Lister les adresses MAC par nombre de leases
~~~
grep hardware /var/db/dhcpd.leases | sort | uniq -c | sort -hr
~~~
Attention, le nombre de leases n'est pas égal au nombre d'IPs attribuées !
2022-04-14 11:24:12 +02:00
## Monitoring
Il est possible de monitorer l'utilisation des pool DHCP à l'aide d'un script, adapté selon l'outil de monitoring et l'OS hôte.
Le script indiquera le taux d'utilisation de chacun des pools configurés dans le serveur DHCP. Attention : les baux statiques ne sont pas pris en compte, seuls les baux dynamiques le sont. Les pools dynamiques ne doivent pas inclure les IPs attribuées par des baux statiques : si un bail statique a une IP comprise dans le pool dynamique, alors il ne sera pas compté dans le taux d'utilisation.
2022-04-14 11:24:12 +02:00
Le script change légèrement selon s'il doit tourner sous Debian ou OpenBSD :
* Sous Debian, la variable $CONFFILE sera généralement à `/etc/dhcp/dhcpd.conf` alors que sous OpenBSD, elle sera à `/etc/dhcpd.conf`.
* Sous Debian, la variable $LEASEFILE sera généralement à `/var/lib/dhcp/dhcpd.leases` alors que sous OpenBSD, elle sera à `/var/db/dhcpd.leases`.
* Sous Debian, on a un `push (@activeleases, $lease);` dans un `elsif ($line =~ /binding state active/) {`, alors que sous OpenBSD, le même push est dans un `elsif ($line !~ /abandoned/) {`.
### NRPE
Le script pour Debian est présent dans [ansible-roles](https://gitea.evolix.org/evolix/ansible-roles/src/branch/unstable/nagios-nrpe/files/plugins/check_dhcp_pool), celui pour OpenBSD est présent dans [EvoBSD](https://gitea.evolix.org/evolix/EvoBSD/src/branch/dev/roles/nagios-nrpe/files/plugins_bsd/check_dhcp_pool).
### Munin
Le script pour Debian est présent dans [ansible-roles](https://gitea.evolix.org/evolix/ansible-roles/src/branch/unstable/munin/files/plugins/dhcp_pool). Munin n'est généralement pas utilisé sous OpenBSD, et le script n'existe alors pas dans EvoBSD mais peut être adapté avec les indications ci-dessus au besoin.
Voir ensuite [HowtoMunin]() pour la configuration.
### Grafana
Le script pour OpenBSD est présent dans [EvoBSD](https://gitea.evolix.org/evolix/EvoBSD/src/branch/dev/roles/collectd/files/dhcp_pool.pl). Celui pour Debian n'existe pas encore dans ansible-roles mais peut être adaptée au besoin avec les indications ci-dessus.
2022-04-14 11:24:12 +02:00
Voir ensuite [HowtoCollectd](), [HowtoInfluxDB]() et [HowtoGrafana]() pour la configuration.
2021-09-30 11:23:36 +02:00
## FAQ
### Abandonned leases
2021-09-30 12:21:08 +02:00
Si le serveur DHCP n'arrive plus à attribuer d'adresses IP et log `no free leases on subnet`, il se peut que le liste des baux DHCP attribués par le serveur (`/var/db/dhcpd.leases`) soit plein d'IP `abandonned`.
Cela signifie que le serveur considère cette IP comme déjà utilisée et ne l'attribuera, pas à moins qu'il soit à court d'IP disponibles, auquel cas il revérifiera quand même que l'IP n'est pas toujours utilisée, ce qui pourrait tout de même empêcher son attribution.