Ich hatte das gleiche Problem mit einer physischen Box, auf der Centos 7.3 x86_64 ausgeführt wurde, und konnte dieses Problem beheben, indem der physische Adapter zunächst auf einen anderen PCI-X-Steckplatz auf der Hauptplatine verschoben wurde und anschließend alle folgenden Schritte ausgeführt wurden:
Entfernen Sie die Konfigurationsdatei der Bridge-Schnittstelle:
rm -f /etc/sysconfig/network-scripts/ifcfg-br0
Entfernen Sie die Slave-Interface-Konfigurationsdatei:
rm -f /etc/sysconfig/network-scripts/ifcfg-enp6s0f0
Dabei war enp6s0f0 der ursprüngliche Name der Slave-Schnittstelle und die einzige Slave-Schnittstelle, die der Brücke br0 zugewiesen wurde
Stellen Sie sicher, dass Sie die ursprüngliche Brücke vollständig entfernen, um sicherzustellen, dass alle Spuren davon entfernt sind (brctl show). Die br0-Brückenschnittstelle sollte nicht aufgeführt werden.
Fahren Sie die Brücke herunter:
ifconfig br0 down
Den Sklaven herunterfahren:
ifdown enp6s0f0 ifconfig enp6s0f0 down
Stoppen Sie den Netzwerkdienst:
systemctl stop network.service
Entfernen Sie die Brücke ggf. manuell: (In meinem Fall war es das.)
Bevor die Bridge entfernt werden kann, müssen alle Slave-Schnittstellen von ihr entfernt werden. Sie können das Bridge Control-Dienstprogramm verwenden, um sie zu entfernen
brctl delif br0 enp6s0f0
Nachdem alle Slave-Schnittstellen entfernt wurden, kann die Bridge selbst entfernt werden.
brctl delbr br0
Stellen Sie sicher, dass keine verbleibenden Konfigurationsdateien auf br0 verweisen:
grep -i br0 /etc/sysconfig/network-scripts/ifcfg-*
Sollte keine Ergebnisse zurückgeben
In meinem Fall lautet der neue Schnittstellenname, der auf dem Verschieben der Karte um einen Steckplatz basiert, nun enp5s0f0.
Starten Sie die Schnittstelle und bestätigen Sie mit ethtool oder 'ip link', die melden soll, dass die Verbindung für die Schnittstelle erkannt wurde.
[root@phaser ~]# ifconfig enp5s0f0 up [root@phaser ~]# ethtool enp5s0f0 Settings for enp5s0f0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: on (auto) Supports Wake-on: pumbg Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes
Verwenden Sie nmcli, um eine neue Brücke zu erstellen.
nmcli schreibt die erforderlichen Schnittstellenkonfigurationsdateien in / etc / sysconfig / network-scripts /
Erstellen Sie die Bridge-Schnittstelle:
nmcli conn add type bridge ifname br0 ip4 10.0.0.16/24 gw4 10.0.0.1
Fügen Sie die Slave-Schnittstelle zur Bridge hinzu:
nmcli conn add type bridge-slave ifname enp5s0f0 master bridge-br0
Deaktivieren Sie das Spanning Tree-Protokoll, wenn das Netzwerk bereits über einen Spanning Tree-Master verfügt:
nmcli con modify bridge-br0 bridge.stp no
Stellen Sie sicher, dass die Bridge so konfiguriert ist, dass sie beim Booten mit nmcli gestartet wird:
nmcli con mod br0 connection.autoconnect yes
An diesem Punkt kann ich den Netzwerkdienst erfolgreich starten und beenden. Beim Neustart wird die Bridge-Schnittstelle ordnungsgemäß gestartet.
Hinweise zur Fehlerbehebung:
Ich habe den Verdacht, dass Sie die Zeile auslassen:
TYPE=Bridge
von meiner ursprünglichen Konfigurationsdatei für br0 kann zu diesem Problem geführt haben. Ich vermute auch, dass die Verwendung von nmcli und das manuelle Erstellen der Bridge-Interface-Dateien ebenfalls zu Problemen geführt haben. Möglicherweise versucht NetworkManager weiterhin, die Schnittstelle zu verwalten. Dies kann bestätigt werden mit:
nmcli dev status
Dieser Befehl zeigt eine Tabelle an, in der alle Netzwerkschnittstellen zusammen mit ihrem STATE aufgeführt sind. Wenn Network Manager keine Schnittstelle steuert, wird dessen STATE als nicht verwaltet angezeigt. Jeder andere Wert gibt an, dass die Schnittstelle von Network Manager gesteuert wird.
Wenn Sie am Ende eine ifcfg-Datei unter / etc / sysconfig / network-scripts manuell ändern, müssen Sie den Netzwerkmanager über die Änderungen mit einem Neuladen informieren.
nmcli con reload
Dadurch wird der Netzwerkmanager angewiesen, alle ifcfg-Dateien erneut zu lesen und Änderungen zu erkennen.
Ich habe folgenden Beitrag gefunden: Wie verhindere ich, dass Network Manager eine Schnittstelle steuert?
Für diejenigen, die NetworkManager nicht in RHEL / CENTOS 7.x verwenden möchten
Eine weitere Kleinigkeit, die mir beim Testen auffiel, war, dass der Selinux-Kontext in den ursprünglichen Schnittstellenkonfigurationsdateien, die ich manuell erstellt hatte, nicht mit den automatisch generierten Konfigurationsdateien identisch war.
ls -lZ zeigte, dass die automatisch generierten ifcfg-Dateien den folgenden Kontext hatten:
system_u: object_r: net_conf_t: s0
Die von mir erstellten Dateien hatten jedoch als Benutzer unconfined_u.
Ich habe chcon verwendet, um den Benutzer auf system_u zu setzen
chcon system_u:object_r:net_conf_t:s0 ifcfg-<filename>
Eine weitere Beobachtung ist, dass systemd jetzt, wenn die neue Bridge-Schnittstelle hoch- oder heruntergefahren wird, ordnungsgemäß meldet, dass die Schnittstelle verbunden und getrennt ist. Bevor ich diese Änderungen vornehme, schien systemd bei der Verwendung meiner selbstgeschriebenen Konfigurationsdateien kein Wissen über die Benutzeroberfläche zu haben. Es würde zeigen, dass die Schnittstelle konfiguriert, aber nicht verbunden war. Trotz Erkennung von Ethtool-Meldungslinks.