informatique:logiciels:dhcpd
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
informatique:logiciels:dhcpd [2016/10/07 08:00] – créée pteu | informatique:logiciels:dhcpd [2019/12/02 09:23] (current) – [Boot BIOS vs UEFI] pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Installation | + | |
+ | =====Installation===== | ||
<code bash> | <code bash> | ||
aptitude install isc-dhcp-server | aptitude install isc-dhcp-server | ||
Line 6: | Line 8: | ||
Fichiers : | Fichiers : | ||
* ''/ | * ''/ | ||
- | * ''/ | + | * ''/ |
* ''/ | * ''/ | ||
- | Exemple de configuration simple (''/ | + | |
+ | =====Configuration simple===== | ||
+ | |||
+ | Exemple de configuration simple (''/ | ||
<code bash> | <code bash> | ||
# option globales s' | # option globales s' | ||
Line 19: | Line 24: | ||
max-lease-time 86400; | max-lease-time 86400; | ||
log-facility local7; | log-facility local7; | ||
- | | + | |
+ | # eth0 | ||
subnet 10.0.0.0 netmask 255.255.255.0 { | subnet 10.0.0.0 netmask 255.255.255.0 { | ||
- | range 10.0.0.1 10.0.0.10; | + | range 10.0.0.1 10.0.0.10; |
+ | range 10.0.0.20 10.0.0.29; | ||
| | ||
} | } | ||
- | # ce réseau est découper | + | # eth1 ; ce réseau est découpé |
subnet 10.1.0.0 netmask 255.255.255.0 { | subnet 10.1.0.0 netmask 255.255.255.0 { | ||
# pool default | # pool default | ||
pool { | pool { | ||
range 10.1.0.1 10.1.0.100; | range 10.1.0.1 10.1.0.100; | ||
+ | # on interdit les PC dont l' | ||
+ | deny unknown-clients; | ||
} | } | ||
+ | |||
# pool masterisation de PCs | # pool masterisation de PCs | ||
pool { | pool { | ||
range dynamic-bootp 10.1.0.101 10.1.0.150; | range dynamic-bootp 10.1.0.101 10.1.0.150; | ||
+ | allow unknown-clients; | ||
+ | max-lease-time 7200; # 2h | ||
} | } | ||
+ | |||
| | ||
+ | | ||
+ | | ||
| | ||
} | } | ||
+ | # eth2 | ||
subnet 10.2.0.0 netmask 255.255.255.0 { | subnet 10.2.0.0 netmask 255.255.255.0 { | ||
option domain-name " | option domain-name " | ||
Line 46: | Line 62: | ||
</ | </ | ||
- | Pour réserver une IP à un PC, on l' | + | Pour réserver une IP à un PC (on parle d' |
<code bash> | <code bash> | ||
# liste des réservations d'IPs | # liste des réservations d'IPs | ||
host pc-patron { | host pc-patron { | ||
| | ||
- | | + | |
+ | | ||
} | } | ||
- | host pc-grouillot | + | # on utilise un group pour mutualiser les options |
- | | + | group { |
- | | + | # permet d' |
+ | # ce qui nous évite de les préciser en double pour chaque host ! | ||
+ | | ||
+ | |||
+ | host pc-grouillot1 | ||
+ | host pc-grouillot2 { hardware ethernet 00: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Pour les clients bootp, il faut en plus spécifier au moins le fichier de boot : | ||
+ | <code bash> | ||
+ | host pc-techos { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
} | } | ||
</ | </ | ||
Line 64: | Line 96: | ||
include "/ | include "/ | ||
</ | </ | ||
+ | |||
+ | |||
+ | =====Diverses options===== | ||
+ | |||
+ | |||
+ | =====DHCP relay===== | ||
+ | |||
+ | Pour desservir des réseaux qui ne sont pas directement connectés au serveur DHCP, on utilisera le DHCP Relay. Cela fonctionne ainsi : | ||
+ | * quelque part un client broadcaste un DHCPDISCOVER | ||
+ | * une bonne âme (un routeur par exemple) branchée sur ce réseau, est configurée pour relayer cette requête vers notre serveur : c'est un "DHCP relay", | ||
+ | * le serveur DHCP reçoit le DHCPDISCOVER " | ||
+ | |||
+ | Exemple de cas pratique : | ||
+ | < | ||
+ | client < | ||
+ | </ | ||
+ | Le routeur devra être configuré pour relayer les requêtes DHCP reçues sur le réseau 10.0.0.0/24 à destination du serveur DHCP 192.168.0.2. | ||
+ | |||
+ | Exemple de configuration du serveur DHCP : | ||
+ | <code bash> | ||
+ | [..] | ||
+ | # eth0 | ||
+ | # ici, le serveur n' | ||
+ | # qui ne sert que de transit pour recevoir les requêtes relayées | ||
+ | shared-network { | ||
+ | | ||
+ | } | ||
+ | | ||
+ | option subnet-mask 255.255.255.0; | ||
+ | option broadcast-address 10.0.0.255; | ||
+ | option routers 10.0.0.1; | ||
+ | option domain-name " | ||
+ | range 10.0.0.2 10.0.0.100; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====DHCP Forticlient===== | ||
+ | |||
+ | Ce que je veux faire : | ||
+ | * un concentrateur VPN sur un firewall Fortigate | ||
+ | * des clients qui établisse des VPN IPSec " | ||
+ | * ces derniers reçoivent leurs IP en DHCP depuis le serveur DHCP centralisé | ||
+ | * seuls les clients connus = déclarés sur le serveur DHCP reçoivent leurs propres IPs (réservées = adressage DHCP statique) | ||
+ | |||
+ | Pour avoir passé un peu de temps à comprendre //pourquoi ça ne marche pas//, il faut savoir que le type de hardware envoyé dans la requête DHCP relayée n'est pas " | ||
+ | <code bash> | ||
+ | subnet forticlient [...] { | ||
+ | # interdire les clients inconnus | ||
+ | deny unknown-clients; | ||
+ | } | ||
+ | |||
+ | # pas bien : (vos clients seront traités comme " | ||
+ | # voir même "no free leases" | ||
+ | host toto { hardware ethernet 00: | ||
+ | # bien : | ||
+ | host toto { hardware unknown-31 00: | ||
+ | </ | ||
+ | |||
+ | Pour s' | ||
+ | |||
+ | |||
+ | =====Failover===== | ||
Exemple de configuration failover : | Exemple de configuration failover : | ||
Line 92: | Line 188: | ||
load balance max seconds 3; | load balance max seconds 3; | ||
} | } | ||
- | </ | ||
- | # pour chaque | + | |
+ | # Pour chaque | ||
+ | # et ajouter une référence au failover | ||
[..] | [..] | ||
pool { | pool { | ||
| | ||
+ | range 10.2.0.1 10.2.0.200; | ||
[..] | [..] | ||
} | } | ||
</ | </ | ||
+ | |||
+ | =====Boot BIOS vs UEFI===== | ||
+ | |||
+ | Pour prendre en compte le PXE avec des machines UEFI : on doit utiliser des fichiers différents en fonction de l' | ||
+ | <code bash> | ||
+ | # Definition of PXE-specific options | ||
+ | # Code 1: Multicast IP address of bootfile | ||
+ | # Code 2: UDP port that client should monitor for MTFTP responses | ||
+ | # Code 3: UDP port that MTFTP servers are using to listen for MTFTP requests | ||
+ | # Code 4: Number of secondes a client must listen for activity before trying | ||
+ | # to start a new MTFTP transfer | ||
+ | # Code 5: Number of secondes a client must listen before trying to restart | ||
+ | # a MTFTP transfer | ||
+ | option space PXE; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | option arch code 93 = unsigned integer 16; # RFC4578 | ||
+ | # | ||
+ | # [..] | ||
+ | class " | ||
+ | match if substring(option vendor-class-identifier, | ||
+ | | ||
+ | # 6 EFI IA32 | ||
+ | #< | ||
+ | if option arch = 00:06 { | ||
+ | filename " | ||
+ | # 7 EFI BC (EFI Byte Code) | ||
+ | } else if option arch = 00:07 { | ||
+ | filename " | ||
+ | # Défaut (cas des machines avec BIOS classiques) | ||
+ | } else { | ||
+ | filename " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ======Diagnostic===== | ||
+ | |||
+ | <code bash> | ||
+ | # tester le fichier de configuration par défaut (/ | ||
+ | dhcpd -t | ||
+ | |||
+ | # tester le fichier de configuration spécifié : | ||
+ | dhcpd -t -cf / | ||
+ | </ | ||
+ | |||
+ | ====Client désobéissant==== | ||
+ | |||
+ | Dans le cas d'une transaction comme celle-ci (vu dans le fichier de log du serveur DHCP) : | ||
+ | <code bash> | ||
+ | Feb 20 16:06:11 srv1 dhcpd: DHCPDISCOVER from 90: | ||
+ | Feb 20 16:06:11 srv1 dhcpd: DHCPOFFER on 10.40.2.173 to 90: | ||
+ | Feb 20 16:06:11 srv1 dhcpd: DHCPREQUEST for 10.40.22.67 (10.40.0.79) from 90: | ||
+ | Feb 20 16:06:11 srv1 dhcpd: DHCPNAK on 10.40.22.67 to 90: | ||
+ | Feb 20 16:06:14 srv1 dhcpd: DHCPACK to 10.40.22.67 (90: | ||
+ | </ | ||
+ | On voit que le client demande une IP, le serveur lui en propose une (10.40.2.173), | ||
+ | |||
+ | ====Client poli==== | ||
+ | |||
+ | Si un client choisi bien une offre mais fini par la décliner ('' | ||
+ | <code bash> | ||
+ | Oct 4 14:50:59 monserveur dhcpd: DHCPDECLINE of 10.40.0.12 from 10: | ||
+ | </ | ||
+ | .. cela peut être dû à une autre machine qui utilise déjà cette adresse sur le réseau. En effet, avant d' | ||
informatique/logiciels/dhcpd.1475827254.txt.gz · Last modified: 2016/10/07 08:00 by pteu