{{tag>netadmin sysadmin dhcp linux ubuntu debian}} ====== DHCP: Configuration du serveur ====== Notes d'installation/configuration d'un serveur DHCP sous debian/ubuntu. ===== Installation ===== Installer le serveur DHCP via apt sudo apt-get install isc-dhcp-server ===== Paramétrage du serveur ===== Dé-commenter la directive **authoritative** et modifier les temps de prêt: default-lease-time 86400; max-lease-time 604800; Déclarer au moins un réseau. Dans l'exemple ci-dessous on propose quelques options usuelles: subnet 192.168.0.0 netmask 255.255.255.0 { option domain-name "test.lan"; option domain-name-servers 192.168.0.53, 192.168.0.153; option routers 192.168.0.254; option ntp-servers ntp.test.lan; } La portée de la directive **option** diffère selon le bloc de déclaration. Les options déclarées dans un réseau sont spécifiques au réseau, les options déclarées hors de tout bloc sont globales. ===== Sécuriser le service ===== Désactiver les fonctionnalités non utilisées: # Pas de mise a jour d'informations DNS en provenance des clients ddns-update-style none; # Prévention des attaques DoS, ne prends pas en compte les requetes DHCPDECLINE deny declines; # Les postes dont l'adresse MAC n'a pas été déclaréen'auront pas d'adresse automatiquement # attribuée. deny unknown-clients; # Désactivation du support de BOOTP deny bootp; ===== Spécifier des adresses fixes ===== Il est possible d'associer une adresse à un poste particulier. Il recevra du serveur DHCP systématiquement cette même adresse. host pc-du-salon { hardware ethernet 00:21:24:fb:33:a7; fixed-address 192.168.0.10; } Pour ne fournir des IPs qu'aux postes préalablement déclarées, il existe la directive suivante: deny unknown-clients; De cette manière le serveur DHCP ne fournira des adresses qu'aux postes déclarés. ===== Tester la configuration ===== Il est possible de vérifier la syntaxe du fichier de configuration: sudo /usr/sbin/dhcpd -t -cf /path/to/file.conf ===== Les logs ===== Le serveur DHCP émet ces message en direction de syslog (rsyslog pour Ubuntu) avec la catégorie local7 via la directive: log-facility local7; Par défaut les message sont enregistrés dans /var/log/syslog. pour enregistrer les messages émis par le serveur DHCP dans un fichier de configuration dédié, il faut légèrement modifier la configuration de rsyslog. Editer le fichier **/etc/rsyslog.d/50-default.conf** La ligne originale: *.*;auth,authpriv.none -/var/log/syslog Dans la ligne originale le sélecteur capture tous les messages provenant de toutes catégories et de toutes priorités sauf les catégories auth et authpriv. Il les enregistre dans le fichier /var/log/syslog. Pour que les messages émis par le serveur DHCP ne soient pas enregistrés dans ce fichier on exclue également local7: La ligne une fois modifiée: *.*;auth,authpriv,local7.none -/var/log/syslog Créer le fichier **/etc/rsyslog.d/60-dhcpd.conf** avec le contenu suivant: local7.* /var/log/dhcpd.log Créer le fichier de log, définir les droits et redémarrer rsyslog: touch /var/log/dhcpd.log chown syslog:adm /var/log/dhcpd.log service rsyslog restart Le fichier **/var/lib/dhcp/dhcpd.leases** est mis à jour par le serveur lors des attributions dynamiques dans un pool d'adresses. Ce fichier peut rester vide si la configuration du serveur ne contient que des hôtes configurés en adresse fixe. ===== Spécifier les interfaces d'écoute ===== Il est possible de spécifier sur quelle(s) interface le serveur DHCP écoute et répond au requêtes clientes via le fichier **/etc/default/isc-dhcp-server**. Par défaut le serveur écoute sur toutes les interfaces. # Par défaut le serveur écoute sur toutes les interfaces #INTERFACES="" # La directive précédente est commentée et remplacée par celle ci-dessous imposant d’écouter # seulement sur l'interface eth0 INTERFACES="eth0" ===== Troubleshooting ===== Par défaut le serveur DHCP écoute sur le port **UDP 67** l'argument **-p** ou la directive **local-port** permettent de modifier la valeur par défaut. Voir le wiki pour vérifier le port d'écoute du serveur. Le client reçoit les réponses du serveur sur le port **UDP 68**. Ces ports sont nommées **bootps** et **bootpc** dans le fichier **/etc/services**. Le serveur DHCP refuse de se lancer si l'interface n'a pas une adresse correspondant au réseau déclaré dans le fichier de configuration. La commande **dhcpdump** permet d'afficher sur la console les paquets DHCP: dhcpdump -i eth0 ===== Références ===== * http://www.cyberciti.biz/faq/howto-ubuntu-debian-squeeze-dhcp-server-setup-tutorial/ * http://codeverge.com/novell.sles.configure/dhcpd.leases-empty/1960577 * https://doc.ubuntu-fr.org/dhcp3-server * http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch08_:_Configuring_the_DHCP_Server * https://www.ossramblings.com/using-multiple-vlan-with-dhcp-ubuntu * https://askubuntu.com/questions/536531/dhcp-server-wont-start-gives-not-configured-to-listen-on-any-interfaces-eve * https://doc.ubuntu-fr.org/isc-dhcp-server