Original in fr Eric SEIGNE
fr to en:John Perr
Eric travaille dans le monde des logiciels libres ou il développe,entre autres,des applications d'accès aux bases de données sur le web avec des outils comme PostGreSQL ,MySQL et PHP3.
Cet article explique comment configurer le plus facilement possible le dhcp sur un réseau
Les objectifs de la configuration décrite ici visent:
La première étape, consiste à créer un fichier de configuration dhcp "blanc"
qui accueille tous les clients du réseau.
Je me base sur le réseau de la slash party 2, pour laquelle j'ai essayé de
faire un serveur Linux correct.
<fichier dhcpd.conf> default-lease-time 86400; max-lease-time 604800; get-lease-hostnames true; option subnet-mask 255.255.255.0; option domain-name "slach2-100.party"; option domain-name-servers 192.168.12.1; option interface-mtu 1500; subnet 192.168.12.0 netmask 255.255.255.0 # default gateway option routers 192.168.12.1; option broadcast-address 192.168.12.255; range 192.168.12.50 192.168.12.200; </fichier> |
Maintenant que vous avez lancé votre serveur dhcp (dhcpd start ou autre
commande selon votre distrib), vous pouvez démarrer vos stations "clientes"
du réseau que vous avez configurés pour obtenir automatiquement une adresse IP.
Dès que vos clients vont demander une adresse IP au serveur dhcp, un bloc
comme celui ci sera ajouté au fichier dhcpd.leases:
<bloc exemple attribué à un client dhcp> lease 192.168.12.58 starts 2 1999/08/24 06:28:48; ends 3 1999/08/25 06:28:48; hardware ethernet 00:10:5a:2e:56:a7; uid 01:00:10:5a:2e:56:a7; client-hostname "KLUSTER"; </bloc> |
et c'est ainsi que lorsque tous vos clients ont obtenus une adresse ip, votre fichier dhcpd.leases ressemblera à cela:
<fichier dhcpd.leases> lease 192.168.12.58 starts 2 1999/08/24 06:28:48; ends 3 1999/08/25 06:28:48; hardware ethernet 00:10:5a:2e:56:a7; uid 01:00:10:5a:2e:56:a7; client-hostname "KLUSTER"; lease 192.168.12.53 starts 2 1999/08/24 05:42:22; ends 3 1999/08/25 05:42:22; hardware ethernet 00:80:ad:97:e1:76; uid 01:00:80:ad:97:e1:76; client-hostname "ceddz"; lease 192.168.12.54 starts 2 1999/08/24 03:07:26; ends 3 1999/08/25 03:07:26; hardware ethernet 00:80:ad:97:e1:7d; uid 01:00:80:ad:97:e1:7d; client-hostname "SDS"; lease 192.168.12.67 starts 2 1999/08/24 02:52:19; ends 3 1999/08/25 02:52:19; hardware ethernet 00:50:04:45:e1:65; uid 01:00:50:04:45:e1:65; client-hostname "HOMER"; lease 192.168.12.64 starts 2 1999/08/24 01:26:05; ends 3 1999/08/25 01:26:05; hardware ethernet 00:80:ad:97:e2:1c; uid 01:00:80:ad:97:e2:1c; client-hostname "chAwArmA"; lease 192.168.12.59 starts 2 1999/08/24 01:14:06; ends 3 1999/08/25 01:14:06; hardware ethernet 00:00:21:2c:30:e7; uid 01:00:00:21:2c:30:e7; client-hostname "WOOKIE"; </fichier> |
Ensuite, il faut convertir ce dhcp "ouvert" en un dhcp fixe plus "sécure". Votre fichier dhcpd.leases étant correctement créé, vous pouvez maintenant le convertir en un dhcp que je qualifie de "fixe".
Quelles sont les différences entre le dhcp "ouvert" et "fixe" ? Pour moi, un dhcp "ouvert" permet à n'importe quel ordinateur se connectant au réseau d'obtenir une IP et les paramètres réseau convenables. Cela me pose un grave problème de sécurité, il suffirait à un pirate de se connecter physiquement au réseau pour obtenir tout cela :( D'où une certaine parade: le dhcp "fixe" dans lequel j'attribue une IP à une adresse MAC de carte réseau, ce qui me permet d'isoler plus facilement ce genre de problème.
<fichier dhcpd.conf> default-lease-time 86400; max-lease-time 604800; get-lease-hostnames true; option subnet-mask 255.255.255.0; option domain-name "slach2-100.party"; option domain-name-servers 192.168.12.1; option lpr-servers 192.168.12.1; option interface-mtu 1500; subnet 192.168.12.0 netmask 255.255.255.0 # default gateway option routers 192.168.12.1; option broadcast-address 192.168.12.255; # ceux qui ne seront pas dans le dhcp # auront des ip entre .10 et .50 range 192.168.12.10 192.168.12.50; host hardware ethernet 00:10:5a:2e:56:a7; fixed-address "kluster.slach2-100.party"; host hardware ethernet 00:80:ad:97:e1:76; fixed-address "ceddz.slach2-100.party"; host hardware ethernet 00:80:ad:97:e1:7d; fixed-address "sds.slach2-100.party"; host hardware ethernet 00:40:95:49:0b:a5; fixed-address "saigneur.slach2-100.party"; host hardware ethernet 00:50:04:45:e1:65; fixed-address "homer.slach2-100.party"; </fichier> |
ATTENTION: Si vous n'avez pas de DNS, il faut avoir un fichier dhcpd.conf utilisant les IP et non les noms des machines !
<extrait du dhcpd.conf si il n'y a pas de dns> host hardware ethernet 00:40:95:49:0b:a5; fixed-address "192.168.12.57"; host hardware ethernet 00:50:04:45:e1:65; fixed-address "192.168.12.67"; </extrait> |
Pour convertir automatiquement le dhcpd.leases en dhcp fixe, j'ai fait un petit script perl qui accompagne ce document.
Dans le même ordre d'idée, pourquoi s'arrêter en si bon chemin alors qu'on pourrait faire un DNS en même temps ?
Le même script perl, en utilisant l'option -dns fabriquera automatiquement les fichiers named.$domaine.ajouter et named.$domaine.rev.ajouter que vous devrez contrôler avant de les ajouter à vos fichiers de dns et dns reverse.
De plus, il vous faudra ajouter au fichier named.conf les paramètres de vos domaines, comme par exemple:
<ajouter au fichier named.conf> zone "slach2-100.party" type master; file "named.slach2-100"; ; zone "12.168.192.in-addr.arpa" type master; file "named.slach2-100.rev"; ; </ajouter> |
Toujours plus pour le même prix, et c'est encore mieux lorsque c'est gratuit :) Donc, je continue mon aventure, un petit dessin et une expliquation de ma situation:
Lors de la Slach 2 (démo party), j'ai mis deux réseaux en place, l'un en 10Mbit et l'autre en 100 (pour les privilégiés de l'époque) ... et le problème majeur à été que les deux réseaux ne pouvaient pas "se voir" par le "voisinage réseau" de windows.
Une parade existe, c'est WINS. Wins permet de dire qu'il y a un serveur sur le réseau qui a la liste des correspondances IP/Nom de plusieurs domaines (un peu comme un Master du réseau R1 ET R2).
Il faut donc mettre en place ce serveur wins, configurer les clients pour qu'ils l'utilisent et créer une passerelle IP entre ces deux réseaux.
Wins est bien sur supporté par Samba :)
Dessin:
------------------- I I I Réseau R1 I I I I 192.168.0.0 I I 255.255.255.0 I -------+----------- | -----|----- eth0: 192.168.0.1 Serveur Linux eth1: 192.168.100.1 -----|----- | -------+----------- I I I Réseau R2 I I I I 192.168.100.0 I I 255.255.255.0 I ------------------- |
On modifie le dhcpd.conf pour auto configurer les clients à utiliser notre serveur wins :). Si on n'avait pas de dhcp, il faudrait configurer toutes les machines clientes une par une pour leur activer le serveur wins !
ATTENTION, PENSEZ A RAJOUTER LES LIGNES SUIVANTES A VOTRE DHCPD.CONF POUR QUE VOTRE SERVEUR WINS SOIT AUTOMATIQUEMENT UTILISE PAR VOS CLIENTS
<fichier dhcpd.conf> [...] option routers 192.168.0.1; option netbios-name-servers 192.168.0.1; option netbios-dd-server 192.168.0.1; option netbios-node-type 8; [...] </fichier> |
Pour avoir le serveur wins, j'ai donc samba qui marche, configuré comme ceci.
<fichier smb.conf> ; validé sur un samba 2.0.5 [global] workgroup = rycks.com server string = Linux Box comment = Linux Box netbios name = pantoufle volume = pantoufle guest only = yes guest account = nobody log file = /var/log/samba-log.%m max log size = 50 share modes = yes security = share socket options = TCP_NODELAY os level = 33 ; On le configure comme master du réseau domain master = yes local master = yes preferred master = yes ; On active le support wins wins support = yes wins proxy = yes ; Le partage FTP [ftp] path = /home/ftp/pub public = yes printable = no guest ok = yes </fichier> |
Pensez à relancer les serveurs dhcp, samba et dns si vous avez fait des
modifications et relancez les clients dhcp pour qu'ils absorbent vos nouvelles
configs, et regardez si le voisinage réseau ne fait pas "apparaître" les
groupes qui sont sur "l'autre" réseau ?
Vu le temps que met windows pour afficher les machines du voisinage réseau,
je vous conseille de rechercher un ordinateur par son nom. Essayez de chercher
un ordinateur du réseau dans lequel vous êtes, puis un de ceux qui se trouve dans
"l'autre" réseau.
Si vous "voyez" les machines du réseau "extérieur" mais que vous ne pouvez pas y
accéder, c'est qu'il faut configurer votre passerelle pour qu'elle fasse réelement
passerelle entre vos 2 réseaux.
Pour plus d'informations à ce sujet, regardez ipchains.
Généralement, il faut utiliser à peut près cela:
#remise a zéro des chaînes ipchains -F #on active le masquerading #a vérifier selon la route par défaut etc. ipchains -A forward -i eth0 -j MASQ |
Attention, si vous utilisez votre serveur dhcp pour faire deux zones en même temps, vous n'aurez en sortie du programme qu'un seul fichier de dns ... il faudra donc que vous répartissiez a la main ce fichier.
J'espère que ce petit document vous sera utile, si vous avez des questions et remarques, n'hésitez pas à me contacter.
Pour plus de détails sur les différentes parties, consultez:
Les mises à jour se suivent, vérifiez que vous avez bien la dernière version sur le site http://www.rycks.com/erics/linux/