Le pont n'obtient pas IP via DHCP au démarrage

8

J'exécute CentOS 7. Je n'exécute pas NetworkManager et je l'ai en fait désinstallé.

Mon système est censé acquérir une adresse IPv4 via DHCP br0au démarrage. Cependant, lorsque je me connecte, il n'a pas d'adresse.

Ma configuration:

# pwd
/etc/sysconfig/network-scripts

# cat ifcfg-enp5s0 
DEVICE=enp5s0
ONBOOT="yes"
BRIDGE=br0

# cat ifcfg-br0 
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=dhcp
STP=on
DELAY=0

Notez que je n'ai pas configuré ce pont manuellement; virt-managerl'a fait quand j'ai ajouté br0sur cette boîte de dialogue:

Capture d'écran de virt-manager montrant br0 dans l'onglet Interfaces réseau

Pertinent journalctl --boot | grep '\(\<br0\>\|enp5s0\)'et contextuel:

Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): enp5s0: link is not ready
Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: device enp5s0 entered promiscuous mode
Jan 08 21:04:32 jonathon-centos7 network[947]: Bringing up interface enp5s0:  [  OK  ]
...
Jan 08 21:04:32 jonathon-centos7 network[947]: Bringing up interface br0:
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): br0: link is not ready
...
Jan 08 21:04:34 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link up
Jan 08 21:04:34 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): enp5s0: link becomes ready
Jan 08 21:04:34 jonathon-centos7 kernel: br0: port 1(enp5s0) entered listening state
Jan 08 21:04:34 jonathon-centos7 kernel: br0: port 1(enp5s0) entered listening state
//// (Note: 2 second delay here, with no other events)
Jan 08 21:04:36 jonathon-centos7 avahi-daemon[957]: Registering new address record for fe80::f66d:4ff:fe3b:c24e on enp5s0.*.
Jan 08 21:04:36 jonathon-centos7 kernel: br0: port 1(enp5s0) entered learning state
///// (Too soon!)
Jan 08 21:04:38 jonathon-centos7 network[947]: Determining IP information for br0... failed; no link present.  Check cable?
Jan 08 21:04:38 jonathon-centos7 network[947]: [FAILED]
Jan 08 21:04:38 jonathon-centos7 systemd[1]: network.service: control process exited, code=exited status=1
Jan 08 21:04:38 jonathon-centos7 systemd[1]: Failed to start LSB: Bring up/down networking.
Jan 08 21:04:38 jonathon-centos7 systemd[1]: Unit network.service entered failed state.
...
Jan 08 21:04:38 jonathon-centos7 kernel: br0: topology change detected, propagating
Jan 08 21:04:38 jonathon-centos7 kernel: br0: port 1(enp5s0) entered forwarding state
Jan 08 21:04:38 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): br0: link becomes ready
Jan 08 21:04:39 jonathon-centos7 avahi-daemon[957]: Registering new address record for fe80::f66d:4ff:fe3b:c24e on br0.*.
Jan 08 21:04:41 jonathon-centos7 avahi-daemon[957]: Registering new address record for 2605:a000:1315:8119:f66d:4ff:fe3b:c24e on br0.*.
Jan 08 21:04:41 jonathon-centos7 avahi-daemon[957]: Withdrawing address record for fe80::f66d:4ff:fe3b:c24e on br0.

///// (Here's where I entered `ifup br0`)
Jan 08 22:43:30 jonathon-centos7 dhclient[5009]: DHCPDISCOVER on br0 to 255.255.255.255 port 67 interval 6 (xid=0x25f649b7)
Jan 08 22:43:31 jonathon-centos7 dhclient[5009]: DHCPREQUEST on br0 to 255.255.255.255 port 67 (xid=0x25f649b7)
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: Joining mDNS multicast group on interface br0.IPv4 with address 10.0.1.128.
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: New relevant interface br0.IPv4 for mDNS.
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: Registering new address record for 10.0.1.128 on br0.IPv4.
Jan 08 23:43:17 jonathon-centos7 dhclient[5124]: DHCPREQUEST on br0 to 10.0.1.1 port 67 (xid=0x25f649b7)

Une fois que le système a démarré et que je suis connecté, je peux ouvrir un terminal et:

# ifup br0
set forward delay failed: Numerical result out of range

Determining IP information for br0... done.

Et puis je suis connecté à mon réseau.

Pourquoi ne puis-je pas obtenir une adresse IP br0au démarrage?

En relation:

Remarques:

  • brctl showstp br0indique que le délai de transmission est réglé sur 2,00. brctl setfd br0 0affiche la même erreur que ifup br0. Il semble que virt-manager ait spécifié un invalide DELAY=0pour br0.
  • Après avoir trouvé les entrées importantes dans les journaux, il semble que systemdtente d'obtenir une adresse IP br0avant qu'il ne soit entré dans l'état de transfert.
  • J'ai ouvert le bug 8086 sur le bugtracker de CentOS.
Jonathon Reinhart
la source
1
Mise à jour : Le retrait STP=yesde ma configuration me permet de gagner cette condition de course.
Jonathon Reinhart

Réponses:

1

Votre pont n'est pas contrôlé par les scripts de réseau, il est contrôlé par libvirt. Le pont devrait apparaître lorsque le service libvirtd démarre.

Je ne courrais pas comme ça. Je ferais le pont contrôlé par le réseau initscript, et je n'aurais pas de pont dans la configuration libvirt.

Les fichiers ifcfg que vous avez maintenant sont très bien. Supprimez simplement la configuration de libvirt, assurez-vous que vous avez toujours ces fichiers, puischkconfig network on

Oui, chkconfig fonctionne sur EL7.

suprjami
la source
1
"Supprimez simplement la configuration de libvirt," Comment faire? Pourquoi virt-manager a-t-il pu créer si facilement une configuration aussi brisée?
Jonathon Reinhart
0

Votre lien physique n'est pas établi lorsque votre pont démarre. Ajoutez un délai à votre interface physique.

Nils
la source