Passerelle Pi : « RTNETLINK answers: File exists » sur ifup eth0 et coupures keepalive après le démarrage
Traduit de English par IA ·
Premier message, je lis ce forum depuis un moment.Nous avons construit notre propre passerelle sur un Raspberry Pi 3B+ (Raspberry Pi OS Bullseye) pour un petit poste électrique : elle lit trois compteurs Modbus RTU et les publie sur v1/gw/telemetry. Le LAN du poste n’a pas de DHCP, donc eth0 a besoin d’une adresse statique. J’ai ajouté ceci dans /etc/network/interfaces :
auto eth0
iface eth0 inet static
address 10.40.2.20
netmask 255.255.255.0
gateway 10.40.2.1
dns-nameservers 10.40.2.1
Après un redémarrage, ça marche parfois et parfois non. Quand ça ne marche pas, sudo ifup eth0 affiche :
RTNETLINK answers: File exists
ifup: failed to bring up eth0
Dans Hermetry, l’onglet Log de la passerelle affiche une déconnexion keepalive_timeout à chaque démarrage, puis elle se reconnecte quelques minutes plus tard, ou pas du tout tant que je ne me connecte pas sur site. ip addr affiche parfois deux adresses sur eth0 : la statique et une 169.254.
First post, I have been reading here for a while.
We built our own gateway on a Raspberry Pi 3B+ (Raspberry Pi OS Bullseye) for a small substation: it reads three Modbus RTU meters and publishes them on v1/gw/telemetry. The substation LAN has no DHCP, so eth0 needs a static address. I added this to /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 10.40.2.20
netmask 255.255.255.0
gateway 10.40.2.1
dns-nameservers 10.40.2.1
After a reboot it sometimes works and sometimes not. When it does not, sudo ifup eth0 says:
RTNETLINK answers: File exists
ifup: failed to bring up eth0
In Hermetry the gateway’s Log tab shows a keepalive_timeout disconnect around every boot and then it reconnects some minutes later, or not at all until I log in on site. ip addr sometimes shows two addresses on eth0, the static one and a 169.254 one.
Traduit de English par IA ·
Avez-vous essayé d’abord ifdown, puis ifup ?
Did you try ifdown first and then ifup?
Traduit de English par IA ·
Oui, ifdown indique interface eth0 not configured et ifup échoue de la même manière ensuite.
Yes, ifdown says interface eth0 not configured and ifup fails the same way afterwards.
Traduit de English par IA ·
Bullseye utilise dhcpcd pour la mise en réseau. /etc/network/interfaces est l’ancienne méthode, je ne mélangerais pas les deux.
Bullseye uses dhcpcd for networking. /etc/network/interfaces is the old way, I would not mix them.
Traduit de English par IA ·
Daniel a raison. J’ai rencontré exactement ce problème sur une Pi d’une station de pompage l’an dernier. Deux éléments configurent eth0 : dhcpcd démarre au boot, ne trouve aucun serveur DHCP, attribue au port une adresse link-local 169.254 ainsi que des routes, puis ifup tente d’ajouter sa propre adresse et sa route par défaut. La route existe déjà, donc le noyau répond « File exists » et ifup abandonne. Selon celui qui gagne la course au démarrage, votre passerelle sort ou ne sort pas.Choisissez-en un. Sous Bullseye, cela signifie dhcpcd. Supprimez le bloc eth0 de /etc/network/interfaces (le fichier ne doit plus contenir que la ligne source) et placez la configuration statique dans /etc/dhcpcd.conf :
interface eth0
static ip_address=10.40.2.20/24
static routers=10.40.2.1
static domain_name_servers=10.40.2.1
noipv4ll
Nettoyez ensuite sans redémarrer :
sudo ip addr flush dev eth0
sudo systemctl restart dhcpcd
ip addr show eth0
noipv4ll empêche l’apparition de l’adresse 169.254. Si vous passez plus tard à Bookworm, dhcpcd n’est plus présent et vous faites la même chose avec nmcli, notez-le donc.
Daniel has it. I hit exactly this on a pumping station Pi last year. Two things are configuring eth0: dhcpcd starts at boot, finds no DHCP server and gives the port a 169.254 link-local address plus routes, and then ifup tries to add its own address and default route. The route is already there, so the kernel answers « File exists » and ifup gives up. Depending on which one wins the race at boot, your gateway gets out or not.
Pick one. On Bullseye that means dhcpcd. Remove the eth0 block from /etc/network/interfaces (leave the file with only the source line) and put the static setup in /etc/dhcpcd.conf:
interface eth0
static ip_address=10.40.2.20/24
static routers=10.40.2.1
static domain_name_servers=10.40.2.1
noipv4ll
Then clean up without a reboot:
sudo ip addr flush dev eth0
sudo systemctl restart dhcpcd
ip addr show eth0
noipv4ll stops the 169.254 address. If you move to Bookworm later, dhcpcd is gone and you do the same with nmcli, so keep a note of that.
Traduit de English par IA ·
Je ne savais pas que les versions de Pi OS avaient changé à ce sujet, bon à savoir.
Didn’t know the Pi OS versions changed this, good to know.
Traduit de English par IA ·
Résolu. Le fichier interfaces a été nettoyé, la configuration statique est dans dhcpcd.conf avec noipv4ll. J’ai redémarré le Pi dix fois de suite ce matin, et la passerelle s’est connectée en quelques secondes à chaque fois. L’onglet Log n’affiche désormais qu’une seule connexion propre par démarrage.
Fixed. Interfaces file cleaned, static config in dhcpcd.conf with noipv4ll, rebooted the Pi ten times in a row this morning and the gateway connected within a few seconds every time. The Log tab now shows one clean connect per boot.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

