Forcer une adresse IP

Forcer l’adresse IP statique du Raspberry Pi en ligne de commande

La configuration des adresses IP se fait dans le fichier /ect/dhcpcd.conf. Plusieurs exemples sont commentés dans le fichier. Il suffit donc, soit de supprimer le # du commentaire, soit de recopier et adapter les exemples.
apl@APLRASPI01:~ $sudo nano /etc/dhcpcd.conf
apl@APLRASPI01:~ $
Les données à renseigner sont les suivantes :
  • Le service à modifier (eth0 si le Raspberry Pi est connecté physiquement au routeur grâce à un cable RJ45, wlan0 si le Raspberry Pi est connecté en Wifi).
  • L’adresse IP fixe souhaitée. Elle doit se trouver dans le domaine adressable du routeur et hors de la page allouable dynamiquement, par exemple 192.168.1.122.
  • L’adresse IP du routeur. En général, pour une box, il s’agit de 192.168.1.1.
  • L’adresse IP du server DNS. En général, pour une box, ils’agit de la même adresse que la précédente.
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

interface wlan0
static ip_address=192.168.1.122/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
Après avoir rebooter le Raspberry Pi, celui-ci n'interrogera plus le DHCP. Il considérera que son adresse IP est 192.168.1.122.

Forcer l’adresse IP du Raspberry Pi avec VNC

Si le Rasberry Pi fonctionne en mode "desktop", il peut être plus facile d'utiliser l'IHM pour faire cette opération. Les données à renseigner sont les mêmes que pour le mode ligne de commande.

  • Faire un clic-droit sur l’icône du réseau en haut à droite de l’écran.
  • Lancer la commande Wireless & Wired Network Settings.
Dans Network Preferences :
  • Choisir interface puis wlan0 (pour le WiFi ou eth0 si le Rasberry est physiquement connecté au routeur).
  • Cocher Automatically configure empty options.
  • Dans IPv4 Address, taper une adresse IP correspondant à une adresse fixe, par exemple 192.168.1.122/24.
  • Dans Router, taper 192.168.1.1.
  • Dans DNS Server, taper 192.168.1.1.
  • Les autres zones peuvent être laissée vides puisque la case Automatically configure empty options est cochée.
  • Cliquer les boutons [Appliquer] puis [Fermer]

Paramétrer le routeur

Maintenant, en WiFi, le Raspberry Pi sera toujours connecté avec la même adresse IP, à savoir 192.168.1.122. Mais il ne faudrait pas que le service DHCP du routeur affecte cette adresse à un autre appareil. C’est pourquoi il faut paramétrer le routeur pour que les adresses allouées dynamiquement, ne le soit que dans une certaine plage hors de laquelle se trouve l’adresse fixe choisie.
Le paramétrage du routeur peut différer d'une box à l'autre. En général, la box expose une application Web accessible à l'adresse de celle-ci. Il suffit de taper cette adresse dans un navigateur pour accéder à l'IHM de la box.
Dans l'exemple ci-dessous, nous utilisons la Livebox d'Orange :
  • Choisir l'onglet Configuration avancée.

  • Choisir l'onglet DHCP.
  • Dans serveur DHCP IPv4, vérifier que le bouton activer est coché.
  • Dans adresse IP de la Livebox, vérifier l'adresse IP de la LiveBox.
  • Dans masque de sous-réseau du LAN, taper 255.255.255.0.
  • Dans adresseIP de début, taper 192.168.1.10.
  • Dans adresseIP de fin, taper 192.168.1.100.
  • Cliquer le bouton [enregistrer].
Avec ces paramètres, le serveur DHCP de la LiveBox ne pourra délivrer des adresses dynamiques que dans la plage allant de 192.168.1.10 à 192.168.1.100.

Paramétrer les adresses statiques directement dans le routeur

A l'usage, paramétrer une adresse statique sur un appareil n'est pas forcément une bonne idée. En effet, si l'appareil est un appareil mobile, connecter celui-ci sur un autre réseau pourrait devenir impossible, si le sous réseau privé n'est pas paramétré à l'identique.
La solution consiste à laisser l'appareil faire sa requête DHCP pour obtenir une adresse IP et laisser au routeur l'initiative de délivrer une adresse fixe. Dans ce cas, si l'appareil est déplacé sur un autre réseau, il demandera aussi une adresse IP au serveur DHCP de ce réseau.
Mais pour que cela soit possible, il faut que le serveur DHCP puisse identifier à coup sûr, quel est l'appareil qui fait la requête pour pouvoir lui délivrer toujours le même adresse IP.
Heureusement chaque appareil possède un identifiant unique dans le monde entier, appelé adresse MAC, constitué de six octets exprimés en hexadécimal.

Pour connaitre l'adresse MAC du Raspberry Pi on utilise la commande ifconfig :
apl@APLRASPI01:~ $ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::54bc:a4fd:479b:c5ab  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:6a:5c:f7  txqueuelen 1000  (Ethernet)
        RX packets 6053  bytes 347457 (339.3 KiB)
        RX errors 0  dropped 432  overruns 0  frame 0
        TX packets 492  bytes 33493 (32.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 9  bytes 524 (524.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 524 (524.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.122  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::e4ad:f87:5cbc:fe80  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:5f:09:a2  txqueuelen 1000  (Ethernet)
        RX packets 2134  bytes 143845 (140.4 KiB)
        RX errors 0  dropped 633  overruns 0  frame 0
        TX packets 91  bytes 9526 (9.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

apl@APLRASPI01:~ $
Le Raspberry Pi étant équipé de deux accessoires permettant de se connecter à un réseau, il y deux adresses MAC, respectivement b8:27:eb:6a:5c:f7 pour le connecteur RJ45 (eth0) et b8:27:eb:5f:09:a2 pour la puce WiFi (wlan0).

  • Choisir l'onglet DHCP. Pour la LiveBox, l'interface des IP statiques se situe sur la même page que précédemment.
  • Dans nom, choisir l'appareil à connecter (ici raspi01-1).
  • Dans adresse IP, taper l'adresse IP  statique souhaitée pour l'appareil (192.168.1.122).
  • Dans adresse MAC, taper l'adresse MAC de l'appareil pour le type de connexion souhaité (b8:27:eb:5f:09:a2 pour le WiFi).
  • Cliquer le bouton [ajouter].
Attention ! Pour préciser les choses, lorsque les adresses IP sont paramétrées sur le routeur, les modifications du fichier /etc/dhcpcd.conf décrites précédemment, que ce soit en mode "desktop"ou en mode ligne de commande, sont inutiles.

Commentaires

Posts les plus consultés de ce blog

Gérer la mise en veille

Configurer VSCode pour programmer et déboguer à distance sur Raspberry Pi

Créer un nouvel utilisateur Raspbian