lundi 26 janvier 2015 (), par
configurer le serveur DHCP :
/etc/dhcp/dhcpd.conf
: la liste des clients pour le dhcp, indique le fichier de démarrage ("next-server")cela peut se faire par webmin ou autre gestionnaire de table dhcp.
Section générale du fichier de configuration.
Ces paramètres globaux peuvent en fait être indiqués dans les sections réseaux.
# la durée du bail dhcp par défaut, en secondes
default-lease-time 360000;
# la durée maximale du bail dhcp, en secondes
max-lease-time 360000;
# le masque de sous réseau, détermine le nombre d'adresses IP possible
option subnet-mask 255.255.252.0;
# les serveurs de résolution de nom (DNS)
option domain-name-servers 192.168.1.1,192.168.0.1;
# le nom de domaine. si le serveur est situé sur plusieurs domaines, ne pas le déclarer ici
#option domain-name "monreseau.fr";
ddns-update-style none;
# optionnel : le nom du serveur
# pour drbl-clonezilla, il doit être à drbl
server-name drbl;
s’il y a plusieurs réseaux pour ce serveur dhcp, il faudra déplacer la directive next-server
dans une section réseau.
on laisse ensuite le code généré par DRBL, notamment :
filename = "pxelinux.0";
qui indique quel fichier de démarrage demander au serveur
Sous-sections réseaux.
Ici, on déclare 2 réseaux différents, "administration" de 192.168.8.1 à 192.168.11.254 et "formation" de 192.168.0.1 à 192.168.3.254.
# ====== Administration ======
subnet 192.168.8.0 netmask 255.255.252.0 {
option subnet-mask 255.255.252.0;
option routers 192.168.8.1;
option domain-name "reseau_administratif.fr";
# ici, comme le serveur donne des adresses a 2 réseaux, il le fait selon l'adresse MAC du poste demandeur.
# si un poste n'a pas son adresse MAC référencée dans ce fichier, ce serveur ne lui donnera pas d'adresse.
deny unknown-clients;
# déclaration d'un poste
# Poste 1
host Poste1 {
# l'adresse MAC du poste
hardware ethernet XX:XX:XX:XX:XX:XX;
# l'adresse IP donnée
fixed-address 192.168.10.20;
}
}
# ====== Formation ======
subnet 192.168.0.0 netmask 255.255.252.0 {
option subnet-mask 255.255.252.0;
option routers 192.168.1.1;
option domain-name "reseau_formation.fr";
# le paramètre indiquant quel serveur donnera le fichier de démarrage
next-server 192.168.1.5;
# ici, comme le serveur donne des adresses a 2 réseaux, il le fait selon l'adresse MAC du poste demandeur.
# si un poste n'a pas son adresse MAC référencée dans ce fichier, ce serveur ne lui donnera pas d'adresse.
deny unknown-clients;
# Formation1
host Formation1 {
# l'adresse MAC du poste
hardware ethernet YY:YY:YY:YY:YY:YY;
# l'adresse IP donnée
fixed-address 192.168.0.20;
}
}
S’il y a plusieurs serveurs dhcp dans le même réseau, afin que celui qui réponde aux postes à cloner soit le serveur drbl, il faudra configurer le dhcp en "statique" en associant obligatoirement une adresse IP à une adresse MAC, et en refusant les postes inconnus ("deny unknown-clients"), comme configuré ci-dessus.
Le cas échéant, si le serveur le plus rapide à répondre n’est pas le serveur drbl, le poste ne pourra pas télécharger l’image de démarrage et exécuter des tâches clonezilla.
service dhcpd restart
Au cas où le module réseau du serveur ne correspond pas au matériel des postes clients, il faudra modifier leur image de démarrage drbl :
Par exemple, le module pour les cartes Marvell Yukon (PC ACER et Gateway) est sky2.
Cela peut être déterminé avec un Linux Live.
Si le module est présent sur le serveur et donc dans l’image drbl, mais pas chargé au démarrage des postes clients, il suffira de lancer la commande :
mknic-nbi -k 3.17.7-200.fc20.x86_64 -m sky2
A adapter selon le noyau (ici le 3.17.7-200 pour une Fedora 20) et le module à charger.
Cela permet de redéfinir le fichier de configuration de démarrage et dire aux clients drbl de charger ce module comme module réseau
On peut bien sûr lister plusieurs modules
En cas de plusieurs clients avec plage IP exotique, alors étant donné que les clients devront être listés après la configuration de DRBL, il faudra les ajouter manuellement dans la liste des clients NFS du serveur DHCP (drbl).
En effet, il y à un appel dans /tftpboot/node_root/sbin/init
à une fonction do_nfs_mount
, avec pour paramètre $nfsserver:$nfshostsdir/$IP/
.
Ce fichier est téléchargé car faisant partie de l’image de démarrage dans /tftpboot, puis exécuté par le client.
Ce paramètre $nfsserver
est sensé avoir été précédemment trouvé par une boucle for/if cherchant une lecture de $IP-PC dans le fichier clients-of-$IP-DHCP
, si l’adresse du poste n’y est pas listée il prend l’adresse de la passerelle, sinon une adresse par défaut.
# Find NFS server
for i in $NFSSERVER_LIST; do
# Use the clients-of-$nfsserver.txt in the common root.
if [ -n "$(grep -Ew "$IP" /etc/drbl/clients-of-${i}.txt 2>/dev/null)" ]; then
nfsserver="$i"
break
fi
done
Il faudra donc ajouter dans /tftpboot/node_root/etc/drbl/clients-of-......txt
les adresses IP depuis le fichier dhcpd.conf.
Une adresse IP par ligne.
10.158.58.145
10.158.58.142
10.158.58.144
10.158.58.143
10.158.58.124
10.158.58.125
...
/etc/drbl/HOST_MAC_TABLE
et IP_HOST_TABLE
: liste des clients pour pouvoir les sélectionner ensuite.exemple HOST_MAC_TABLE :
# Generated by DRBL script parse_dhcpd_conf
# HOSTNAME IP MAC_ADDRESS
Formation0 192.168.0.19 XX:XX:XX:XX:XX:XX
Formation1 192.168.0.20 XX:XX:XX:XX:XX:XX
Formation2 192.168.0.21 XX:XX:XX:XX:XX:XX
Formation3 192.168.0.22 XX:XX:XX:XX:XX:XX
Formation4 192.168.0.23 XX:XX:XX:XX:XX:XX
Formation5 192.168.0.24 XX:XX:XX:XX:XX:XX
exemple IP_HOST_TABLE :
# Created by DRBL (drblpush), begin
192.168.0.19 Formation0
192.168.0.20 Formation1
192.168.0.21 Formation2
192.168.0.22 Formation3
192.168.0.23 Formation4
192.168.0.24 Formation5
/tftpboot
: le répertoire contenant l’image de démarrage (rappel : enlever les répertoires en trop dans nodes, et les sous répertoires inutiles dans node_root)/tftpboot/nbi_img/pxelinux.cfg/default
: configuration du menu de démarrage/usr/bin/drbl-doit
(anciennement /opt/drbl/bin/drbl-doit
) : script pour le wake on lan (entre autre) à corriger si le masque est en 22 et non en 24.dans ce cas :
IP_grp_1_3="$(LC_ALL=C echo $ihost | sed -e "s/\.[[:digit:]]*$//g")" iport="$(LC_ALL=C route -n | grep -E "^$IP_grp_1_3\." | awk -F" " '{print $NF}')"
if [ "$IP_grp_1_3" = "AA.BB.CC" ]; then iport="ethX"; fi
en remplaçant AA.BB.CC par les 3 premiers nombres de vos adresses IP, et ethX par l’interface côté postes (eth0, eth1...)
cette structure conditionnelle est bien sûr à répéter pour chaque AA.BB.CC différents. Par exemple, pour un masque en 22, correspondant à 4 plages de 256 (4*DD) il faudra mettre 4 boucles conditionnelles, une pour chaque "sous-plage".
/etc/drbl/drbl.conf
(anciennement /opt/drbl/conf/drbl.conf
) : fichier de configuration général de DRBL, notamment pour le compte d’administration W$ ainsi que les répertoires de /var/lib à ne pas copier au drblpush.Compte d’administration pour les commandes SSH envoyées aux postes clients sous Windows (DRBL-Clonezilla)
# Administrator account ID in M$ windows
# This is for drbl-doit to send command to cloned M$ windows via ssh. Different language M$ windows use different ID. Ex:
# English: Administrator
# Traditional Chinese: Administrator
# France: Administrateur
# Dutch: Administrator
# Default value: Administrator
MSWIN_ADMIN_ID="Administrateur"
/usr/bin/drbl-doit
(anciennement /opt/drbl/bin/drbl-doit
)specified_passwd=$1
# if [ -n "$specified_passwd" ]; then # specified_passwd='mot_de_passe'; # fi
/usr/sbin/dcs
(anciennement /opt/drbl/sbin/dcs
) qui est en fait un lien sur /usr/sbin/drbl-client-switch
(anciennement /opt/drbl/sbin/drbl-client-switch
)-p "mot_de_passe"
aux commandes drbl-doit
if [ "$LIST_HOST" = "on" ]; then drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" -h "$IP_LIST" /usr/bin/shutdown -f -r now & else drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" /usr/bin/shutdown -f -r now & fi
if [ "$LIST_HOST" = "on" ]; then drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" -h "$IP_LIST" /usr/bin/shutdown -f -s -x now & else drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" /usr/bin/shutdown -f -s -x now & fi
/etc/sysconfig/dhcpd
: la liste des interfaces surs lesquelles le serveur dhcp écoute : mettre celle où l’on veut faire du multicast en premier.DHCPDARGS="eth2 eth0 eth1 virbr0"
relancer le serveur DHCP si le fichier a du être modifié. service dhcpd restart
La fonction qui lit ce fichier afin de déterminer l’interface sur laquelle faire le multicast est dans /opt/drbl/sbin/ocs-functions
Il suffit de la corriger pour figer l’interface ou au contraire faire une boucle conditionnelle pour la choisir.
Par exemple, après
find_multicast_ethernet_port() {
echo -n "Finding the $multi_broad_cast_prompt seed ethernet port... "
on pourra enlever
for eth in <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z2V0X2RoY3BkX2ludGVyZmFjZTwvY29kZT4="></span>; do
et après
# keep the port for multicast to be echoed in screen
ajouter
eth="bond0.10"
et après
eth_for_multicast="$eth"
echo "On multicast sur $eth"
enlever
break
done
et laisser la fin de la fonction
echo "done."
echo "Will use ethernet port $eth_for_multicast for $multi_broad_cast_prompt seed in this clonezilla server."
} # end of find_multicast_ethernet_port
La commande pour lancer le menu drbl ensuite sera /opt/drbl/sbin/dcs
, qui est en fait un raccourci pour /opt/drbl/sbin/drbl-client-switch
Pour aller plus vite, il est (était) possible dans le fichier /root/.bashrc
de créer un alias :
# User specific aliases and functions
alias clone='/opt/drbl/sbin/dcs'
ensuite, il suffira de lancer la commande "clone" pour lancer le menu.
L’alias sera utilisable dès la prochaine connexion console au serveur (nouveau terminal ou nouvelle connexion ssh).
1) Wake On Lan
Sous Windows, gestionnaire de périphérique, propriétés de la carte réseau
onglet « avancé »
onglet « gestion de l’alimentation »
dans le BIOS, selon les modèles
menu Advanced BIOS Features
menu « Power Management Setup »
2) Boot on LAN
dans le BIOS, selon les modèles
menu « Integrated Peripherals »
menu « Advanced BIOS Features »