Wie kann man die Netzwerkbrücke beim Booten starten?

12855
Peter Turner

Immer wenn ich meinen Computer starte, muss ich meinen Netzwerkdienst neu starten (mithilfe des Dienstnetzwerksneustarts), um meine Bridge (br0) zu aktivieren. Wie kann ich Linux dazu bringen, wenn ich meinen Computer hochfahre, damit ich es nicht manuell tun muss?

Das Netzwerk startet, die anderen 2 Ethernet-Adapter sind beim Hochfahren aktiv.

5
Wie können Sie den Netzwerkdienst neu starten, um die Bridge zu aktivieren? Es ist wahrscheinlich, dass etwas in Ihren Startskripten fehlt oder nicht in der richtigen Reihenfolge ist. Wenn wir wissen, was Sie tun müssen, um nach dem Start zu arbeiten, können wir Ihnen vielleicht die besten Dinge mitteilen, die Sie überprüfen / ändern müssen. David Spillett vor 14 Jahren 0
Ich starte das Netzwerk neu, indem Sie das Netzwerkskript "service network restart" ausführen. Wie kann ich den Bridge-Adapter starten, wenn Linux läuft, aber nicht beim Booten. Peter Turner vor 14 Jahren 0
Hey Pete, wenn du eine Sekunde bekommst, könntest du meine Antwort akzeptieren? Ich denke, es ist die beste Option, die Sie für Ihr Problem finden werden. Vielen Dank. slm vor 11 Jahren 0

4 Antworten auf die Frage

4
slm

Dies scheint ein Problem bei der Reihenfolge zu sein, in der die Schnittstellen aufgerufen werden. Wenn Sie das /etc/init.d/networkInit-Skript betrachten, gibt es dieses Bit, das alle Schnittstellen erstellt:

# find all the interfaces besides loopback. # ignore aliases, alternative configurations, and editor backup files interfaces=$(ls ifcfg* | \ LANG=C sed -e "$__sed_discard_ignored_files" \ -e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \ -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \ LANG=C sort -k 1,1 -k 2n | \ LANG=C sed 's/ //') 

Die Ausgabe dieses Befehls erzeugt diese Liste:

br0 eth0 

Ich habe nicht eine Lösung für dieses andere als umfassen ein gefundenes ifup br0im /etc/rc.localSkript, um manuell die Kraft nach br0oben NACH dem eth0Gerät wurde gebracht.

BEARBEITEN

Ich habe gerade ein /etc/sysconfig/network-scripts/ifcfg-br0so und auf hatte einen Neustart br0 beginnen NACH eth0!

# ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static ONBOOT=yes DELAY=0 NM_CONTROLLED=no STP=off IPADDR=192.168.1.200 GATEWAY=192.168.1.1 NETMASK=255.255.255.0 

Beispiel /etc/sysconfig/network-scripts/ifcfg-eth0

# ifcfg-eth0 DEVICE=eth0 #BOOTPROTO=dhcp HWADDR=BC:AE:C5:34:C9:E8 ONBOOT=yes BRIDGE=br0 NM_CONTROLLED=no 

Mit diesen Dateien sehe ich nun die Netzwerkgeräte wie folgt:

Bringing up interface eth0 [ OK ] Bringing up interface br0 [ OK ] 
1

Stellen Sie sicher, dass der "Netzwerk" -Dienst aktiviert ist. Sie können die GUI-Dienste (system-config-services) oder chkconfig verwenden, wenn Sie damit vertraut sind. Dies löste dasselbe Problem für mich.

1
Chris Smith

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.

0
Ahmad Kamal EL-Saman

Ich habe das gleiche Problem, aber ich habe festgestellt, dass ich den Namen der Brückenschnittstelle / etc / sysconfig / network-scripts / br0 anstelle von / etc / sysconfig / network-scripts / ifcfg-br0 geschrieben habe

Ich kam dazu an, wenn ich " /etc/init.d/network " öffne und finde, dass das Skript nur Dateien lädt, die mit " ifcfg- " beginnen.