Formation PUB420 : Système domotique DIY, 2020 L'unité centrale du système domotique (Raspberry Pi)

2.9 Donner une adresse IP statique au Raspberry Pi


Pour avoir un fonctionnement optimal, la boîte domotique, par exemple un Raspberry Pi, doit avoir une adresse IP statique (aussi appelée adresse IP fixe) dans le réseau.

Si la boîte domotique a une adresse IP dynamique fournie par un serveur DHCP, comme c'est le cas par défaut quand vous la branchez à votre réseau, cette adresse pourrait être appelée à changer. Une fois l'adresse changée, vous ne pourrez plus vous connecter à distance à moins d'avoir acccès au Raspberry Pi ou au routeur pour retrouver l'adresse IP.

Une adresse IP fixe permettra également de préserver le bon fonctionnement du système après un redémarrage du réseau (j'ai connu des problèmes de ce type avec mon Raspberry Pi de même qu'avec mes haut-parleurs Alexa, le tout a été réglé par des adresses IP statiques).

Dans cette fiche :

Retrouver les serveurs de noms actuels

Lors de la configuration d'une adresse IP statique, vous aurez besoin d'entrer l'adresse IP des serveurs de noms de votre réseau.

Sous Windows, vous pouvez connaître les serveurs de noms actuellements utilisés pour votre ordinateur à l'aide de cette commande :

Terminal Windows

ipconfig /all

Résultat à l'écran

...
Adresse IPv4............: 192.168.1.145 (préféré)
...
Passerelle par défaut...: 192.168.1.1
Serveur DHCP............: 999.999.999.999
                          999.999.999.999
...

Vous pouvez également obtenir l'information comme suit :

Terminal Windows

Get-NetIPConfiguration

Résultat à l'écran

...
IPv4Address          : 192.168.1.145
...
IPv4DefaultGateway   : 192.168.1.1
DNSServer            : 999.999.999.999
                       999.999.999.999
...

Sous Mac, vous pouvez connaître les serveurs de noms à l'aide de la commande :

Terminal Mac

scutil --dns

Résultat à l'écran

resolver #1
  nameserver[0] : 999.999.999.999
  nameserver[1] : 999.999.999.999
...

Et sous Linux :

Terminal Linux

cat /etc/resolv.conf

Résultat à l'écran

# Generated by NetworkManager
search mondomaine.loc
nameserver 999.999.999.999
nameserver 999.999.999.999

Vérifier si votre système utilise NetworkManager

Depuis Raspberry Pi OS Bookworm (2023), la gestion du réseau est réalisée avec NetworkManager. Auparavant, elle était faite avec dhcpcd.

Pour vérifier si le système d'exploitation du Raspberry Pi utilise NetworkManager, entrez cette commande :

Terminal du Pi

nmcli device status

Résultat à l'écran

pi@raspberrypi:~ $ nmcli device status
DEVICE          TYPE       STATE                    CONNECTION
eth0            ethernet   connected                Wired connection 1
lo              loopback   connected (externally)   lo
wlan0           wifi       disconnected             --
p2p-dev-wlan0   wifi-p2p   disconnected             --

Dans la colonne STATE, si vous voyez connected ou disconnected, c'est que l'OS utilise NetworkManager.

Si vous voyez plutôt unmanaged, ou encore si la commande nmcli n'est pas reconnue, c'est que l'OS utilise un auytre système pour gérer le réseau. 

Si votre système n'utilise pas NetworkManager, référez-vous à la fiche « Configurer l'adresse IP statique du Raspberry Pi avec dhcpcd (Vous ne possédez pas les droits pour accéder à cette fiche.) ».

Configurer l'adresse IP statique sur le Pi avec NetworkManager

Avec NetworkManager, vous avez plusieurs options pour configurer une adresse IP statique.

Utilitaire nmtui

Il est possible d'effectuer les configurations réseau à l'aide de l'utilitaire nmtui (Network Manager Text UI).

Terminal

sudo nmtui

nmtui

