Utilisation de systemd pour créer une IP statique et un pont
Posté : 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
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