Utilisation de systemd pour créer une IP statique et un pont

Paramétrer le Raspberry Pi B/B+ pour se connecter via Ethernet ou une clé WiFi USB

Modérateurs : Francois, maxty01

Répondre
pat499
Messages : 4
Enregistré le : sam. 3 déc. 2016 21:54

Utilisation de systemd pour créer une IP statique et un pont

Message par pat499 » dim. 8 déc. 2019 23:09

Je partage mon expérience sur la réalisation d'un pont réseau en utilisant systemd. Pour cette expérimentation, j'ai créé un pont br0 auquel est connecté le port Ethernet eth0. Ça fonctionne nickel. Je n'ai pas connecté le port WiFi à ce pont mais cela ne devrait pas poser de problème particulier.

Je suis parti de la distribution Raspbian Buster Lite, celle sans interface graphique. Toutes les manips ont été faites depuis un autre ordi avec une connexion SSH, le Raspberry étant connecté à mon réseau local sur un port de ma box.

1 - La gestion du réseau par systemd est normalement inactive. La commande suivante permet de le confirmer
$ systemctl is-active systemd-networkd

2 - La configuration réseau étant gérée par /etc/network/interfaces, renomer le fichier interfaces permet simplement d'inhiber sa configuration
$ sudo mv /etc/network/interfaces /etc/network/interfaces.save

3 - C'est le pont qui est le périphérique réseau, il faut donc empêcher les ports eth0 et wlan0 de recevoir des adresses IP attribuées par le client DHCP sur le Raspberry Pi. Il faut faire de même pour le pont br0 qui sera en IP statique
Editer /etc/dhcpcd.conf et ajouter les trois lignes avant les lignes interfaces
denyinterfaces wlan0
denyinterfaces eth0
denyinterfaces br0

4 - Tout d'abord, il faut définir le périphérique réseau virtuel à l'aide d'un fichier.netdev.
Editer /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge
MACAddress=b8:27:eb:92:24:fe
Note : systemd-networkd peut attribuer une adresse MAC différente de celle de l'interface physique d'accès au pont. Cela peut causer des problèmes de connexion si votre fournisseur de services utilise une sorte de filtre MAC lors du routage de votre trafic. Pour contourner ces problèmes, il suffit d'attribuer l'adresse MAC du port Ethernet au pont MACAddress=b8:27:eb:92:24:fe. De mon côté, ça fonctionne sans

5 - Maintenant, il suffit de connecter le pont au port Ethernet en créant un fichier .network.
Editer /etc/systemd/network/bridge-br0-slave.network
[Match]
Name=eth0

[Network]
Bridge=br0

6 - Pour avoir un pont avec une IP statique, éditer le fichier /etc/systemd/network/bridge-br0.network
[Match]
Name=br0

[Network]
Address=192.168.0.100/24
Gateway=192.168.0.1
DNS=89.2.0.1
DNS=89.2.0.2

7 - Activer et démmarrer le service systemd-networkd et le pont devrait être actif
$ sudo systemctl enable systemd-networkd
$ sudo systemctl restart systemd-networkd

pat499
Messages : 4
Enregistré le : sam. 3 déc. 2016 21:54

Re: Utilisation de systemd pour créer une IP statique et un pont

Message par pat499 » sam. 10 avr. 2021 19:55

J'ai poursuivi mon expérimentation en ajoutant le port Wifi au pont. Le but est de créer un point d'accès wifi pour se connecter à Internet au travers d'une box : [Box]--eth0--[Raspberry]--wlan0--[Smartphone]

1 - Vérification du support du mode AP (Access Point):
$ iw list
C'est bon, la sortie indique AP à la section Supported interface modes

2 - Scan des canaux wifi pour sélectionner un canal libre, voir l'article sur wikipédia https://fr.wikipedia.org/wiki/Liste_des_canaux_Wi-Fi.
Activation de la partie radio du Wifi
$ sudo rfkill unblock wifi
Activation de la connexion Wifi
$ sudo ifconfig wlan0 up
Scan des canaux wifi
$ sudo iwlist wlan0 scan
Désactivation du wifi
$ sudo ifconfig wlan0 down

3 - Installation du paquet hostpad
$ sudo apt install hostapd
Job for hostapd.service failed because the control process exited with error code.
See "systemctl status hostapd.service" and "journalctl -xe" for details.
Le message renvoyé par journalctl est "Unit hostapd.service is masked". Il faut donc oter le masque et activer le service :
$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd

4 - Configuration du fichier /etc/hostapd/hostapd.conf à partir du fichier /usr/share/doc/hostapd/examples/hostapd.conf. Attention, pas de # en fin de ligne ni d'espace (eg 'driver=nl80211 ' ou 'driver=nl80211 # commentaire'). Ci-dessous ma configuration:
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=nom du point d'accès
country_code=FR
country3=0x49
ieee80211d=1
hw_mode=g
channel=6
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
ieee80211n=1
wpa=2
wpa_passphrase=mot de passe
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

5 - Test de la config hostapd
$ sudo hostapd -dd /etc/hostapd/hostapd.conf

6 - Sécuriser le fichier
$ sudo chmod 600 /etc/hostapd/hostapd.conf

7 - Editer /etc/default/hostapd pour démarrer hostapd au démarrage
DAEMON_CONF="/etc/hostapd/hostapd.conf"

8 - Relancer le service
$ sudo service hostapd restart

9 - Examiner les journaux
$ sudo less /var/log/daemon.log|grep hostapd

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Utilisation de systemd pour créer une IP statique et un pont

Message par Artemus24 » dim. 25 avr. 2021 16:22

Salut pat499.

Qu'est-ce qu'un pont réseau (ou bridge en anglais) ?

Un pont est ce qui permet de relier un sous-réseau à un autre sous-réseau à travers les couches liaisons du modèle OSI (Open System Interconnect).
Quand la distance entre le client et le serveur (disons le routeur ou la box) est trop grande, il faut dans ce cas amplifier le signal.
De ce fait, un pont est un répéteur.

Il faut savoir que les deux sous-réseaux sont deux branches du même réseau.
Le pont n'a pas vocation à attribuer des adresses IP.
C'est le rôle du routeur (ou si tu préfères ta box et en particulier le serveur DHCP).
Il est donc normal de laisser passer les demandes d'attribution d'adresses IP fixe vers le serveur DHCP.

Un point d'accès WIFI est un pont, puisque celui-ci est relié à la box par un câble éthernet. Un répéteur WIFI est aussi un pont.

Le pont se comporte plutôt comme un commutateur (ou switch) et non comme un concentrateur (ou hub).
Tu peux faire un filtrage sur les adresses MAC en utilisant iptables.

La configuration du point d'accès wifi se fait à l'aide de l'utilitaire "Hostapd".
Voici le lien vers la documentation du site officiel Raspberry, qui explique comment configurer un pont.
--> https://www.raspberrypi.org/documentati ... bridged.md

Maintenant pourquoi se contenter d'un pont quand tu peux transformer ta raspberry en routeur.
C'est un peu plus compliqué puisqu'il faut installer "DSNMASQ".

J'ai traité le sujet dans ce lien, en 2018.
J'aurai dû créer un didacticiel dans le forum "tutoriel".

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Le réseau sur le Raspberry Pï »