# KB-LNX : Configuration IP sous Linux (Debian) Dans cette procédure, vous allez apprendre à visualiser et à configurer le réseau sur une machine Debian. 1. [[#Visualiser la configuration réseau actuelle|Visualiser la configuration réseau actuelle]] 2. [[#Configurer une IP statique sous Debian|Configurer une IP statique sous Debian]] 3. [[#Configurer une IP dynamique sous Debian|Configurer une IP dynamque sous Debian]] Par défaut, la carte réseau est configurée en DHCP. On distingue 3 modes de configuration : - **Statique** : L’IP est configurée par l’administrateur de la machine (pour les serveurs). - **Dynamique** : La machine reçoit une configuration IP automatique de la part du serveur DHCP (pour les clients). - **Fixe (réservation)** : C’est une adresse dynamique, mais le serveur DHCP fournit toujours la même IP. L’identification s’effectue en fonction de l’adresse mac de la carte réseau. On les utilise pour les équipements qui fournissent un service serveur (imprimante, caméra IP, etc). > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Un équipement qui fournit un service serveur (type GLPI, DNS, DHCP, etc.) doit toujours être en adresse IP statique ou à minima en IP fixe (réservation DHCP).</span> # Visualiser la configuration réseau actuelle ## Lister les interfaces disponibles et leur adresse IP La commande `ip address` ou `ip a` en raccourci, permet d'afficher les interfaces réseau avec les adresses IP associées. ``` ip a ``` La commande retourne la liste d'interfaces réseau détectées par le système ainsi que leur configuration. Dans l'exemple ci-dessous : - L'interface `lo` correspond à l'interface de "*loopback*" (boucle locale). Elle représente la machine locale elle-même son adresse IP est toujours `127.0.0.1/8`. - L'interface `enp0s3` correspond à la carte réseau connectée à mon réseau local. On peut voir que l'adresse IP actuelle sur cette carte est "*10.0.2.15/24*". ![[_img-kb-lnx-ip-static.png]] ## Afficher la passerelle Afin de connaître la passerelle par défaut la commande `ip route show` ou `ip r` en raccourcis retourne les routes statiques configurées sur la machine ainsi l'adresse IP de la passerelle qui représente la route par défaut : ``` ip r ``` Dans l'exemple ci-dessous, la passerelle est "192.168.100.1" : ![[_img-kb-lnx-ip-static-1.png]] ## Afficher la configuration DNS Enfin, pour le DNS, il faut afficher le contenu du fichier "*/etc/resolv.conf*" : ``` cat /etc/resolv.conf ``` Dans l'exemple ci-dessous, le serveur DNS utilisé par ma machine est `10.0.2.3` : ![[_img-kb-lnx-ip-static-3.png]] ## Afficher le mode d'obtention de l'adresse IP Pour savoir si votre adresse IP est configurée de manière statique (static) ou dynamique (dhcp), il faut afficher le contenu du fichier de configuration `/etc/network/interfaces` : ``` cat /etc/network/interfaces ``` Dans l'exemple ci-dessous l'interface, on peut voir que les deux interfaces "*lo*" et "*enp0s3*" sont déclarées et que l'option "*inet dhcp*" est activée. L'interface "*enp0s3*" est donc configurée en mode dynamique (client dhcp) : ![[_img-kb-lnx-ip-static-2.png]] > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Le dossier `/etc/network/interfaces.d/` peut contenir des fichiers de configuration indépendants qui seront chargés automatiquement. Cela permet de définir la configuration d'une interface réseau dans un fichier dédié.</span> # Configurer une IP statique sous Debian ## Configurer les interfaces en statique > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Dans cette procédure, nous partons du principe que l'application "*resolvconf*" est installée sur la machine Debian 12. Si ce n'est pas le cas les directive "dns-" du fichiers interfaces ne seront pas prise en compte et le fichier "resolv.conf ne sera pas mis à jour automatiquement.</span> Si nécessaire installer "*resolvconf*" avant de poursuivre les étapes suivantes : ``` sudo apt install resolvconf ``` La configuration d'une carte réseau s'effectue par l'intermédiaire du fichier "*/etc/network/interfaces*". Nous allons l'éditer avec "nano", comme ceci : ``` sudo nano /etc/network/interfaces ``` Pour basculer en mode "adresse IP statique", il faut remplacer "*dhcp*" par "*static*". Ensuite, nous devons déclarer les différentes propriétés : - `auto` : ajouter cette option pour les cartes réseaux internes afin qu'elles soient automatiquement activées au redémarrage du système ou du service "*networking*" - `allow-hotplug` : Permet la connexion à chaud des interfaces, ce qui est généralement utilisé pour les interfaces ethernet USB ou Wifi. - `address`: Configurer l'adresse IP de la machine (par exemple : `10.0.2.200`). Il est possible d'ajouter le masque de sous-réseau au format CIDR (par exemple : `10.0.2.200/24`). - `netmask` : pour définir le masque de réseau au format standard (`255.255.255.0` par exemple). - `gateway` : pour définir l'adresse IP de la passerelle. - `dns-servernames `: pour configurer les adresses IP des serveurs DNS (résolution de noms en IP). - `dns-domain` : Configuration d'un suffixe DNS propre à la connexion. > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> En mode statique vous devez à minima configurer les aoptions `address` et `netmask`</span> > [!warning] Rappel ! <span style="font-weight: normal; color: var(--text-normal)">Les options `gateway`, `dns-servernames` et `dns-domain` ne doivent être configurées que sur une seule interface Ethernet.</span> Voici un exemple pour définir l'adresse IP "*10.0.2.200/24*", la passerelle "*10.0.2.1*", les serveurs DNS "*1.1.1.1*" et "*8.8.8.8*", ainsi que le nom de domaine local "*mon-domain.local*". Adaptez le nom de l'interface selon votre propre configuration : ``` auto enp0s3 allow-hotplug enp0s3 iface enp0s3 inet static address 10.0.2.200/24 gateway 10.0.2.1 dns-nameservers 1.1.1.1 8.8.8.8 dns-domain mon-domain.local ``` Il est à noter que l'adresse IP et le masque de sous-réseau peuvent être séparés sur deux lignes, comme ceci : ``` address 192.168.100.14 netmask 255.255.255.0 ``` Il ne reste plus qu'à sauvegarder puis fermer le fichier avec la combinaison de touche `[Ctrl]+[X]`, puis `[Y]` et `[Enter]`. Pour finaliser la prise en compte des modifications, redémarrer le service "*networking*" : ``` sudo service networking restart ``` Si l'option `auto` n'a pas été ajoutée, il est possible que l'interface soit désactivée, `state DOWN`, au redémarrage du service `networking`, comme le démontre l'exemple ci-dessous : ![[_img-kb-lnx-ip-static-4.png]] Pour réactiver manuellement cette interface, utilisez la commande suivante en adaptant le nom de l'interface selon votre propre configuration : ``` sudo ifup enp0s3 ``` ## Vérifier la configuration statique Pour finir, vérifier les configurations active en utilisant les commandes présentées dans la première partie de cette procédure. Afin de confirmer que toutes les communications réseaux sont bonnes utiliser la commande `ping` pour tester : - l'adresse de loopback, - l'adresse IP de la passerelle - l'adresse IP du DNS - la résolution de nom (par exemple : `ping cyber.gouv.fr`) > [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)">Vous savez définir une adresse IP statique sur une machine Debian !</span> # Configurer une IP dynamique sous Debian ## Lister les interfaces disponibles Dans un premier temps visualiser la liste des interfaces disponibles et identifier le nom de votre interface avec la commande `ip address` ou `ip a`. Dans l'exemple ci-dessous l'interface connectée à mon réseau local se nomme `enp0s3`. On peut voir que l'adresse IP actuelle sur cette carte est "*10.0.2.15/24*". ![[_img-kb-lnx-ip-static.png]] ## Configurer l'interface en client dhcp Pour configurer cette interface en dhcp, il faut éditer le fichier de configuration des interfaces : ``` nano /etc/network/interfaces ``` Modifier la configuration de l'interface `enp0s3` de la façon suivante : ``` # The primary network interface allow-hotplug enp0s3 iface enp0s3 inet dhcp ``` Dans l'exemple ci-dessous l'interface, on peut voir que les deux interfaces "*lo*" et "*enp0s3*" sont déclarées et que l'option "*inet dhcp*" est activée. L'interface "*enp0s3*" est donc configurée en mode dynamique (client dhcp) : ![[_img-kb-lnx-ip-static-2.png]] Pour finir, redémarrer les services réseau et constater l'obtention de votre adresse IP : ``` service networking restart && ip a ``` > [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)">Vous savez configurer une adresse IP dynamique sur une machine Debian !</span> ## Libérer le bail DHCP sous Linux Si votre machine dispose déjà d'une adresse IP obtenue par DHCP, vous pouvez libérer le bail et donc supprimer l'adresse IP de la carte réseau via cette commande : ``` sudo dhclient -r ``` Si vous souhaitez cibler une interface spécifique (par exemple `enp0s3`) utiliser la commande suivante : ``` sudo dhclient -r enp0s3 ``` Cette commande aura pour effet de libérer l'adresse IP et d'informer le serveur DHCP avec une trame réseau de type `DHCP-RELEASE`. ## Renouveler le bail DHCP sous Linux Si vous désirez ensuite demander un nouveau bail DHCP, vous devez simplement exécuter cette commande : ``` sudo dhclient ``` Il n'est pas nécessaire de spécifier la moindre option. La machine va immédiatement envoyer des paquets sur le réseau : - `DHCP-RENEW` : Si le serveur DHCP est en ligne, le client pour renouveler son bail et ses options. - `DHCP-DISCOVER` : Si le serveur DHCP est hors ligne, il va tenter de localiser un nouveau serveur DHCP et d'obtenir une nouvelle adresse IP. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Pour en savoir plus, consulter le cours de [[B2-DHCP-Cours|Présentation du protocole DHCP]].</span> Les deux commandes peuvent être enchainées pour faire un "*release*" et un "*renew*" : ``` sudo dhclient -r && sudo dhclient ``` ## Configurer un DNS statique en client DHCP Dans certaines situations, il peut être nécessaire d'utiliser un serveur DNS différent de celui automatiquement attribué par le serveur DHCP. On peut par exemple utiliser cette méthode si l'on souhaite : - **Cas 1** : Remplacer le DNS obtenu depuis le serveur DHCP par un DNS personnalisé. - **Cas 2** : Utiliser un DNS primaire personnalisé et les DNS du DHCP en secondaire (solution de secours). > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Le client DHCP par défaut sous Debian (**dhclient**) propose des directives qui permettent d’ajouter avant (**prepend**), après (**append**), ou de remplacer (**supersede**) des options DHCP reçues par le client.</span> Pour la démonstration ci-dessous, nous partirons du principe que la configuration DNS actuelle sur ma machine est la suivante : ![[_img-kb-lnx-network-config-ip.png]] ### Cas 1 : Remplacer le DNS obtenu par un DNS personnalisé Cette solution peut être utile dans différentes situations, par exemple : - Si l'option `domain-name-server` n'est pas configurée dans l'étendue DHCP. - Si l'on souhaite configurer un DNS statique tout en conservant une adresse IP dynamique. Dans notre cas, nous décidons de remplacer le serveur DNS "*10.0.2.3*" obtenu dans les options DHCP par les serveurs OpenDNS "*208.67.222.222*" et "*208.67.220.220*". Pour appliquer ces configurations éditer le fichier `dhclient.conf` : ``` sudo nano /etc/dhcp/dhclient.conf ``` La directive `supersede` permet de remplacer complètement les DNS obtenus via DHCP par les serveurs DNS personnalisés. Ci-dessous, nous utiliserons les serveurs OpenDNS : ``` supersede domain-name-servers 208.67.222.222, 208.67.220.220; ``` Pour finir, renouvelez votre bail DHCP et constater la prise en compte des modifications dans le fichier `resolv.conf` : ``` sudo dhclient -r && sudo dhclient ``` La configuration DNS active n'utilise plus le serveur DNS fourni par le DHCP, mais uniquement les serveurs OpenDNS. La sortie de commande `cat /etc/resolv.conf` devrait à présent ressembler à cela : ![[_img-kb-lnx-network-config-ip-1.png]] ### Cas 2 : Utiliser un DNS statique primaire personnalisé et les DNS du DHCP en secondaire Cette solution peut être utile pour utiliser un serveur DNS primaire personnalisé tout en conservant le serveur DNS obtenus par DHCP en secondaire. Dans notre cas, nous décidons d'utiliser les serveurs OpenDNS "*208.67.222.222*" (primaire), "*208.67.220.220*" (secondaire), et de conserver le serveur DNS obtenu par DHCP "*10.0.2.3*" 3ème position. Pour appliquer ces configurations éditer le fichier `dhclient.conf` : ``` sudo nano /etc/dhcp/dhclient.conf ``` Ajouter la directive `prepend` permettant d’utiliser les DNS obtenus via DHCP uniquement en cas d’erreur d’accès à nos DNS personnalisés d'OpenDNS : ``` prepend domain-name-servers 208.67.222.222, 208.67.220.220; ``` Pour finir, renouvelez votre bail DHCP et constater la prise en compte des modifications DNS dans le fichier `resolv.conf` : ``` sudo dhclient -r && sudo dhclient ``` La configuration DNS active utilise à présent en priorité les serveur OpenDNS et en dernier recours le proposé par le serveur DHCP. La sortie de commande `cat /etc/resolv.conf` devrait à présent ressembler à cela : ![[_img-kb-lnx-network-config-ip-2.png]] # Conclusion Vous êtes à présent en mesure de configurer les interfaces réseau d'une machine Debian selon votre besoin en IP statique ou dynamique. ## Références - Wiki Debian : [NetworkConfiguration](https://wiki.debian.org/fr/NetworkConfiguration) - IT-CONNECT : - [Comment configurer une IP statique sur Debian 11 ?](https://www.it-connect.fr/comment-configurer-une-adresse-ip-fixe-sur-debian-11/) - [Comment renouveller son adresse IP avec dhclient sous Linux ?](https://www.it-connect.fr/linux-comment-forcer-le-renouvellement-dadresse-ip-dhcp-avec-dhclient/)