Bridge erhält beim Booten keine IP über DHCP

8

Ich verwende CentOS 7. Ich verwende NetworkManager nicht und habe es tatsächlich deinstalliert.

Mein System soll br0beim Booten eine IPv4-Adresse über DHCP erhalten . Wenn ich mich anmelde, hat es jedoch keine Adresse.

Meine Konfiguration:

# 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

Beachten Sie, dass ich diese Bridge nicht manuell konfiguriert habe. virt-managertat dies, als ich br0diesen Dialog hinzufügte :

virt-manager Screenshot mit br0 auf der Registerkarte Netzwerkschnittstellen

Relevant journalctl --boot | grep '\(\<br0\>\|enp5s0\)'und Kontext:

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)

Nachdem das System gestartet und ich angemeldet bin, kann ich ein Terminal öffnen und:

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

Determining IP information for br0... done.

Und dann bin ich mit meinem Netzwerk verbunden.

Warum kann ich br0beim Booten keine IP erhalten ?

Verbunden:

Anmerkungen:

  • brctl showstp br0zeigt, dass die Vorwärtsverzögerung auf 2,00 eingestellt ist. brctl setfd br0 0zeigt den gleichen Fehler wie ifup br0. Es scheint, dass virt-manager ein ungültiges DELAY=0für angegeben hat br0.
  • Nachdem Sie die wichtigen Einträge in den Protokollen gefunden haben, scheint es, dass systemdversucht wird, eine IP zu erhalten, br0bevor sie in den Weiterleitungsstatus eingetreten ist.
  • Ich habe den Fehler 8086 im CentOS-Bugtracker geöffnet .
Jonathon Reinhart
quelle
1
Update : Durch Entfernen STP=yesaus meiner Konfiguration kann ich diese Rennbedingung gewinnen.
Jonathon Reinhart

Antworten:

1

Ihre Bridge wird nicht von den Netzwerk-Initskripten gesteuert, sondern von libvirt. Die Bridge sollte hochgefahren werden, wenn der libvirtd-Dienst hochgefahren wird.

Ich würde nicht so rennen. Ich würde die Brücke vom Netzwerk initscript steuern lassen und keine Brücke in der libvirt-Konfiguration haben.

Die ifcfg-Dateien, die Sie jetzt haben, sind in Ordnung. Entfernen Sie einfach die Konfiguration aus libvirt und stellen Sie sicher, dass Sie diese Dateien noch habenchkconfig network on

Ja, chkconfig funktioniert auf EL7.

suprjami
quelle
1
"Entfernen Sie einfach die Konfiguration aus libvirt." Wie mache ich das? Warum konnte virt-manager so einfach ein so kaputtes Setup erstellen?
Jonathon Reinhart
0

Ihre physische Verbindung ist nicht aktiv, wenn Ihre Brücke startet. Fügen Sie Ihrer physischen Schnittstelle eine Verzögerung hinzu.

Nils
quelle