R\303\251seau/DHCP.md
... ...
@@ -1,200 +1,51 @@
1 1
Dynamic Host Configuration Protocol (DHCP)
2 2
======================================
3 3
4
-Version du 25/01/2017.
5
-
6
-Cette page est un guide sur comment configurer un serveur DHCP, en particulier celui de Brest.
7
-C'est la deuxième étape du guide [Monter le service DHCP](/Guides/Monter-le-service-DHCP) du ResEL
8
-* [Installer un serveur DHCP](/Guides/DHCP/Installer-un-serveur-DHCP)
9
-* Configurer le DHCP
10
-* [Configurer un DHCP de secours](/Guides/DHCP/Configurer-un-DHCP-de-secours)
11
-
12
-Vous pouvez [Voir la configuration DHCP de Rennes](Rennes/Réseau/DHCP) pour avoir un guide expliquant les différences de configuration à Rennes.
13
-
14
-
15
-## Généralités
16
-
17
-Le serveur DHCP est hébergé sur la VM [saymyname](/Serveurs/saymyname). La VM [braum](/Serveurs/braum) avec le serveur DHCP de secours a une configuration similaire.
18
-
19
-Le serveur DHCP utilisé est `isc-dhcp`, c'est à dire le package `isc-dhcp-server`.
20
-
21
-
22
-## Utilisation
23
-
24
-Pour relancer le service lors d'une modification (mise à jour du ldap ou de la configuration dhcp) le plus simple est d'utiliser le lien qui se trouve sur le [site admin](https://admin.resel.fr)
25
-Ce lien lance l'exécution du script de reload (voir Configuration).
26
-
27
-## Configuration
28
--> La configuration se trouve : https://git.resel.fr/confs/dhcp-brest
29
-
30
-Le fichier de conf dhcpd.conf est généré en créant un fichier contenant d'abord le fichier `/etc/dhcp/header.conf` qui contient la conf préliminaire du dhcp. Ensuite, le script python `ldap2dhcp.py` (voir plus bas) ajoute la description statique de chacun des machines inscrites, son ip et son adresse mac à la conf. La conf finale est inscrite dans le fichier `/etc/dhcp/dhcp.conf`.
31
-
32
-### Configuration préliminaire du DHCP
33
-
34
-Détaillons le fichier `header.conf` (situé dans `/etc/dhcp/`) que vous pouvez trouver dans sa dernière version à : https://git.resel.fr/confs/dhcp-brest/blob/master/header.conf
35
-
36
-Avant d'ajouter toutes les IP des machines au DHCP, il faut configurer les options par défaut :
37
-```
38
-authoritative;
39
-one-lease-per-client on;
40
-always-broadcast on;
41
-ping-check on;
42
-log-facility local7;
43
-
44
-option netbios-node-type 2;
45
-option netbios-name-servers 172.22.199.1;
46
-option netbios-dd-server 172.22.199.1;
47
-option ntp-servers 172.22.199.1;
48
-option pop-server 172.22.42.105;
49
-option nntp-server 172.22.42.105;
50
-option www-server 172.22.42.80;
51
-option irc-server 172.22.199.31;
52
-next-server 172.22.42.3;
53
-```
54
-À noter que le `authoritative;` permet de dire au DHCP de refuser toute demande illégale d'un client DHCP.
55
-De plus, il n'y a pas d'espace entre  `local` et `7;` dans la ligne `log-facility local7;` contrairement à ce qu'il est possible de voir sur internet. On a testé et de mémoire c'est mieux.
56
-
57
-Ensuite, on configure le PXE :
58
-
59
-```
60
-filename "pxelinux.0";
61
-
62
-if substring (option vendor-class-identifier, 0, 17) = "NetBSD:i386:libsa"
63
-{
64
- if filename = "boot.cfg"
65
- {
66
- filename "tftp:bsd/netbsd-boot.cfg";
67
- } else if filename = "netbsd" {
68
- filename "tftp:bsd/netbsd-INSTALL.gz";
69
- }
70
-}
71
-```
72
-
73
-Voila la partie intéressante :
74
-
75
-```
76
-option domain-name "resel.fr";
77
-
78
-shared-network "resel-995"
79
-{
80
- # Subnet inscription
81
- subnet 172.22.224.0 netmask 255.255.254.0 {
82
- authoritative;
83
- range 172.22.224.3 172.22.225.250;
84
- default-lease-time 120;
85
- max-lease-time 300;
86
- option domain-name-servers 172.22.225.253;
87
- option routers 172.22.225.254;
88
- option broadcast-address 172.22.225.255;
89
- option subnet-mask 255.255.254.0;
90
- }
91
-}
92
-
93
-shared-network "resel-999" {
94
-
95
- # Subnet inscription-999 (inscription over ethernet)
96
- subnet 172.22.226.0 netmask 255.255.254.0 {
97
- authoritative;
98
- range 172.22.226.3 172.22.227.250;
99
- default-lease-time 120;
100
- max-lease-time 300;
101
- option domain-name-servers 172.22.227.253;
102
- option routers 172.22.227.254;
103
- option broadcast-address 172.22.227.255;
104
- option subnet-mask 255.255.254.0;
105
- }
106
- # Subnet utilisateurs
107
- subnet 172.22.192.0 netmask 255.255.224.0 {
108
- option domain-name-servers 172.22.199.229, 172.22.42.1, 172.23.42.229;
109
- option routers 172.22.199.1;
110
- option subnet-mask 255.255.224.0;
111
- #range 172.22.200.000 172.22.223.254;
112
- }
113
-
114
- group {
115
- use-host-decl-names off;
116
- option domain-name-servers 172.22.199.229, 172.22.199.11;
117
- option routers 172.22.199.1;
118
- option broadcast-address 172.22.223.255;
119
- default-lease-time 86400;
120
- min-lease-time 86400;
121
-```
122
-Vous pouvez noter ici l'absence de la bracket `}` finale pour permettre au reloader de concaténer la description statiques des machines inscrites.
123
-
124
-### Configuration du daemon
125
-
126
-Par ailleurs, le fichier `/etc/default/isc-dhcp-server` contient la configuration du lancement du daemon.
127
-La ligne intéressante est celle précisant les interfaces :
128
-
129
-```
130
-DHCPDARGS = "eth1 eth3"
131
-```
132
-L'interface `eth1` permet sert pour le VLAN utilisateur et l'interface eth3 pour le VLAN inscription. TODO : vérifier cette info.
133
-A noter que la ligne précédente remplace la ligne suivante dans la configuration par défaut de `isc-dhcp-server` :
134
-```
135
-INTERFACES=""
136
-```
137
-
138
-#### Génération
139
-Pour la première mise en route du service, le plus simple est de lancer le script `ldap2dhcp.py`. Voir l'article suivant pour plus d'info.
140
-
141
-#### Redémarrage du service
142
-##### Avec le script (méthode conseillée)
143
-Pour appliquer la mise à jour du LDAP, ou de la configuration DHCP, il faut redémarrer le service isc-dhcp-server.
144
-Pour redémarrer le DHCP, de préférence il faut utiliser l'interface admin : section relance DHCP et DNS cliquer sur le bouton DHCP.
145
-Cela va lancer une connexion ssh sur [saymyname](Serveurs/saymyname) avec le compte reloader dont la seule action va être de relancer le DHCP.
146
-
147
-Pour regénérer le DHCP, le script `/srv/reloader/scripts/dhcp/ldap2dhcp.py` va questionner le ldap et récupérer toutes les ips et macs de machines inscrites,
148
-puis il va générer un host dans la conf du dhcp suivant la syntaxe
149
-
150
-```
151
-host <son nom>
152
-{
153
- fixed-address <son ip>;
154
- hardware ethernet <sa mac>;
155
- option host-name <son hostname>;
156
-}
157
-```
158
-Le script écrase le contenu de `dhcp.conf` à chaque exécution. Il faut donc faire attention à ne pas casser la configuration préliminaire `header.conf` pour garantir la relance du service dhcp.
159
-
160
-##### Rédemarrage manuel (pour ceux qui aime tout casser)
161
-Pour effectuer un redémarrage manuel, il est possible de stopper et relancer le service à partir de l'invite de commande. Cette méthode ne prend pas en compte les modifications du LDAP, ni de la conf DHC. Je vous conseille vivement d'utiliser le script de reload. Néanmoins, les commandes à lancer sont :
162
-```
163
-systemctl stop isc-dhcp-server
164
-```
165
-Puis
166
-```
167
-systemctl start isc-dhcp-server
168
-```
169
-
170
-### Vérifier que les scripts sont bien lancés et fonctionnent
171
-Deux commandes permettent de vérifier que le service DHCP s'est lancé sans erreurs :
172
-```
173
-tails -f /var/log/syslog
174
-```
175
-et
176
-```
177
-journalctl -xn 100
178
-```
179
-A noter que le `100` sert à faire apparaitre 100 lignes du journal (au lieu des 10 par défaut).
180
-
181
-## Ressources utiles
182
-### Git ResEl
183
-* https://git.resel.fr/confs/dhcp-brest
184
-* https://git.resel.fr/confs/dhcp-rennes
185
-* https://git.resel.fr/resel/scripts/tree/master/dhcp pour le script `ldap2dhcp.py`.
186
-
187
-### Externes
188
-* https://wiki.debian.org/DHCP_Server
189
-
190
-
191
-## Articles liés
192
-* [Saymyname](/Serveurs/saymyname)
193
-* [Braum](/Serveurs/braum)
194
-* [Installer un serveur DHCP](/Guides/DHCP/Installer-un-serveur-DHCP) (Article précédent)
195
-* [Configurer un DHCP de secours](/Guides/DHCP/Configurer-un-DHCP-de-secours) (Article suivant)
196
-
197
-## TODO (pour le rédacteur)
198
-* Ajouter quelques ressources de plus
199
-* Vérifier la correspondance interfes-VLAN affirmée dans #configuration-du-daemon
200
-* Déplacer cette page vers [Configurer un serveur DHCP](/Guides/DHCP/Configurer-un-serveur-DHCP)
... ...
\ No newline at end of file
0
+# Description
1
+> Dynamic Host Configuration Protocol (DHCP, protocole de configuration dynamique des hôtes) est un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres IP d’une station, notamment en lui **affectant automatiquement une *adresse IP* et un masque de sous-réseau**.
2
+[Wikipédia](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
3
+
4
+Cette configuration automatique est assurée par la communication entre la station et un serveur, appelé serveur DHCP, afin d'échanger toutes les informations nécessaires.
5
+
6
+Lors de la connexion d'une machine utilisateur sur le réseau, le réseau s'authentifie auprès du radius, puis demande une adresse IP auprès du serveur DHCP. Celui-ci lui attribue une adresse IP. Une fois l'adresse obtenue, la machine peut envoyer des requêtes sur le réseau local, voire vers internet le cas échéant.
7
+
8
+## Approfondissement sur le processus d'attribution d'adresse IP
9
+
10
+La station et le serveur DHCP échangent principalement 4 types de messages : DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK.
11
+- DHCPDISCOVER - Pour une machines configurée en attribution d'ip dynamique, celle-ci broadcaste une le fait qu'elle recherche une adresse IP. Dans ce message, la machine indique notament son adresse MAC.
12
+- DHCPOFFER - Le DHCP regarde sa configuration, les leases (liste des adresses déjà attribuées par le serveur DHCP) et les informations du DHCPDISCOVER. Il détermine une adresse IP et broadcaste sa proposition d'adresse pour l'adresse mac de la machine demandeuse.
13
+- DHCPREQUEST - La machine demande l'attribution d'une adresse IP. Cela vient soit après une DHCPOFFER, soit directement la machine est configurée en attribution d'adresse IP statique.
14
+- DHCPACK - Le serveur DHCP valide la demande d'atribution d'adresse IP, et ajoute la machine considérée à sa liste de leases
15
+
16
+# Infrastructure
17
+
18
+3 machines assurent le bon fonctionnement du service DHCP : Saymyname et Braum sur Brest et Loupiac sur Rennes.
19
+Pour assurer le service, chaque serveur contient un fichier de configuration et une liste de leases.
20
+
21
+## Failover
22
+Il y a bien deux machines à Brest pour assurer la redondance du service.
23
+Saymyname occupe le rôle de DHCP primaire, depuis le pool d'hyperviseur principal au i11.
24
+Braum occupe le rôle de DHCP secondaire depuis l'hyperviseur de secours, Kyubey.
25
+
26
+En fonctionnement normal, les deux serveurs se partagent les requêtes DHCP. C'est à dire qu'ils répondent chacun aux requêtes de certaines adresses MAC (et pas les mêmes).
27
+L'important quand on a deux serveurs DHCP, c'est qu'ils répondent exactement la même chose. C'est pourquoi il faut que la partie déclaration des réseaux dans le fichier de configuration doit être rigoureusement identique.
28
+Pour les IP non fixées dans la configuration (rien à voir avec le principe d'adresse IP dynamique), les deux serveurs en failover communiquent régulièrement pour être synchronisés. Pour les adresses IP fixées dans la configuration (ie celles associées à des adresses MAC dans la liste de *hosts*), le failover n'a pas d'utilité car les deux serveurs répondent de la même manière.
29
+
30
+En fonctionnement anormal, ie quand l'un des deux serveurs tombe, le serveur toujours en marche prend le relais pour gérer toutes les requêtes DHCP envoyées sur le réseau.
31
+
32
+## Stack de tests
33
+Il est conseillé (*obligatoire*) de tester une nouvelle configuration DHCP sur la stack de test avant de la déployer. Pour cela, il y a actuellement 3 machines virtuelles sur kyube :
34
+- Bao le dhcp primaire
35
+- Oba le dhcp secondaire
36
+- Altair la machine de test
37
+
38
+
39
+# Utilisation
40
+
41
+# Configuration
42
+
43
+# Liens utiles
44
+
45
+# TODO
46
+- Finir de compléter les parties
47
+- Migrer les infos pour l'installation dans le repo dhcp-brest
... ...
\ No newline at end of file