dhcp(d)

serveur

Installons :

 # apt-get install dhcp3-server

Ajoutons l'interface qu'on va ecouter pour repondre au requete dhcp

 # vi /etc/default/dhcp

Et avoir par exemple:

 # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
 #       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
 INTERFACES="eth0"

Adaptons la configuration du dhcpd:

 # vi /etc/dhcp3/dhcpd.conf

Et par exemple:

 option domain-name "microsoft.com";
 option domain-name-servers 10.20.0.6, 212.27.33.1, 212.27.33.3;
 option subnet-mask 255.255.255.0;
 default-lease-time 86400;
 max-lease-time 172800;
 subnet 192.168.0.0 netmask 255.255.255.0 {
   range 192.168.0.1 192.168.0.50;
   default-lease-time 600; max-lease-time 7200;
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.0.255;
   option routers 192.168.0.254;
   option domain-name-servers 212.27.39.2,212.27.32.5;
   option domain-name "microsoft.com";
 }

Et si on veut qu'une IP soit fixe pour une MAC:

 host kubulap {
   hardware ethernet 00:0b:cd:a7:0b:0c;
   fixed-address 192.168.0.200;
   default-lease-time 600; max-lease-time 7200;
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.0.255;
   option routers 192.168.0.254;
   option domain-name-servers 212.27.39.2,212.27.32.5;
 }

Relancer dhcpd:

 # /etc/init.d/dhcpd3 restart

Voir ce qui ce passe:

 # tail -f /var/log/syslog

La base des IP liberes et utilisé est dans: /var/lib/dhcp3/dhcpd.leases

status

Pour savoir l'etat des attributions, il faut regarder dans le fichier “dhcpd.leases”…

Scripte en Perl pour aider a la lecture: http://dhcpstatus.sourceforge.net/

Suivre la procedure d'installation et puis:

$ dhcpstatus

dhcp relay

Lien: http://www.linux-france.org/prj/edu/archinet/systeme/ch29s03.html

Le but: servir du dhcp a un reseau dont on ne peut recevoir la couche 2 … enfin, les adresses MAC.

Etat du reseau:

Reseau "underworld.local"  <==> eth1 :: PC/Routeur :: eth0 <==> le grand reseau local <==> server-dhcp 
10.22.0.0/24                    10.22.0.1    |  192.168.0.53                         192.168.0.2
gateway:10.22.0.1                            |                   gateway: 192.168.0.254

Evidement, le “PC/Routeur” contient quelques regles IPTABLES pour permettre au reseau “underworld.local” de voyager sur le Net: ca ne sera pas le sujet ici.

Package

# aptitude update
# aptitude install dhcp3-relay

dhcp relay

L'installation est interactive, et au final, on peut avoir comme config:

# cat /etc/default/dhcp3-relay | grep -v "^#" | grep -v "^\s*$"
SERVERS="192.168.0.2"
INTERFACES="eth0 eth1"
OPTIONS=""

On peut aussi demarrer le “dhcp-relay” a partir du shell:

# dhcrelay3 -d -i eth1 -i eth0 192.168.0.2

dhcp server

Sur le “veritable” serveur dhcp, un client n'aura toujours pas d'IP puisque les logs disent:

... dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via 10.22.0.1: unknown network segment

Normal.

Declarons le segment (exemple):

subnet 10.22.0.0 netmask 255.255.255.0 {
    server-identifier 10.22.0.1;
    option domain-name-servers 192.168.0.2, 212.27.40.240, 212.27.40.241;
    option routers 10.22.0.1;
    option broadcast-address 10.22.0.255;
    option domain-name "underworld.local";
    range 10.22.0.128 10.22.0.254;
    default-lease-time 10800;
    max-lease-time 43200;
}

Ajoutons la route:

# route add -net 10.22.0.1 netmask 255.255.255.255 gw 192.168.0.53

Où “192.168.0.53” a la machine qui fait relay.

test

Sur le client final:

# dhclient

Et voila.

Le problème

J'en vois au moins 1, et un beau:

J'aurai souhaité que le “dhcp-relay” n'ecoute qu'une interface pour ses clients, et recherche les reponses du “dhcp-server” sur une autre…
Ce n'est pas possible !!!!
Le “dhcp-relay” doit ecouter toutes les interfaces pour fonctionner, et donc, il va aussi repondre a des clients qui sont sur un autre reseau !!! Arg!

la solution

Utiliser “dhcp-helper”

dhcp-helper

“dhcp3-relay” etant mal conçu, j'essaye “dhcp-helper”.
(Aprés avoir virer “dhcp3-relay”)

# aptitude update
# aptitude install dhcp-helper

Et puis editer le fichier /etc/default/dhcp-helper afin d'avoir:

#DHCPHELPER_OPTS="-b eth0"
DHCPHELPER_OPTS="-s 192.168.0.2 -i eth1"

Et ca marche !

 
serveur_dhcp.txt · Dernière modification: 2010/04/13 17:38 par thierry
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki