# Le système d'exploitation GNU-Linux/Configuration du réseau

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Quelques définitions

Nous avons trois grands axes pour configurer un réseau.

### L'adresse IP

Tout d'abord, une adresse IP est unique sur un réseau. C'est une suite de 4 nombres allant de 0 à 255 (inclus) séparés par des points (par exemple 192.168.1.32). Cette adresse IP appartient à une classe réseau. Il existe 5 classes d'IP :
* Classe A -> de 0.0.0.0 à 127.255.255.255
* Classe B -> de 128.0.0.0 à 191.255.255.255
* Classe C -> de 192.0.0.0 à 223.255.255.255
* Classe D -> Réservée à un usage multicast.
* Classe E -> Utilisée à titre expérimental.
De l'adresse IP et de sa classe, on peut déduire trois grandes adresses:
* Le masque réseau (netmask) qui serait dans notre cas 255.255.255.0 (classe C) sert à identifier le réseau associé à une adresse IP.
* L'adresse réseau (network address) : 192.168.1.0, cette adresse ne peut être attribuée à aucun ordinateur sur le réseau.
* L'adresse de diffusion (broadcast address) : permettant d'envoyer un message à toutes les machines situées sur le réseau (ici 192.168.1.255).
Il existe la notation CIDR(Classless Inter-Domain Routing) (/24). Sous Linux, on a l'outil ipcalc qui permet de voir cette notation.
Exemple :

### La passerelle

La passerelle ou GATEWAY permet de relier deux réseaux informatiques différents. Dans notre cas, elle est du type : 192.168.1.1.

### Le serveur DNS

Le serveur DNS ou Domain Name System établit la liaison entre un nom de domaine et une adresse IP. Grâce au serveur DNS nous pouvons retrouver une machine sur un réseau via son adresse IP ou bien sous sa forme canonique (par exemple www.domaine.fr).

## Les fichiers de configuration
### /etc/network/interfaces

Sur la distribution Debian, les paramètres réseaux vont être stockés à cet emplacement: /etc/network/interfaces. Éditons ce fichier avec vim. Nous retrouvons l'adresse Loopback (127.0.0.1) autrement appelé le localhost qui boucle sur notre propre machine.
Nous allons maintenant attribuer les adresses nécessaires au bon fonctionnement de notre serveur, car celles-ci avaient été attribuées automatiquement lors de l'installation. Nous allons donc enlever la configuration DHCP en nous attribuant une adresse spécifique pour notre serveur (192.168.30.219), ce qui nous donne :
AVANT :
APRES :
Il faut maintenant relancer le fichier et vérifier que la configuration a bien été prise en compte.

### /etc/resolv.conf

Ce fichier contient les adresses IP des serveurs de noms :
Les options search et domain permettent de spécifier un nom de domaine à rajouter à toute requête portant sur un nom qui ne contient pas de point. Ce qui signifie ici qu'une recherche sur pc235 sera tentée en utilisant pc235.mondomaine.fr. Si aucune correspondance n'est trouvée, une autre recherche sera alors tentée avec pc235.autredomaine.fr, etc.
L'option domain permet d'utiliser un nom (mais un seul) comprenant éventuellement un sous-domaine:
Dans ce cas, une recherche sera d'abord tentée avec pc235.truc.mondomaine.fr, puis, en cas d'échec, avec pc235.mondomaine.fr.
Ces deux options ne doivent pas figurer en même temps dans le fichier resolv.conf.
L'option nameserver permet d'indiquer l'adresse IP du serveur de noms. On peut mettre plusieurs lignes nameserver pour indiquer plusieurs serveurs de noms, mais attention, l'ordre à une importance : lors de la résolution d'un nom, le système va contacter le premier serveur DNS, et si il n'a pas obtenu de réponse au bout d'un certain temps (temps généralement limité à 30s), il contactera le deuxième.

### /etc/hostname

Ce fichier contient le nom de la machine (hostname). Il est utilisé lors du démarrage de la machine pour positionner le nom de la machine.

### /etc/hosts

Le fichier /etc/hosts est l'ancêtre du DNS. À la création de l'Internet, il y avait très peu d'ordinateurs connectés, et ce fichier contenait la liste de ces ordinateurs et de leurs adresses IP. Chaque fois que de nouveaux ordinateurs étaient connectés à Internet, il fallait mettre à jour ce fichier pour accéder à ces nouveaux ordinateurs. Vu le nombre croissant d'ordinateurs connectés à Internet, ce fonctionnement n'était plus adapté et a donné lieu à l'invention du DNS.
Désormais, ce fichier permet de connaître les adresses IP d'ordinateurs non présents dans le DNS.
Ce fichier contient une ligne pour l'entrée loopback :
Ce fichier doit aussi contenir une ligne indiquant le nom de l'ordinateur et son adresse IP; ceci est utile en cas de défaillance du serveur DNS :
À la fin de ce fichier, on trouve désormais des entrées pour IPv6 :
On peut y ajouter :
Puis tester immédiatement en local :

### /etc/host.conf

Historiquement, ce fichier contenait l'ordre de recherche pour la résolution des noms : d'abord la consultation du fichier /etc/hosts, et ensuite l'interrogation du DNS :
Désormais, ces préférences d'ordre de recherche sont indiquées dans le fichier /etc/nsswitch.conf (voir ci-dessous).

