====== CONFIGURATION RESEAU DU SERVEUR ====== Ici, on va uniquement s'intéresser au paramétrage des cartes réseaux d'un serveur en evironnement Linux. Vous êtes censé savoir ce qu'est une adresse IPv4, un masque de sous-réseau, une adresse passerelle et à quoi correspond un serveur DNS. On ne s'intéresse pas ici à l'adressage IPv6 que l'on étudiera en deuxième année option SISR. ===== DETERMINATION DES INTERFACES RESEAU ===== Les systèmes Linux utilisent un nom symbolique par interface réseau, qu’il s’agisse d’une interface réelle ou virtuelle, Ethernet ou autre. Dans le cas courant où le système est connecté à un réseau Ethernet et n’utilise qu’une seule carte, cette carte sera désignée « **eth0** ». On pourra déterminer la liste de toutes les interfaces réseaux existant sur un système, configurée ou non par la commande **ifconfig**. hannibal@box:~$ ifconfig -a eth0 Link encap:Ethernet HWaddr 00:25:4b:9e:9f:02 inet adr:192.168.0.108 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::225:4bff:fe9e:9f02/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:328750 erreurs:0 :0 overruns:0 frame:0 TX packets:337643 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:312714270 (312.7 MB) Octets transmis:37879808 (37.8 MB) Interruption:44 eth2 Link encap:Ethernet HWaddr 00:24:36:f1:bf:53 adr inet6: fe80::224:36ff:fef1:bf53/64 Scope:Lien UP BROADCAST MULTICAST MTU:1500 Metric:1 Packets reçus:0 erreurs:0 :0 overruns:0 frame:161 TX packets:0 errors:29 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B) Interruption:23 lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 Packets reçus:19462 erreurs:0 :0 overruns:0 frame:0 TX packets:19462 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:2017753 (2.0 MB) Octets transmis:2017753 (2.0 MB) hannibal@box:~$ **Analysons tout ça :** ^Informations sur la couche liaison (2)^^ |encap:Ethernet|format de trame Ethernet II| |HWaddr |Adresse MAC de la carte réseau| ^Informations sur la couche réseau (3)^^ |inet adr|adresse IP de l'interface| |Bcast|adresse de diffusion du réseau| |Masque|masque de sous-réseau| ^Informations sur l'état de l'interface^^ |UP BROADCAST RUNNING MULTICAST|interface de diffusion active| |MTU:1500|Maximum Transmission Unit. La taille maximum des trames Ethernet transmises sur Internet est fixée par le document RFC1191 Path MTU discovery| |Metric:1|nombre de sauts autorisés pour obtenir un routage vers n'importe quelle destination| ^Statistiques et paramètres de l'interface^^ |Statistiques|Ces informations sont essentielles pour déterminer la qualité du réseau| |Paramètres d'entrées/sorties|Ces informations indiquent si la carte réseau est correctement reconnue par le système| ===== CONFIGURATION IP D'UNE INTERFACE ===== Typiquement, on configure une interface Ethernet avec une commande du type : # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up La commande **ifconfig** possède de nombreuses options. Les principales sont : * **up** : activation de l'interface, * **down** : désactivation de l'interface, * [**-**]**arp** : activation/désactivation du protocole ARP sur l'interface, * **netmask** : valeur du masque de réseau, * **broadcast** : valeur de l'adresse de diffusion. Pour obtenir la syntaxe de toutes les options disponibles, il faut utiliser la commande **man ifconfig** ===== CAS PARTICULIER : CONFIGURATION DE SOUS-INTERFACES ===== Il est possible de définir des sous-interfaces pour une interface réseau physique. Chaque sous-interface aura son propre paramétrage IP. hannibal@box:~$ sudo ifconfig eth2:0 192.168.100.2 [sudo] password for hannibal: hannibal@box:~$ sudo ifconfig eth2:1 192.168.200.2 hannibal@box:~$ __Vérification :__ hannibal@box:~$ ifconfig -a eth0 Link encap:Ethernet HWaddr 00:25:4b:9e:9f:02 inet adr:192.168.0.108 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::225:4bff:fe9e:9f02/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:332087 erreurs:0 :0 overruns:0 frame:0 TX packets:340545 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:315495552 (315.4 MB) Octets transmis:38142624 (38.1 MB) Interruption:44 eth2 Link encap:Ethernet HWaddr 00:24:36:f1:bf:53 adr inet6: fe80::224:36ff:fef1:bf53/64 Scope:Lien UP BROADCAST MULTICAST MTU:1500 Metric:1 Packets reçus:0 erreurs:0 :0 overruns:0 frame:205 TX packets:0 errors:29 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B) Interruption:23 eth2:0 Link encap:Ethernet HWaddr 00:24:36:f1:bf:53 inet adr:192.168.100.2 Bcast:192.168.100.255 Masque:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 Interruption:23 eth2:1 Link encap:Ethernet HWaddr 00:24:36:f1:bf:53 inet adr:192.168.200.2 Bcast:192.168.200.255 Masque:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 Interruption:23 lo Link encap:Boucle locale inet adr:127.0. ===== RENDRE LA CONFIGURATION PERMANENTE ===== Avec la distribution Debian GNU/Linux, les paramètres de configuration des interfaces réseau sont stockés dans le répertoire **/etc/network/**. Le fichier **interfaces** de ce répertoire rassemble la configuration des interfaces réseau. Voici l'exemple d'une interface ethernet configurée à l'aide du protocole DHCP : # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface auto lo iface lo inet loopback # The first network card - this entry was created during the Debian installation # (network, broadcast and gateway are optional) auto eth0 iface eth0 inet dhcp Pour une configuration statique de l'interface : ... auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 ===== CONFIGURATION DU CLIENT DNS : FICHIER /etc/resolv.conf ===== Les machines Linux disposent nativement d’un client DNS appelé **resolver**. Toute application fonctionnant sur Linux et ayant besoin de faire une requête DNS s’appuiera sur ce composant. Il exploite le fichier de configuration simple **/etc/resolv.conf** où doit se trouver la référence d’au moins un serveur DNS. **Format simplifié du fichier /etc/resolv.conf** search domaine   nameserver adresse_ip ^Fichier /etc/resolv.conf : directives et variables utilisées^^ |search|Facultatif : indique le suffixe de recherche employé sur le poste Linux. Permet de ne pas taper l’intégralité du nom de domaine pleinement qualifié (FQDN) dans les applications. Le fichier /etc/resolv.conf admet plusieurs domaines de recherches précisés par search| |domaine|Le FQDN du domaine constituant le suffixe de recherche| |nameserver|Indique l’adresse IP du serveur DNS qui assurera les résolutions. Le fichier /etc/resolv. conf admet plusieurs serveurs DNS précisés par nameserver| |adresse_ip|Adresse IP du serveur DNS à interroger| ===== CONFIGURATION DE LA PASSERELLE PAR DÉFAUT : route ===== La commande route permet de définir des routes statiques sur une machine Linux. Dans le cadre d’une configuration simple et ponctuelle, on pourra l’utiliser pour définir la passerelle par défaut. Il s’agira en fait de déclarer une route statique indiquant la route par défaut. **Syntaxe de la commande route pour indiquer une route statique** route add -net réseau_dest netmask masque gw ip_passerelle **Syntaxe de la commande route pour indiquer la passerelle par défaut** route add -net 0.0.0.0 gw ip_passerelle ou bien route add default gw ip_passerelle **Un exemple :** hannibal@box:/etc/network$ route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 link-local * 255.255.0.0 U 1000 0 0 eth0 192.168.0.0 * 255.255.255.0 U 1 0 0 eth0 192.168.100.0 * 255.255.255.0 U 0 0 0 eth2 192.168.200.0 * 255.255.255.0 U 0 0 0 eth2 ^Commande route : options et paramètres^^ |add|Indique que l’on ajoute une route à la table de routage| |-net|Indique que la destination est un réseau| |réseau_dest|Le réseau à atteindre par la route statique qu’on paramètre| |0.0.0.0|La route par défaut. 0.0.0.0 représente tous les réseaux possibles|  |gw|Annonce la valeur de la passerelle| |ip_passerelle|Adresse IP de la passerelle à utiliser| |default|Équivalent à -net 0.0.0.0| |masque|Le masque de sous-réseau associé à la route ajoutée| ===== CONFIGURATION DU NOM D’HÔTE : hostname ===== Le nom d’hôte de la machine peut être affecté dynamiquement avec la commande **hostname**. Il permet aussi d’afficher le nom d’hôte du système s’il est appelé sans argument. Syntaxe de la commande hostname pour affecter un nom d’hôte hostname nom_hote nom_hote représentant le nom qu’on souhaite affecter au système. Attention, cette valeur est conservée en mémoire vive, et sera perdue dès que le système redémarrera. Les systèmes ordinaires en production doivent donc conserver cette valeur dans un fichier de configuration qui est lu à chaque démarrage. Ce fichier dépend de la distribution. C’est par exemple **/etc/hostname** pour les distributions d’origine Debian, et **/etc/sysconfig/network** pour les distributions d’origine RedHat. Les scripts exécutés au démarrage du système se chargent d’appeler la commande **hostname** et récupèrent la valeur du nom du système dans le fichier. **Exemple de contenu d’un fichier /etc/hostname** hannibal@box:~$ cat /etc/hostname box hannibal@box:~$ ===== SPÉCIFICITÉ DES DISTRIBUTIONS ===== Les seules règles universelles pour la configuration du réseau sont celles décrites dans les paragraphes précédents. Les distributions Linux courantes ont néanmoins des procédures de configuration par scripts et fichiers de configuration qu’on peut classer en deux grandes familles : * celles dont la configuration réseau est située dans le répertoire **/etc/network**, * celles dont la configuration réseau est située dans le répertoire **/etc/sysconfig/network-scripts**. ==== Configuration réseau dans /etc/network (A LA MODE DEBIAN) ==== C’est le cas des distributions Debian et dérivées. Les éléments de configuration sont situés dans un fichier au format simple : **/etc/interfaces**. **Format du fichier de configuration /etc/network/interfaces pour une adresse IP statique** auto interface  iface interface inet static  address adresse_ip  netmask masque  gateway ip_passerelle **Format du fichier de configuration /etc/network/interfaces pour une adresse IP dynamique** auto interface   iface interface inet dhcp ^Fichier interfaces : options et paramètres^^ |auto|Indique que l’interface devra être activée automatiquement au démarrage| |interface|Le nom linuxien de l’interface à configurer (exemple : eth0)| |inet|Indique qu’on va affecter une adresse IPv4| |static|Indique que l’adresse IP configurée sera statique| |adresse_ip|Adresse IP à affecter à l’interface| |masque|Masque de sous-réseau à affecter à l’interface| |ip_passerelle|Adresse IP de la passerelle par défaut| |dhcp|Indique que l’adresse IP configurée sera dynamique et obtenue par requête DHCP| Ces fichiers n’ont évidemment aucune action en eux-mêmes, ils sont appelés par le script de lancement du service réseau (en général **/etc/init.d/networking**), lequel script invoquera la commande **ifup** (interface up) pour activer les interfaces avec leurs paramètres réseau. ==== Configuration réseau dans /etc/sysconfig/network-scripts (A LA MODE REDHAT) ==== C’est le cas des distributions RedHat et dérivées. Les éléments de configuration sont situés dans un fichier au format simple par interface situé dans le répertoire **/etc/sysconfig/network-scripts**. Ces fichiers ont tous le préfixe **ifcfg-** suivi du nom de l’interface à configurer. **Format du fichier ifcfg-interface pour une adresse IP statique** DEVICE=interface  BOOTPROTO=none  ONBOOT=yes  IPADDR=adresse_ip  NETMASK=masque  GATEWAY=ip_passerelle **Format du fichier ifcfg-interface pour une adresse IP dynamique** DEVICE=interface  BOOTPROTO=dhcp  ONBOOT=yes ^Fichier ifcfg : options et paramètres^^ |interface|Le nom Linux de l’interface à configurer (exemple : eth0)| |BOOTPROTO=dhcp|Indique que l’adresse IP configurée sera dynamique et obtenue par requête DHCP| |ONBOOT=yes|Indique que l’interface devra être activée automatiquement au démarrage| |adresse_ip|Adresse IP à affecter à l’interface| |masque|Masque de sous-réseau à affecter à l’interface| |ip_passerelle|Adresse IP de la passerelle par défaut|