1. LI350 Rapport TME
LI350 Semaine 7
Réalisé par : KAID Belkacem
Nhek Sodara
Encadré par : GONZALES Christophe
2. 1
1. Déploiement automatique de machines Fedora
L'objectif est de déployer une nouvelle machine Linux à partir de notre réseau de serveurs.
Etape 1 – Installation d’une nouvelle machine virtuelle
On va suivre les étapes nécessaires à l'installation de notre machine virtuel (install_serveur).
A la fin l’installation, on procède à la configuration réseau de notre machine :
Accès en mode : réseau interne pour permettre à nos machines virtuelles de communiquer
entre elles et pour qu’elles puissent récupérer leurs adresses à partir de notre install_server.
On alloue 2Go de mémoire physique pour éviter d’utiliser du swap.
3. 2
Etape 2-Extinction des autres machines virtuelles
Pour ne pas saturer notre RAM, on éteint les machines msNIS, ssNIS et c1NIS
Etape 3- Configuration réseaux de la machine install_server
On démarre notre machine install_server.
On configure sa carte réseau eth0 afin qu'elle utilise l'adresse IP 192.168.11.4.
Etape 4 - Création du serveur DHCP
Dans cette étape on configure un serveur DHCP dont la plage d’adresse est dans l’intervalle
[100,200] (range 192.168.11.100 192.168.11.200).
On édite le fichier /etc/dhcp/dhcp.conf :
On démarre ensuite dhcp.en lançant la commande : /etc/init.d/dhcp start
4. 3
Etape 5- Montage du DVD de la Fedora14
On choisit le fichier ISO de Fedora se trouvant dans /images/ressources
On remarque que notre DVD est dans le répertoire /media de notre machine virtuelle.
Etape 6- Mise en place de tftp/bootp
On installe les images pxelinux.0, vmlinuz et initrd.img servant au démarrage de la machine
déployée dans le répertoire /var/lib/tftpboot/
On édite ensuite le fichier /var/lib/tftpboot/pxelinux.cfg/default, en rajoutant :
default mo_ instal
label mon_instal
kernel vmlinuz
append initrd=initrd.img ks=nfs:192.168.11.4:/var/lib/tftpboot/ks.cfg
5. 4
On modifie le fichier /etc/inetd.d/tftp en mettant (disable=no)
On démarre démarre le service xinetd.
6. 5
Etape 7- Ecriture du fichier kickstart
On lance la commande system-config-kickstart pour obtenir l'interface suivante :
On modifie les différents champs :
8. 7
Vu que dans notre fichier /var/lib/tftpboot/pxelinuxcfg/default on avait mis comme nom
"ks.cfg", on sauvegarde notre configuration sous ce même nom.
Afin de terminer notre configuration du kickstart, on renseigne la liste des packages à installer
sur la machine déployée, en éditant le fichier tout en ajoutant :
%packages
@base
@editors
%end
9. 8
On redémarre ensuite le service xinetd
Etape 8-NFS
On met en place le serveur NFS afin qu'il puisse exporter le fichier kickstart ainsi que le DVD de
Fedora.
On édite le fichier /etc/exports en rajoutant les lignes permettant de faire l'export:
10. 9
Valider nos modifications on lance la commande :exportfs
Pour afficher la liste des répertoires exportés on lance la commande : exportfs -a
Ensuite on demarre de notre service nfs.
11. 10
Etape 9- Création d'une nouvelle machine et déploiement
Création depuis la fenêtre de VirtualBox d'une nouvelle machine :
On configure paramètres de notre machine vierge :
Accès au réseau : interne
12. 11
Ensuite on décoche dans la rubrique «Système" "Disquette" et "Disque CD/DVD» en cochant
"réseau" pour qu'elle puisse booter sur les réseaux
Etape 10- Déploiement
En lançant notre machine virtuelle, elle nous demande d’insérer le DVD de la Fedora, on
clique sur "annulez" comme indiqué.
13. 12
Après la configuration de la carte réseau eth0, ça ce bloque avec un message d’erreur :
Etape 11- Test de bonne installation
Comme l'installation n'a pas marché, on n’a pas pu exécuter cette étape.
(Machine privée)
2.Création d'un nouveau service
L'objectif de cette partie est de créer un serveur en C, et de mettre en place un mécanisme permettant
de le démarrer automatiquement. on procédera de la sorte :
1-création d'une socket via l'appel système socket()
14. 13
2-affectation à la socket une adresse IP et un numéro de port par l'appel système bind()
3-écoute des connexions des clients via la fonction listen()
4-acceptation des connexions des clients via la fonction accept()
5-transmission et réception des messages via la socket reliée au client.
On doit ensuite mettre en œuvre cette architecture
Etape 12- Début de la programmation du serveur
Pour le serveur (install_serveur), on crée le fichier serveur.c dont le code est le suivant
Tout en utilisant le squelette :
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main () {
return 0;
}
On utilise gcc pour compiler notre programme :
Etape 13- Création de la socket
On crée notre sokcet TCP de sorte qu’elle puisse communiquer sur internet à l'aide du domaine
d’adresse «AF_INET » :
15. 14
Etape 14- Binding de la socket
Pour affecter à la socket serveur une adresse IP et un numéro de port on utilise la fonction bind() :
bind(sockefd,sockaddr,taille).
sockfd est le descripteur de fichier crée à l'étape précedente
sockaddr est un pointeur vers une variable de type générique
Pour cela on crée une variable server_addr de type sockaddr et on renseigne ce qui suit :
server_addr->sin_family=AF_INET
server_addr->sin_port=htons(2000)
server_addr->sin_addr.s_addr=INADDR_ANY
16. 15
Etape 15- Ecoute des clients
Comme l’architecture est de type client/serveur, on demande à notre serveur d'écouter les clients à
l'aide de la fonction listen() qui aura comme argument sockfd et 5 clients simultanément.
Etape 16- Acceptation des clients
On fait en sorte que notre serveur accepte les demandes de connexion des clients :
17. 16
Etape 17- Conversation avec les clients
Le serveur se limitera à l'envoi de la chaine de caractère "message du serveur", pour cela on utilise la
fonction dprintf :
18. 17
Etape 18- Test du bon fonctionnement du serveur
On compile et lance l’exécution du notre programme en background :
On lance la commande netstat –tan :
Le serveur est sur le port 2000 (ligne 5)
En lançant commande telnet 127.0.0.1 2000 on se connecte à notre serveur sur le port 2000 qui affiche
la phrase énoncé précédemment dans le code du serveur.c.
Etape 19- Démarrage automatique du serveur
Pour gérer le démarrage automatique de notre serveur, on copie le fichier /etc/init.d/bluetooth en
/etc/init.d/serveur.
Pour tester le démarrage du serveur on lance : ps -o pid --no-heading -C serveur.
Ce qui affiche :
19. 18
On écrit en shell :
Pour tester le bon fonctionnement on lance la commande : /etc/init.d/serveur start et /etc/init.d/serveur
Ce qui affiche :