### /etc/nsswitch.conf

Ce fichier remplace désormais le fichier /etc/host.conf et permet d'indiquer au système l'ordre de recherche pour la résolution des noms :
L'option files indique au système de consulter d'abord les fichiers (/etc/hosts pour les noms d’hôtes et /etc/networks pour les noms de domaines) avant d'aller interroger le DNS.

### /etc/networks

Ce fichier contient le nom des réseaux et leur adresse réseau :

## Les commandes
### hostname

La commande hostname permet de connaître le nom de l'ordinateur :
L'option -f (-f ou --fqdn) permet de connaître le nom de l'ordinateur avec son nom de domaine (Full Qualified Domain Name) :
La commande hostname permet aussi de changer dynamiquement nom de machine, mais attention, cette modification est temporaire et ne sera plus active après un reboot. Pour changer de manière permanente le nom de la machine, il faut modifier le fichier /etc/hostname et le fichier /etc/hosts (voir ci-dessus) :

### ifconfig

Cette commande est de plus en plus souvent remplacée par ip depuis 2015.
Utilisé sans argument, la commande ifconfig affiche les interfaces réseau actives :
L'option -a permet d'afficher toutes les interfaces, y compris celles qui ne sont pas activées.
On peut aussi spécifier à ifconfig l'interface à afficher :
La commande ifconfig permet également de configurer une interface réseau. Attention, cette modification est faite dynamiquement et ne sera plus active après un redémarrage.
La commande ifconfig peut aussi créer des alias d'interface réseau. On peut ainsi affecter plusieurs adresses à une seule interface réseau.
Si vous supprimez l'interface principale (ici : eth0), tous les alias qui en dépendent seront supprimés.

### ip

La commande ip fait partie du projet LARTC : Linux Avanced Routing and Traffic Control. L'objectif est de fournir des fonctionnalités avancées réseaux qui ne sont pas disponibles dans la pile réseau standard Unix / Linux.
La commande ip remplace les commandes arp, ifconfig et route. Pour afficher la table arp :
On peut également écrire la forme abrégée en indiquant uniquement la première lettre :
Pour afficher les interfaces réseaux :
ou la forme abrégée :
Pour visualiser la table de routage :
ou la forme abrégée :
La commande ip permet également de modifier les informations : rajouter / supprimer une entrée ARP, rajouter / supprimer des adresses IP, rajouter / supprimer des routes ...
Pour renouveler son adresse auprès du serveur DHCP :

### arp

Le protocole ARP permet de trouver l'adresse MAC d'un ordinateur de mon réseau en fonction de son adresse IP.
La commande arp permet d'afficher la table de correspondance adresses IP => adresses MAC :
Attention, cette table de correspondance est régulièrement vidée.

### route

La commande route permet d'afficher la table de routage réseau :
L'option -n affiche la table de routage réseau sans remplacer les adresses IP par leurs noms canoniques :
On peut obtenir le même résultat en utilisant la commande netstat :
La commande route permet de modifier la table de routage. On peut ainsi rajouter une route pour contacter un réseau ou une machine particulière.
Exemple : joindre le réseau 10.0.0.0/8
Exemple : joindre la machine 1.2.3.4 :
parler de comment rendre une route permanente (modif de /etc/network/interfaces)

### ping

La commande ping permet de tester si on arrive à joindre un serveur donné. Cette commande utilise le protocole ICMP et envoi des paquets ICMP de type echo-request. Si l'ordinateur distant est joignable, il répondra à ce message par un paquet ICMP echo-reply.
Si l'ordinateur est injoignable, on n'obtiendra pas de réponse à nos paquets ICMP :
Attention, si l'ordinateur distant ne répond pas, cela ne signifie pas obligatoirement qu'il est indisponible. Le problème peut venir du réseau (la commande traceroute permettra de déterminer l'endroit qui bloque), ou il peut être paramétré pour ne pas répondre au protocole ICMP, ou un firewall sur la route peut bloquer le protocole ICMP.
L'option -c de la commande ping permet d'indiquer le nombre de paquets à envoyer :

### traceroute

La commande traceroute permet d'afficher la route empruntée pour atteindre un ordinateur donné :

### mtr

La commande mtr (my traceroute) permet aussi d'afficher la route empruntée pour atteindre un ordinateur donné, mais ré-actualise la liste en permanence :

### nslookup

La commande nslookup permet d'interroger un serveur DNS :
Cette commande est interactive, elle nécessite l'intervention de l'utilisateur. On utilise désormais les commandes host et dig pour effectuer les mêmes opérations (voir ci-dessous).

### host

La commande host permet d'effectuer une résolution DNS :
Elle permet aussi d'effectuer une résolution DNS inverse (quel nom canonique est associé à une adresse IP donnée ?) :

### dig

La commande dig permet d'interroger les enregistrements DNS (appellé aussi Ressources Records ou RR) d'un nom de domaine donné :
On peut indiquer à la commande dig le Ressource Record que l'on désire connaitre :
On peut indiquer à la commande dig le serveur DNS à interroger :

### whois

La commande whois permet d'interroger la base de données whois contenant les informations sur le propriétaire du domaine et les personnes responsables pour les aspects administratif et technique :
parler du routage avancé + rajouter lien vers LARTC

## Références

* ↑ https://www.linux.com/tutorials/replacing-ifconfig-ip/