Si vous sélectionnez Edit a connection, l'utilitaire vous présentera les connexions existantes et vous offrira la possiblité d'en créer de nouvelles.

nmtui

Pour donner une adresse IP statique à une configuration réseau, sélectionnez la configuration désirée puis modifiez la ligne IPv4 CONFIGURATION pour Manual.

Sélectionnez ensuite Show.

Voici un exemple de configuration d'adresse IP statique pour Wired connection 1. Référez-vous à la section sur nmcli pour les détails des informations à entrer.

nmtui

Commande nmcli

Pour configurer une adresse IP statique à l'aide de la commande nmcli :

  • Device : Vous pouvez laisser cette case à blanc. NetworkManager retrouvera automatiquement le nom du périphérique selon le type de connexion (Ethernet -> généralement eth0, Wi-Fi -> généralement wlan0).
  • ipv4.addresses : Entrez l'adresse IP statique suivie du masque de sous-réseau (dans l'exemple : /24 qui signifie que les 3 premiers octets sont le masque de sous-réseau).
  • ipv4.gateway : Entrez l'adresse IP locale du routeur. Avec un masque de sous-réseau 24, on entre les 3 premiers nombres de l'adresse IP, suivis généralement par le chiffre 1 (dans l'exemple : 192.168.1.1).
  • ipv4.dns : Entrez l'adresse IP du ou des serveurs de noms de domaine (en anglais : nameserver, DNS) de votre réseau suivies de 8.8.8.8 et de 8.8.4.4 (serveurs DNS de Google). Remarquez qu'avec nmcli, les adresses DNS doivent être séparées par des virgules.
Terminal

sudo nmcli connection modify "Wired connection 1" \
pv4.method "manual" \
ipv4.addresses "192.168.1.145/24" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "xxx.xxx.xxx.xxx,8.8.8.8,8.8.4.4"

Édition des fichiers de connexion

Les informations sur les connexions sont enregistrées dans des fichiers dont l'extension est .nmconnection.

Il est possible d'éditer directement ces fichiers. Notez que cette technique est plus complexe que les précédentes.

Pour y arriver :

  • Vérifiez quelles connexions réseau existent.
    Terminal

    nmcli con show

    On voit ici qu'il y a une configuration pour le réseau câblé (ethernet) puis une configuration pour le Wi-Fi.
    Résultat à l'écran

    pi@raspberrypi:~ $ nmcli con show
    NAME                  UUID                                    TYPE        DEVICE
    Wired connection 1    25d6bfa8-6c8c-3f8f-be53-516bece110e9    ethernet    eth0
    lo                    cfbfab11-be1b-448d-846e-23608dd88ed9    loopback    lo
    preconfigured         e8a78fe4-2969-4cd7-9b20-295f3f8bb529    wifi        --

  • Vérifiez quels fichiers de configuration existent.
    Terminal

    ls /etc/NetworkManager/system-connections

    Il pourrait y avoir plusieurs fichiers. Leur nom débutera par ce qui était dans la colonne NAME de la commande nmcli con show et se terminera par .nmconnection.

    On voit ici que seule la connection Wi-Fi a un seul fichier de configuration.

    Résultat à l'écran

    pi@raspberrypi:~ $ ls /etc/NetworkManager/system-connections
    preconfigured.nmconnection

  • Si vous désirez éditer un fichier de configuration qui n'existe pas, vous devez le créer à l'aide de cette commande.

    Remarquez que si le nom de la configuration comprend des espaces, il faut ajouter une barre oblique inverse devant chaque espace.

    Terminal

    sudo nmcli connection modify Wired\ connection\ 1 connection.autoconnect yes

  • Pour vous assurer que NetworkManager saura utiliser ce fichier pour configurer le réseau, entrez cette commande et assurez-vous que le chemin du fichier est /etc/NetworkManager/system-connection.
    Terminal

    nmcli -f NAME,UUID,FILENAME connection

    Résultat à l'écran

    pi@raspberrypi:~ $ nmcli -f NAME,UUID,FILENAME connection
    NAME                 UUID                                 FILENAME
    lo                   ee200fcc-dcb0-4976-a81d-65554b48c0b1 /run/NetworkManager/system-connections/lo.nmconnection
    preconfigured        a2aa2a5f-4bf6-46a0-9e40-fb70c86d610b /etc/NetworkManager/system-connections/preconfigured.nmconnection
    Wired connection 1   05e42c99-0c51-3798-aae9-e0246598d0ae /etc/NetworkManager/system-connections/Wired connection 1.nmconnection

  • Éditez le fichier qui correspond à la connexion câblée ou non, selon celle pour laquelle l'adresse IP statique doit être utiilsée. Rappel : le résultat de la commande nmcli con show fait le lien entre un nom de fichier et le type de réseau.
    Terminal

    sudo nano /etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection

  • Remplissez le fichier en respectant ces consignes :
    • Section [connection] :
      • id : la valeur qui apparaît correspond au nom du fichier sans l'extension.
      • uuid : la valeur qui apparaît correspond à l'identificateur unique (Universally Unique IDentifierUUID) qui apparaissait avec la commande nmcli con show.
      • type : ethernet ou wifi
    • Section [wifi] (sans fil seulement) :
      • mode : infrastructure
      • ssid : entrez le nom du réseau sans fil
    • Section [wifi-security] (sans fil seulement) :
      • key-mgmt : wpa-psk
      • psk : entrer le mot de passe du réseau sans fil en clair. Notez que certains outils permettent de générer une version cryptée du mot de passe.
    • Section [ipv4] :
      • address1 : Entrez l'adresse IP statique suivie du masque de sous-réseau suivi d'une virgule puis de l'adresse IP locale du routeur.
      • dns : Entrez l'adresse IP du ou des serveurs de noms de domaine de votre réseau suivies de 8.8.8.8 et de 8.8.4.4 (serveurs DNS de Google) . Dans le fichier de configuration, les différentes adresses doivent être séparées par un point-virgule.
      • method : Entez manual pour indiquer que l'adresse iP est statique. La valeur auto serait utilisée pour une adresse DHCP.

Exemple pour une connection câblée :

Fichier Wired connection 1.nmconnection

[connection]
id=Wired connection 1
uuid=25d6bfa8-6c8c-3f8f-be53-516bece110e9
type=ethernet

[ipv4]
address1=192.168.1.145/24,192.168.1.1
dns=xxx.xxx.xxx.xxx;8.8.8.8;8.8.4.4
method=manual

Exemple pour une connection Wi-Fi :

Fichier preconfigured.nmconnection

[connection]
id=preconfigured
uuid=e8a78fe4-2969-4cd7-9b20-295f3f8bb529
type=wifi

[wifi]
mode=infrastructure
ssid=xxxxxx

[wifi-security]
key-mgmt=wpa-psk
psk=xxxxxxxx

[ipv4]
address1=192.168.1.145/24,192.168.1.1
dns=xxx.xxx.xxx.xxx;8.8.8.8;8.8.4.4
method=manual

Pour enregistrer les modifications, appuyez sur Ctrl + X puis O (ou Y si votre OS est en anglais) pour enregistrer les modifications.

Redémarrez le Raspberry Pi.

Utiliser une adresse IP différente pour un autre réseau

Prenons le cas où vous utilisez un Raspberry Pi dans votre établissement scolaire puis vous le ramenez à votre domicile pour poursuivre vos travaux.

Il pourrait arriver que l'adresse IP statique utilisée à l'école ne soit pas compatible avec les configurations de votre réseau à la maison.

Ceci peut être géré en créant un fichier de configuration spécifique pour chaque environnement.

Au besoin, une configuraation pourrait avoir une adresse IP statique et l'autres, une adresse fournie par DHCP.

Pour créer un fichier de configuration, vous pouvez utiliser l'option Edit a connection puis Add dans l'utilitaire nmtui ou encore lancer cette commande en ajustant le nom de la connection (con-name) et le nom du réseau (ssid).

Terminal

sudo nmcli connection add type wifi con-name wifi-maison ssid "nom-du-reseau"

Pour un réseau câblé :

Terminal

sudo nmcli connection add type ethernet con-name cable-maison

Ceci créera un fichier wifi-maison.nmconnection ou cable-maison.nmconnection ou tout autre nom basé sur l'attribut con-name.

Peu importe dans quel dossier vous étiez lorsque vous avez passé la commande, le fichier sera créé dans le dossier /etc/NetworkManager/system-connections.

Vous pourrez ensuite compléter le fichier comme dans les exemples plus haut.

Activer une configuration pour se brancher à un réseau

Pour activer la configuration, vous pouvez utiliser l'option Activate a connection dans l'utilitaire nmtui ou encore entrer cette commande :

Terminal

sudo nmcli con up cable-maison

Attention : si vous avez deux fichiers qui donnent une adresse IP statique pour un réseau câblé, celui qui s'active par défaut pourrait être le dernier qui a été utilisé.

En effet, selon la documentation officielle de nm-settings-nmcli1 :

If multiple profiles are ready to autoconnect on the same device, the one with the better "connection.autoconnect-priority" is chosen. If the priorities are equal, then the most recently connected profile is activated. If the profiles were not connected earlier or their "connection.timestamp" is identical, the choice is undefined.

Il faut prendre certaines précautions lorsque les adresses IP des deux environnements sont incompatibles. Par exemple le format des adresses IP à l'école pourrait être 192.168.29.xxx et à la maison, 10.0.0.xxx.

Dans un tel cas, si la bonne configuration câblée n'est pas active lors du démarrage du Raspberry Pi, vous aurez besoin d'un écran et d'un clavier pour activer la configuration désirée puisque l'adresse IP active sera incompatible avec votre réseau, ce qui empêchera le branchement via SSH.

Par contre, pour une connexion Wi-Fi, c'est la connexion qui correspond au nom du réseau Wi-Fi disponible qui sera automatiquement activée. Vous pourrez donc vous brancher via SSH et donc, vous n'aurez pas besoin d'un écran ni d'un clavier à brancher au Raspberry Pi.

Revenir à une adresse IP fournie par DHCP

Si vous désirez modifier vos configurations pour revenir à une adresse IP fournie par le serveur DHCP, il suffit de modifier la ligne method dans la section [ipv4].

Fichier Fichier xxx.nmconnection

[ipv4]

method=auto

Lors du prochain redémarrage, il est fort probable que le Pi aura tout de même la même adresse IP puisque le serveur DHCP se rappellera de la dernière adresse fournie. Cependant, ceci n'est pas garanti alors sans l'adresse IP statique, vous devrez vérifier l'adresse IP en branchant un écran sur le Pi.

Configurer l'adresse IP statique en insérant la carte micro SD dans votre ordinateur

Il est possible de donner une adresse IP statique au Pi à partir de votre ordinateur sans que Raspberry Pi OS ne soit démarré. Ceci fonctionne autant pour les systèmes qui utilisent NetworkManager que pour ceux qui utilisent dhcpcd. Cette technique est pratique si vous n'avez pas d'écran à brancher au Pi.

Par contre, ceci ne devrait être utilisé que si vous n'avez pas accès à un écran puisque le temps de démarrage du Raspberry Pi sera toujours long tant que la configuration que vous vous apprêtez à faire sera en place. Une fois l'adresse IP statique correctement configurée et le Pi démarré, vous pourrez modifier cette configuration pour raccourcir le temps de démarrage, tel que mentionné au bas de la procédure.

Si vous insérez la carte micro SD directement dans votre ordinateur (Mac, Windows ou Linux), vous remarquerez que le dossier /etc n'y figure pas puisqu'il faut que Raspberry Pi OS soit en marche pour qu'il apparaisse.

Résultat à l'écran

MBPdeMonNom:~ monnom$ ls /Volumes/boot/

COPYING.linux fixup4cd.dat
LICENCE.broadcom fixup4db.dat
bcm2708-rpi-b-plus.dtb fixup4x.dat
bcm2708-rpi-b-rev1.dtb fixup_cd.dat
bcm2708-rpi-b.dtb fixup_db.dat
bcm2708-rpi-cm.dtb fixup_x.dat
bcm2708-rpi-zero-w.dtb issue.txt
bcm2708-rpi-zero.dtb kernel.img
bcm2709-rpi-2-b.dtb kernel7.img
bcm2710-rpi-2-b.dtb kernel7l.img
bcm2710-rpi-3-b-plus.dtb kernel8.img
bcm2710-rpi-3-b.dtb overlays
bcm2710-rpi-cm3.dtb start.elf
bcm2711-rpi-4-b.dtb start4.elf
bcm2711-rpi-cm4.dtb start4cd.elf
bootcode.bin start4db.elf
cmdline.txt start4x.elf
config.txt start_cd.elf
fixup.dat start_db.elf
fixup4.dat start_x.elf

Qu'à celà ne tienne, il est possible de donner une adresse statique au Pi en éditant le fichier cmdline.txt à l'aide de l'éditeur de votre choix. Pour ma part, j'aime travailler avec Geany.

Ce fichier contient une série de configurations qui seront lues lors du démarrage de Rarspberry Pi OS.

Je vous conseille de prendre copie du fichier avant de l'éditer. Ceci permettra de revenir à la version originale si jamais vos manipulations empêchent le bon fonctionnement de l'OS.

Voici le contenu initial de ce fichier.

Fichier cmdline.txt

console=serial0,115200 console=tty1 root=PARTUUID=58ce116e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles

Chaque configuration est séparée par un espace. Toutes les configurations doivent tenir sur une seule ligne.

Ajoutez simplement à la fin de cette ligne la configuration suivante en ajustant les informations requises au format :

ip=addresseIP::adresseIPLocaleRouteur:masqueSousReseau:HostNameDuPi:eth0:off

Par exemple :

Fichier cmdline.txt

ip=192.168.1.145::192.168.1.1:255.255.255.0:raspberrypi:eth0:off

Enregistrez le fichier puis retirez la carte micro SD de l'ordinateur de façon sécuritaire.

Insérez la carte dans le Pi et mettez-le sous tension.

Soyez patients : mon Pi a mis loooooongtemps (un peu plus de 2 minutes) avant de redémarrer après que j'aie modifié le fichier cmdline.txt.

Ce délai est normal.

Si vous ne souhaitez pas attendre à chaque redémarrage du Pi, branchez-vous via SSH puis configurez l'adresse IP statique à l'aide d'une autre méthode présentée dans cette fiche. Retirez ensuite la configuration du fichier cmdline.txt.

Configurer l'adresse IP statique sur le routeur

Personnellement, chez moi, je préfère travailler à partir du routeur. Ceci m'assure qu'il n'y aura aucun conflit d'adresses IP car le routeur sait que cette adresse est réservée pour le Pi.

Adresse MAC du Raspberry Pi

Si vous désirez configurer l'adresse IP statique à partir de votre routeur, vous aurez besoin de l'adresse MAC du Raspberry Pi.

L'adresse peut être trouvée à partir de l'interface de votre routeur qui liste les périphériques branchés mais parfois, il est difficile de déterminer quel périphérique est le Raspberry Pi.

Si vous avez un doute ou si vous préférez retrouver l'adresse MAC directement à partir du Pi, branchez un écran et un clavier au Raspberry Pi, ouvrez une fenêtre Terminal puis entrez cette commande :

Terminal

ifconfig

Si le Pi indique que la commande n'existe pas, vous devrez effectuer une installation supplémentaire :

Terminal

sudo apt install net-tools

Dans le résultat de ifconfig, vous obtiendrez un paragraphe par carte réseau. Les plus communes sont eth0 pour le réseau câblé et wlan0 pour le sans fil.

L'adresse MAC apparaîtra près du mot ether pour la carte que vous désirez utiliser (câblé ou sans fil). Elle est constituée de 6 nombres hexadécimaux séparés par des « : » (ex : b8:27:eb:b56:dc:a2).

Configuration

La technique précise pour configurer l'adresse statique dépendra de la marque du routeur. En gros, les étapes ressembleront à ceci :

  • Assurez-vous d'abord que le Pi soit connecté au réseau par un câble RJ45 ou via Wi-Fi, selon la technique qui sera utilisée pendant son fonctionnement normal.
  • Par mesure de sécurité, la plupart des routeurs ne permettent pas par défaut l'accès aux configurations via Wi-Fi. Si c'est le cas avec votre routeur, branchez l'ordinateur au routeur à l'aide d'un câble RJ45.
  • Sur votre ordinateur, ouvrez la page Web à l'adresse IP locale du routeur. Il s'agit généralement de 192.168.0.1 ou 192.168.1.1. Sur certains systèmes, il faut plutôt accéder au 10.0.0.1. En cas de doute, rendez-vous sur ce site : http://whatsmyrouterip.com/.
  • Selon votre routeur, vous aurez accès à une option de menu du genre
    • Connectivité / Réseau local / DHCP
    • ou Configuration / Configuration de base / Configuration du réseau / Paramètre de serveur DHCP
    • ou encore Mode Expert / Configuration / Serveur DHCP / Liste des clients
    • ou même tout simplement Connected Devices.

      Il y a autant d'organisation des options de menus qu'il y a de routeurs. Si vous ne trouvez pas l'endroit où effectuer la configuration, voyez le manuel de votre routeur.

  • Pour accéder aux configurations des adresses IP, vous devriez vous retrouver dans un des scénarios suivants :
    • Sur certains systèmes, un bouton devrait vous permettre d'ajouter manuellement une réservation de périphérique (autre appellation possible : Réservation DHCP). Vous devrez ensuite entrer l'adresse MAC du Raspberry Pi et l'adresse IP fixe que vous souhaitez lui assigner. L'adresse IP peut généralement être n'importe quoi dans la plage192.168.0.2 à 192.168.0.254 ou 192.168.1.2 à 192.168.1.254. Important : l'adresse utilisée ne doit pas être déjà attribuée à un autre élément du réseau.
    • Sur d'autres systèmes , on voit la liste des périphériques branchés au routeur.

      L'écran pourra ressembler à un de ceux-ci :

      Liste périphériques branchés

      Liste périphériques branchés

    • Il vous faut cocher le Raspberry Pi — après vous être assurés qu'il s'agit du bon périphérique à l'aide de l'adresee MAC — puis cliquer sur Ajouter une réservation DHCP (autre appellation possible : Réserver).

      D'autres système demandent de cliquer sur le bouton d'édition puis de cocher une case du genre Reserved IP.

      Le Pi apparaît désormais dans la liste des adresses réservées comme montré dans ces deux exemples.

      Adresse statique pour Raspberry Pi

      Adresse statique pour Raspberry Pi

      Note : vous pouvez effectuer une vérification supplémentaire pour vous assurer que vous avez donné une adresse IP statique au bon périphérique. Il suffit de comparer l'adresse IP du périphérique sélectionné avec celle donnée directement sur votre Raspberry Pi.

Vérifier si tout a fonctionné

Comme dans toute manipulation, il faut tester si on obtient le résultat escompté peu importe la technique utilisée.

Après le redémarrage, le Pi devrait avoir l'adresse IP qu'on lui a imposée.

La technique pour retrouver l'adresse IP du Pi est donnée sur cette fiche : Trouver l'adresse IP du Raspberry Pi

Source

1. « nm-settings-nmcli ». NetworkManager. https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/nm-settings-nmcli.html

Pour plus d'information

« Raspberry Pi ASAP Setup Guide - Assigning IP addresses ». GitHub. https://kr15h.github.io/RPi-Setup#titles.3.1

« RPi cmdline.txt ». elinux.org. https://elinux.org/RPi_cmdline.txt

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre