web-dev-qa-db-de.com

Konfigurieren Sie ein gebundenes 802.3ad-Netzwerk mit netplan unter Ubuntu 18.04

Ich habe Probleme beim Konfigurieren von netplan auf dem Ubuntu 18.04-Server, um meine vier Hardware-Ethernet-Ports mit dem Namen eno1, eno2, eno3, eno4 mithilfe des 802.3ad-Protokolls zu verbinden. Ich habe den netplan konsultiert man page und die folgende Konfigurationsdatei /etc/netplan/50-cloud-init.yaml zusammengestellt:

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match: 
        name: eno*
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]          
      parameters:
        mode: 802.3ad            
        lacp-rate: fast            
        mii-monitor-interval: 100

Beim Ausführen des Befehls Sudo netplan --debug apply erhalte ich folgende Informationen:

** (generate:6473): DEBUG: 00:39:14.911: Processing input file //etc/netplan/50-cloud-init.yaml..
** (generate:6473): DEBUG: 00:39:14.911: starting new processing pass
** (generate:6473): DEBUG: 00:39:14.911: eports: setting default backend to 1
** (generate:6473): DEBUG: 00:39:14.911: bond0: setting default backend to 1
** (generate:6473): DEBUG: 00:39:14.912: Generating output files..
** (generate:6473): DEBUG: 00:39:14.912: NetworkManager: definition eports is not for us (backend 1)
** (generate:6473): DEBUG: 00:39:14.912: NetworkManager: definition bond0 is not for us (backend 1)
DEBUG:netplan generated networkd configuration exists, restarting networkd
DEBUG:no netplan generated NM configuration exists
DEBUG:device eno2 operstate is up, not replugging
DEBUG:netplan triggering .link rules for eno2
DEBUG:device lo operstate is unknown, not replugging
DEBUG:netplan triggering .link rules for lo
DEBUG:replug eno3: unbinding 0000:03:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno3: rebinding 0000:03:00.0 to /sys/bus/pci/drivers/igb
DEBUG:replug eno1: unbinding 0000:01:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno1: rebinding 0000:01:00.0 to /sys/bus/pci/drivers/igb
DEBUG:Cannot replug bond0: cannot read link /sys/class/net/bond0/device: [Errno 2] No such file or directory: '/sys/class/net/bond0/device'
DEBUG:netplan triggering .link rules for bond0
DEBUG:replug eno4: unbinding 0000:04:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno4: rebinding 0000:04:00.0 to /sys/bus/pci/drivers/igb

Ich bin mir nicht sicher, was ich von der Aussage halten soll

Cannot replug bond0: cannot read link /sys/class/net/bond0/device: [Errno 2] No such file or directory: '/sys/class/net/bond0/device'

da das Verzeichnis /sys/class/net/bond0 durch den Befehl netplan apply generiert wurde.

Ich habe meine ifconfig Ausgabe überprüft und meine Netzwerkgeräte scheinen korrekt konfiguriert zu sein, mit der Ausnahme, dass für bond0 keine Adresse festgelegt wurde:

bond0: flags=5123<UP,BROADCAST,MASTER,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 112768  bytes 7785014 (7.7 MB)
    RX errors 0  dropped 54  overruns 0  frame 0
    TX packets 18854  bytes 2337896 (2.3 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 290  bytes 19322 (19.3 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 55  bytes 6820 (6.8 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf400000-df47ffff  

eno2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 73991  bytes 29824155 (29.8 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 20848  bytes 2110417 (2.1 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf300000-df37ffff  

eno3: flags=6147<UP,BROADCAST,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf200000-df27ffff  

eno4: flags=6147<UP,BROADCAST,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf100000-df17ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<Host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 2923  bytes 184477 (184.4 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 2923  bytes 184477 (184.4 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Die ether XX:XX:XX:XX:XX:XX -Anweisungen ersetzen die MAC-Adresse der einzelnen Schnittstellen. In der ursprünglichen Ausgabe sind alle Adressen gleich.

Was fehlt mir, um mein System erfolgreich zu konfigurieren?

2
n8tlarsen

Nach einigem Graben stellte ich fest, dass Ubuntu 18.04 ein Dienstprogramm namens cloud-init verwendet, um die Netzwerkkonfiguration und -initialisierung während der Startsequenz durchzuführen. Die Datei /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg und andere .cfg Dateien werden verwendet, um cloud-init Einstellungen neu zu konfigurieren. Meine Einstellungen für die Konfigurationsdatei lauten wie folgt:

network:
  version: 2
  ethernets:
    eports:
      match:
        name: eno*
      optional: true
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100

Der Parameter optional: true verhindert, dass das System beim Start auf eine gültige Netzwerkverbindung wartet, sodass Sie nicht 2 Minuten warten müssen, bis der Computer gestartet ist. Führen Sie nach dem Aktualisieren der Konfigurationsdatei den folgenden Befehl aus, um Ihre Konfiguration zu aktualisieren.

cloud-init clean -reboot

Wenn Sie alternativ Folgendes ausführen, können Sie einige Debug-Informationen abrufen, ohne den Computer neu zu starten. Es ist jedoch ein Neustart erforderlich, um die Änderungen in frühen Startphasen festzuschreiben.

cloud-init clean
cloud-init init
cloud-init status 
3
n8tlarsen

Die Website netplan.io scheint darauf hinzuweisen, dass cloud-init eines von mehreren von netplan konfigurierten Dienstprogrammen ist. Das Problem mit netplan ist möglicherweise, dass Sie dhcp4 = false angeben müssen, wenn Sie die physischen Schnittstellen angeben, die später verbunden werden sollen. Wenn Sie dies nicht tun, werden die Adressen möglicherweise per DHCP an die einzelnen Schnittstellen angehängt, bevor sie verbunden werden. Somit gibt es zum Zeitpunkt der Verbindung Konflikte mit der vorhandenen IP-Logik.

Ich vermute, dass Ihre Cloud-Init-Problemumgehung (früher in der Startsequenz?) Möglicherweise funktioniert, indem Schnittstellen verbunden werden, bevor der DHCP-Prozess ausgeführt wird. Oder setzen Sie mit der Clean/Init-Sequenz die DHCP-Adresse zurück, bevor der DHCP-Prozess erneut angewendet werden kann. Dies kann jedoch dazu führen, dass die Problemumgehung möglicherweise nicht mehr funktioniert, wenn die Betreuer auch nur geringfügige Änderungen an der Startlogik/-sequenz vornehmen.

0
Curious