linux-system-roles.network

linux-system-roles/netzwerk

ansible-lint.yml ansible-test.yml codeql.yml integration.yml markdownlint.yml python-unit-test.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml Coverage Status Code Style: black Language grade: Python

Überblick

Die netzwerk-Rolle ermöglicht es Benutzern, das Netzwerk auf den Zielmaschinen zu konfigurieren. Diese Rolle kann verwendet werden, um Folgendes zu konfigurieren:

  • Ethernet-Schnittstellen
  • Brückenschnittstellen
  • Bonded-Schnittstellen
  • VLAN-Schnittstellen
  • MacVLAN-Schnittstellen
  • Infiniband-Schnittstellen
  • Drahtlose (WiFi) Schnittstellen
  • IP-Konfiguration
  • 802.1x Authentifizierung

Einführung

Die netzwerk-Rolle unterstützt zwei Provider: nm und initscripts. nm wird standardmäßig seit RHEL7 verwendet und initscripts in RHEL6. Der initscripts-Provider erfordert das Paket network-scripts, das in RHEL8 veraltet ist und in RHEL9 entfernt wurde. Diese Provider können pro Host über die Variable network_provider konfiguriert werden. In Abwesenheit einer expliziten Konfiguration wird es basierend auf der Distribution automatisch erkannt. Beachten Sie jedoch, dass entweder nm oder initscripts nicht an eine bestimmte Distribution gebunden ist. Die netzwerk-Rolle funktioniert überall, wo die erforderliche API verfügbar ist. Das bedeutet, dass nm mindestens API-Version 1.2 von NetworkManager benötigt, und bestimmte von nm unterstützte Einstellungen benötigen ebenfalls eine höhere API-Version von NetworkManager.

Die netzwerk-Rolle unterstützt zwei Module: netzwerk_connections und netzwerk_state.

Für jeden Host kann eine Liste von Netzwerprofilen über die Variable netzwerk_connections konfiguriert werden.

  • Für initscripts entsprechen die Profile ifcfg-Dateien im Verzeichnis /etc/sysconfig/network-scripts/, und diese ifcfg-Dateien enthalten die Zeile NM_CONTROLLED=no.

  • Bei nm entsprechen die Profile Verbindungprofile, die von NetworkManager verwaltet werden, und nur die im Keyfile-Format von NetworkManager unterstützten Profile sind ab RHEL9 im Verzeichnis /etc/NetworkManager/system-connections/ zulässig.

Für jeden Host kann die Netzwerkkonfigurationszustandskonfiguration auch direkt über die Variable netzwerk_state auf die Schnittstelle angewendet werden, und nur der nm-Provider unterstützt die Verwendung der Variable netzwerk_state.

Beachten Sie, dass die netzwerk-Rolle sowohl auf die Verbindungsprofile der Geräte (über die Variable netzwerk_connections) als auch direkt auf die Geräte (über die Variable netzwerk_state) wirkt. Wenn die Verbindungsprofile über die Rolle konfiguriert werden, wird standardmäßig der Profilname als Schnittstellenname verwendet. Es ist auch möglich, generische Profile zu erstellen, z.B. ein Profil mit einer bestimmten IP-Konfiguration zu erstellen, ohne das Profil zu aktivieren. Um die Konfiguration auf die tatsächliche Netzwerkschnittstelle anzuwenden, verwenden Sie die nmcli-Befehle auf dem Zielsystem.

Warnung: Die netzwerk-Rolle aktualisiert oder erstellt alle Verbindungsprofile auf dem Zielsystem, wie in der Variable netzwerk_connections angegeben. Daher entfernt die netzwerk-Rolle Optionen aus den angegebenen Profilen, wenn die Optionen nur auf dem System vorhanden sind, aber nicht in der Variable netzwerk_connections. Ausnahmen sind unten aufgeführt. Eine teilweise Netzwerkkonfiguration kann jedoch erreicht werden, indem die Netzwerkkonfigurationszustandskonfiguration in der Variable netzwerk_state angegeben wird.

Anforderungen

Siehe unten

Sammlung Anforderungen

Die Rolle benötigt externe Sammlungen nur für die Verwaltung von rpm-ostree-Knoten. Bitte führen Sie den folgenden Befehl aus, um sie zu installieren, wenn Sie rpm-ostree-Knoten verwalten müssen:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Variablen

Die netzwerk-Rolle wird über Variablen konfiguriert, die mit netzwerk_ als Namenspräfix beginnen. Liste der Variablen:

  • netzwerk_provider - Die Variable netzwerk_provider ermöglicht es, einen bestimmten Provider (nm oder initscripts) festzulegen. Wenn Sie es auf {{ network_provider_os_default }} setzen, wird der Provider basierend auf dem Betriebssystem festgelegt. Dies ist normalerweise nm, es sei denn, es handelt sich um RHEL 6 oder CentOS 6-Systeme. Das Ändern des Providers für ein bestehendes Profil wird nicht unterstützt. Um die Provider zu wechseln, wird empfohlen, zuerst die Profile mit dem alten Provider zu entfernen und dann neue Profile mit dem neuen Provider zu erstellen.
  • netzwerk_connections - Die Verbindungsprofile werden als netzwerk_connections konfiguriert, was eine Liste von Wörterbüchern ist, die spezifische Optionen enthalten.
  • netzwerk_allow_restart - Standardmäßig auf false. Um nach der Installation Plugins von NetworkManager zu laden, muss NetworkManager neu gestartet werden. Zum Beispiel, wenn eine drahtlose Verbindung konfiguriert ist und NetworkManager-wifi nicht installiert ist, muss NetworkManager neu gestartet werden, bevor die Verbindung konfiguriert werden kann. Der Neustart kann zu einem Verlust der Konnektivität führen, deshalb erlaubt die Rolle dies nicht ohne ausdrückliche Zustimmung. Der Benutzer kann dem zustimmen, indem er netzwerk_allow_restart auf true setzt. Das Setzen von netzwerk_allow_restart auf false verhindert, dass die Rolle NetworkManager neu startet.
  • netzwerk_state - Die Netzwerkkonfigurationseinstellungen können im verwalteten Host konfiguriert werden, und das Format sowie die Syntax der Konfiguration sollten mit den nmstate-Beispielen (YAML) übereinstimmen.

Beispiele für Variablen

Einstellen der Variablen

netzwerk_provider: nm
netzwerk_connections:
  - name: eth0
    #...
netzwerk_allow_restart: true
netzwerk_provider: nm
netzwerk_state:
  interfaces:
    - name: eth0
    #...
  routes:
    config:
      #...
  dns-resolver:
    config:
      #...

Optionen von netzwerk_connections

Die Variable netzwerk_connections ist eine Liste von Wörterbüchern, die die folgenden Optionen enthalten. Liste der Optionen:

name (normalerweise erforderlich)

Die name-Option identifiziert das Verbindungsprofil, das konfiguriert werden soll. Es ist nicht der Name der Netzwerkschnittstelle, auf die das Profil angewendet wird, obwohl wir das Profil mit einer Schnittstelle verknüpfen und ihnen den gleichen Namen geben können. Beachten Sie, dass Sie mehrere Profile für dasselbe Gerät haben können, aber jedes Mal kann nur ein Profil auf dem Gerät aktiv sein. Für NetworkManager kann eine Verbindung nur auf einem Gerät aktiv sein.

  • Für NetworkManager entspricht die name-Option der connection.id Eigenschaftenoption. Obwohl NetworkManager mehrere Verbindungen mit derselben connection.id unterstützt, kann die netzwerk-Rolle ein Duplikat name nicht verarbeiten. Mehrfaches Angeben eines name bezieht sich auf dasselbe Verbindungsprofil.

  • Für initscripts bestimmt die name-Option den ifcfg-Dateinamen /etc/sysconfig/network-scripts/ifcfg-$NAME. Beachten Sie, dass der name nicht das DEVICE angibt, sondern einen Dateinamen. Folglich ist '/' kein gültiges Zeichen für den name.

Sie können auch das gleiche Verbindungsprofil mehrmals verwenden. Daher ist es möglich, ein Profil zu erstellen und es getrennt zu aktivieren.

Hinweis: Die netzwerk-Rolle ändert nur die Profile, die in der Variable netzwerk_connections angegeben sind. Wenn also nur die Ports eines Profils angegeben sind, die vom Controller entfernt werden sollen und der Controller nicht angegeben ist, bleibt das Controllerprofil auf dem System. Dies kann passieren, wenn beispielsweise alle Ports von einer Bond-Schnittstelle entfernt werden.

Hinweis: Um alle Profile auf einem System zu entfernen, die nicht in der Variable netzwerk_connections angegeben sind, fügen Sie einen Eintrag ohne Namen und persistent_state: absent hinzu. Dies entfernt alle verbleibenden Profile:

netzwerk_connections:
  - name: eth0  # Profile, die im System beibehalten/configuriert werden sollen
    [...]

  - persistent_state: absent  # Alle anderen Profile entfernen

state

Die state-Option identifiziert, was der Laufzeitstatus jedes Verbindungsprofils ist. Die state-Option (optional) kann auf die folgenden Werte gesetzt werden:

  • up - das Verbindungsprofil ist aktiviert
  • down - das Verbindungsprofil ist deaktiviert

state: up

  • Für NetworkManager entspricht dies nmcli connection id {{name}} up.

  • Für initscripts entspricht dies ifup {{name}}.

Wenn die state-Option auf up gesetzt ist, können Sie auch die wait-Option (optional) angeben:

  • wait: 0 - initiiert nur die Aktivierung, wartet jedoch nicht darauf, dass das Gerät vollständig verbunden ist. Die Verbindung wird im Hintergrund abgeschlossen, z. B. nachdem ein DHCP-Lease erhalten wurde.
  • wait: <seconds> ist ein Timeout, das es Ihnen ermöglicht zu entscheiden, wie lange Sie dem Gerät Zeit geben, um sich zu aktivieren. Der Standardwert verwendet einen geeigneten Timeout. Beachten Sie, dass die wait-Option nur von NetworkManager unterstützt wird.

Beachten Sie, dass state: up immer das Profil reaktiviert und möglicherweise die Netzwerkeinstellungen ändert, selbst wenn das Profil zuvor bereits aktiv war. Folglich verändert state: up immer das System.

state: down

  • Für NetworkManager entspricht es nmcli connection id {{name}} down.

  • Für initscripts entspricht es dem Aufruf ifdown {{name}}.

Sie können ein Verbindungsprofil deaktivieren, selbst wenn es derzeit nicht aktiv ist. Folglich ändert state: down immer das System.

Beachten Sie, dass, wenn die state-Option nicht gesetzt ist, der Laufzeitstatus des Verbindungsprofils nicht geändert wird.

persistent_state

Die persistent_state-Option identifiziert, ob ein Verbindungsprofil persistent (auf der Festplatte gespeichert) ist. Die persistent_state-Option kann auf die folgenden Werte gesetzt werden:

persistent_state: present (Standard)

Beachten Sie, dass, wenn persistent_state present ist und das Verbindungsprofil die type-Option enthält, das Profil erstellt oder aktualisiert wird. Wenn das Verbindungsprofil unvollständig ist (keine type-Option), ist das Verhalten undefiniert. Der Wert present führt auch nicht direkt zu einer Änderung der Netzwerkkonfiguration. Wenn die state-Option nicht auf up gesetzt ist, wird das Profil nur erstellt oder geändert, nicht aktiviert.

Für NetworkManager wird das neue Verbindungsprofil standardmäßig mit der autoconnect-Option aktiviert. Daher kann NetworkManager das neue Profil auf einem derzeit nicht verbundenen Gerät aktivieren. (rh#1401515).

persistent_state: absent

Der Wert absent stellt sicher, dass das Profil nicht auf dem Zielhost vorhanden ist. Wenn ein Profil mit dem angegebenen name existiert, wird es gelöscht. In diesem Fall:

  • NetworkManager löscht alle Verbindungsprofile mit dem entsprechenden connection.id. Das Löschen eines Profils ändert normalerweise nicht die aktuelle Netzwerkkonfiguration, es sei denn, das Profil war derzeit aktiv auf einem Gerät. Wenn das derzeit aktive Verbindungsprofil gelöscht wird, trennt dies das Gerät. Dadurch kann das Gerät eine andere Verbindung automatisch herstellen (für weitere Details siehe rh#1401515).

  • initscripts löscht in den meisten Fällen die ifcfg-Datei, ohne Einfluss auf den aktuellen Laufzeitstatus des Systems, es sei denn, eine Komponente überwacht das Sysconfig-Verzeichnis.

Hinweis: Für Profile, die nur eine state-Option enthalten, aktiviert oder deaktiviert die netzwerk-Rolle nur die Verbindung, ohne ihre Konfiguration zu ändern.

type

Die type-Option kann auf die folgenden Werte gesetzt werden:

  • ethernet
  • bridge
  • bond
  • team
  • vlan
  • macvlan
  • infiniband
  • wireless
  • dummy

type: ethernet

Wenn der Typ ethernet ist, kann es ein zusätzliches ethernet-Wörterbuch mit den folgenden Elementen (Optionen) geben: autoneg, speed und duplex, die den Einstellungen des ethtool-Werkzeugs mit demselben Namen entsprechen.

  • autoneg: true (Standard) oder false [wenn die automatische Aushandlung aktiviert oder deaktiviert ist]
  • speed: Geschwindigkeit in Mbit/s
  • duplex: half oder full

Beachten Sie, dass die Werte speed und duplex erforderlich sind, wenn die automatische Aushandlung deaktiviert ist (autoneg: false).

type: bridge, type: bond, type: team

Die Gerätetypen bridge, bond, team funktionieren ähnlich. Beachten Sie, dass team in RHEL6-Kernen nicht unterstützt wird und in RHEL 9 veraltet ist.

Für Ports müssen die Eigenschaften port_type und controller festgelegt werden. Beachten Sie, dass Ports keine ip-Einstellungen haben sollten, was bedeutet, dass die aktiven Ports keine IP-Adressen zugewiesen bekommen.

Der controller bezieht sich auf den name eines Profils im Ansible-Playbook. Es ist weder ein Schnittstellenname noch eine Verbindung-id von NetworkManager.

  • Für NetworkManager wird controller in die connection.uuid des entsprechenden Profils umgewandelt.

  • Für initscripts wird der Controller als DEVICE aus der entsprechenden ifcfg-Datei nachgeschlagen.

Da der controller auf andere Profile derselben oder einer anderen Rolle verweist, spielt die Reihenfolge der connections-Liste eine Rolle. Profile, die von anderen Profilen referenziert werden, müssen zuerst angegeben werden. Außerdem ignoriert --check den Wert von controller und geht davon aus, dass er während einer echten Ausführung vorhanden ist. Das bedeutet, dass, im Falle eines ungültigen controller, --check möglicherweise auf Erfolg signalisiert, aber der tatsächliche Play-Lauf fehlschlägt.

Wenn nur das controller-Profil deaktiviert wird, werden die Portprofile automatisch heruntergefahren. Wenn die Verbindung für einige oder alle Ports heruntergefahren wird, bleibt das Controllerprofil aktiv.

Der team-Typ verwendet roundrobin als runner-Konfiguration. Momentan werden keine weiteren Konfigurationen unterstützt.

type: vlan

Ähnlich wie controller verweist parent auf das Verbindungsprofil in der Ansible-Rolle. Die VLAN-ID kann durch Verwendung der eingebetteten VLAN-Einstellung angegeben werden, wobei der gültige VLAN-ID-Wert von 0 bis 4094 reicht. Hier ist, wie die VLAN-ID angegeben werden kann:

type: vlan
vlan:
  id: 6

type: macvlan

Ähnlich wie controller und vlan verweist parent auf das Verbindungsprofil in der Ansible-Rolle.

type: infiniband

Für die Infiniband-Verbindung wird derzeit nur der nm-Provider unterstützt, und die folgenden Optionen werden unterstützt:

  • p_key: Der P_Key für die Infiniband-Verbindung, der für das Gerät verwendet werden soll. Wenn dies nicht angegeben ist, wird die Verbindung auf den physischen Infiniband-Fabrics erstellt. Andernfalls ist es ein 16-Bit-Unsignierter ganzzahliger Wert, und die ipoib (IP über Infiniband) Verbindung wird erstellt, wobei das höchste Bit gesetzt werden sollte, wenn es sich um einen "vollständigen Mitgliedschaft" P_Key handelt. Die speziellen Werte p_key von 0x0000 und 0x8000 sind ungültig, da der Kernel diese nicht unterstützt.
  • transport_mode: Der Betriebsmodus der ipoib (IP über Infiniband)-Verbindung. Die möglichen Modi sind datagram (Standard) und connected.

Hinweis: Wenn der p_key angegeben ist, muss der interface_name nicht gesetzt werden.

type: wireless

Der wireless-Typ unterstützt WPA-PSK (Passwort) Authentifizierung, WPA-EAP (802.1x) Authentifizierung, WPA3-Personal SAE (Passwort) Authentifizierung und Enhanced Open (OWE).

nm (NetworkManager) ist der einzige unterstützte netzwerk_provider für diesen Typ.

Wenn WPA-EAP verwendet wird, müssen die ieee802_1x-Einstellungen im ieee802_1x Optionen definiert werden.

Die folgenden Optionen werden unterstützt:

  • ssid: Die SSID des drahtlosen Netzwerks (erforderlich)

  • key_mgmt (erforderlich)

    Jeder Schlüssel aus der folgenden Schlüsselliste:

    • owe
    • sae
    • wpa-eap
    • wpa-psk
  • password: Passwort für das Netzwerk (erforderlich, wenn wpa-psk oder sae verwendet wird)

type: dummy

Dummy-Netzwerkschnittstelle, nm (NetworkManager) ist der einzige unterstützte netzwerk_provider für diesen Typ.

autoconnect

Standardmäßig werden Profile mit aktiviertem autoconnect erstellt.

  • Für NetworkManager entspricht dies der connection.autoconnect-Eigenschaft.

  • Für initscripts entspricht dies der ONBOOT-Eigenschaft.

mac

Die mac-Adresse ist optional und beschränkt das Profil, nur auf Geräten mit der angegebenen MAC-Adresse verwendbar. mac ist nur für den type ethernet oder infiniband zulässig, um ein nicht virtuelles Gerät mit dem Profil übereinstimmen. Der Wert der mac-Adresse muss in hexadezimaler Notation mit Doppelpunkten angegeben werden (z.B. mac: "00:00:5e:00:53:5d"). Um zu vermeiden, dass YAML Adressen als Ganzzahlen im Sexagesimalformat (Basis 60) interpretiert, wird empfohlen, den Wert immer in Anführungszeichen zu setzen.

  • Für NetworkManager ist mac die permanente MAC-Adresse, ethernet.mac-address.

  • Für initscripts ist mac die aktuell konfigurierte MAC-Adresse des Geräts (HWADDR).

cloned_mac

Die cloned_mac-Adresse ist optional und erlaubt es, die Strategie zur Erlangung der Standard-MAC- oder Festlegung einer eigenen MAC anzugeben. Der Wert der cloned_mac-Adresse muss in hexadezimaler Notation wie die mac-Eigenschaft angegeben werden. Neben dem ausdrücklich festgelegten Wert als MAC-Adresse in hexadezimaler Notation werden auch die folgenden speziellen Werte unterstützt:

  • default: das Standardverhalten in NetworkManager berücksichtigen
  • permanent: verwenden Sie die permanente MAC-Adresse des Geräts
  • preserve: ändern Sie die MAC-Adresse des Geräts bei Aktivierung nicht
  • random: generieren Sie einen zufälligen Wert bei jeder Verbindung
  • stable: generieren Sie eine stabile, gehashte MAC-Adresse

mtu

Die mtu-Option gibt die maximale Übertragungseinheit für das Gerät des Profils an. Der maximal zulässige Wert hängt vom Gerät ab. Bei virtuellen Geräten hängt der maximal zulässige Wert der mtu-Option vom zugrunde liegenden Gerät ab.

interface_name

Für die Typen ethernet und infiniband schränkt die interface_name-Option das Profil auf die angegebene Schnittstelle nach Name ein. Dieses Argument ist optional, und standardmäßig wird der Profilname verwendet, es sei denn, eine MAC-Adresse wird mit dem mac-Schlüssel angegeben. Das Angeben einer leeren Zeichenfolge ("") bedeutet, dass das Profil nicht auf eine Netzwerkschnittstelle beschränkt ist.

Hinweis: Mit persistenter Schnittstellennamensgebung ist die Schnittstelle basierend auf der Hardware-Konfiguration vorhersagbar. Andernfalls könnte die mac-Adresse eine Option sein.

Für virtuelle Schnittstellentypen wie Brücken ist der interface_name der Name der erstellten Schnittstelle. Im Falle eines fehlenden interface_name wird der Name des Profils verwendet.

Hinweis: Der name (der Profilname) und der interface_name (der Geräte-Name) können unterschiedlich sein oder das Profil ist überhaupt nicht an eine Schnittstelle gebunden.

match

Einstellungen zur Spezifizierung von Geräten oder Systemen, die ein Profil entsprechen. Derzeit wird nur die path-Einstellung implementiert.

Die Einstellungen unterstützen eine Liste von Mustern, die die folgenden Modifikatoren und Wildcards unterstützen:

Spezielle Modifikatoren für match-Einstellungen:

  • |, das Element ist ein alternatives Element, die Übereinstimmung wird als wahr ausgewertet, wenn mindestens eines der Alternativen übereinstimmt (logisches ODER). Standardmäßig ist ein Element ein alternatives Element. Das bedeutet, dass ein Element foo sich gleich verhält wie |foo

  • &, das Element ist obligatorisch, die Übereinstimmung wird als wahr bewertet, wenn alle Elemente übereinstimmen (logisches UND).

  • !, ein Element kann auch mit einem Ausrufezeichen (!) invertiert werden, während zwischen dem Pipe-Zeichen (oder dem Ampersand) und dem Muster verwendet wird. Beachten Sie, dass !foo eine Abkürzung für die obligatorische Übereinstimmung &!foo ist.

  • \, ein Backslash kann am Anfang des Elements (nach den optionalen Sonderzeichen) verwendet werden, um den Beginn des Musters zu maskieren. Zum Beispiel ist &\!a eine obligatorische Übereinstimmung für wörtlich !a.

Wildcard-Muster für match-Einstellungen: Im Allgemeinen funktionieren diese wie Shell-Gobs.

  • *, entspricht null oder mehr beliebigen Zeichen
  • ?, entspricht jedem einzelnen Zeichen
  • [fo] - entspricht einem einzelnen f oder o Zeichen - unterstützt auch Bereiche - [0-9] entspricht jedem einzelnen Ziffernzeichen

path

Die path-Einstellung ist eine Liste von Mustern, die gegen die ID_PATH udev-Eigenschaft von Geräten übereinstimmen. Die ID_PATH-udev-Eigenschaft stellt den festen Pfad eines Geräts dar. Sie besteht aus einer Subsystemzeichenfolge (pci, usb, plattform usw.) und einem subsystem-spezifischen Identifikator. Der ID_PATH eines Geräts kann mit dem Befehl udevadm info /sys/class/net/$dev | grep ID_PATH= abgerufen werden oder durch einen Blick auf die path-Eigenschaft, die von NetworkManager exportiert wird (nmcli -f general.path device show $dev). Die path-Einstellung ist optional und schränkt das Profil auf aktive Schnittstellen nur mit einem passenden ID_PATH ein. Die path-Einstellung wird nur für Ethernet- oder Infiniband-Profile unterstützt. Es unterstützt Modifikatoren und Wildcards, wie sie für match-Einstellungen beschrieben sind.

zone

Die zone-Option legt die Firewalld-Zone für die Schnittstelle fest.

Ports zu Brücken-, Bond- oder Teamgeräten können keine Zone angeben.

ip

Die IP-Konfiguration unterstützt die folgenden Optionen:

  • address Manuelle Adressierung kann über eine Liste von Adressen unter der address-Option angegeben werden.

  • auto_gateway

    Wenn aktiviert, wird eine Standardroute unter Verwendung des Standard-Gateways konfiguriert. Wenn deaktiviert, wird die Standardroute entfernt.

    Wenn diese Variable nicht angegeben ist, verwendet die Rolle das Standardverhalten des ausgewählten netzwerk_provider.

    Das Setzen dieser Option auf false entspricht:

    • DEFROUTE = no in initscripts, oder
    • ipv4.never-default/ipv6.never-default yes in nmcli.
  • dhcp4, auto6 und ipv6_disabled

    Auch die manuelle Adressierung kann angegeben werden, indem entweder dhcp4 oder auto6 festgelegt wird. Der dhcp4-Schlüssel steht für DHCPv4 und auto6 für Stateful Address Auto Configuration (SLAAC). Beachten Sie, dass die Schlüssel dhcp4 und auto6 weggelassen werden können und der Standardwert von der Anwesenheit manueller Adressen abhängt. ipv6_disabled kann festgelegt werden, um ipv6 für die Verbindung zu deaktivieren.

  • dhcp4_send_hostname

    Wenn dhcp4 aktiviert ist, kann konfiguriert werden, ob die DHCPv4-Anfrage den Hostnamen über die dhcp4_send_hostname-Option enthält. Beachten Sie, dass dhcp4_send_hostname nur vom nm-Provider unterstützt wird und der ipv4.dhcp-send-hostname Eigenschaft entspricht.

  • dns

    Manuelle DNS-Konfiguration kann über eine Liste von Adressen, die in der dns-Option angegeben sind, festgelegt werden.

  • dns_search

    Manuelle DNS-Konfiguration kann über eine Liste von Domänen, die in der dns_search-Option angegeben sind, festgelegt werden.

  • dns_options

    dns_options wird nur für den NetworkManager-Provider unterstützt. Eine manuelle DNS-Konfiguration über eine Liste von DNS-Optionen kann in dns_options angegeben werden. Die Liste der unterstützten DNS-Optionen für IPv4-Namensserver wird in man 5 resolv.conf beschrieben. Derzeit werden folgende DNS-Optionen unterstützt:

    • attempts:n
    • debug
    • edns0
    • inet6
    • ip6-bytestring
    • ip6-dotint
    • ndots:n
    • no-aaaa
    • no-check-names
    • no-ip6-dotint
    • no-reload
    • no-tld-query
    • rotate
    • single-request
    • single-request-reopen
    • timeout:n
    • trust-ad
    • use-vc

    Hinweis: Die Einstellung "trust-ad" wird nur beachtet, wenn das Profil Namensserver zu resolv.conf beiträgt und alle beitragenden Profile "trust-ad" aktiviert haben. Wenn ein Caching-DNS-Plugin (dnsmasq oder systemd-resolved in NetworkManager.conf) verwendet wird, werden dann "edns0" und "trust-ad" automatisch hinzugefügt.

  • dns_priority

    Priorität der DNS-Server. Die relative Priorität für die von dieser Einstellung angegebenen DNS-Server. Der Standardwert beträgt 0, ein niedrigerer numerischer Wert hat eine höhere Priorität. Der gültige Wert von dns_priority reicht von -2147483648 bis 2147483647. Negative Werte haben die spezielle Wirkung, andere Konfigurationen mit einem höheren numerischen Prioritätswert auszuschließen; Legt fest, dass bei Vorliegen von mindestens einer negativen Priorität nur die DNS-Server aus Verbindung mit dem niedrigsten Prioritätswert verwendet werden.

  • gateway4 und gateway6

    Das Standardgateway für IPv4 (gateway4) oder IPv6 (gateway6)-Pakete.

  • ipv4_ignore_auto_dns und ipv6_ignore_auto_dns

    Wenn aktiviert, werden die automatisch konfigurierten Nameserver und Suchdomänen (über DHCPv4, DHCPv6, Modem usw.) für IPv4 oder IPv6 ignoriert; nur die in den dns- und dns_search-Eigenschaften angegebenen Namensserver und Suchdomänen werden verwendet. Die Einstellungen unterscheiden sich nach Adressfamilien. Die Variablen werden vom initscripts-Provider nicht unterstützt.

    Wenn die Variablen nicht angegeben sind, wird die Rolle das Standardverhalten des nm-Providers nutzen.

  • route_metric4 und route_metric6

    Für NetworkManager entsprechen route_metric4 und route_metric6 den ipv4.route-metric und ipv6.route-metric Eigenschaften respektive. Wenn angegeben, bestimmt es das Routen-Metrik für von DHCP zugewiesene Routen und das Standardgateway und damit die Priorität für mehrere Interfaces. Für initscripts legt route_metric4 die Metrik für die Standardroute fest, und route_metric6 wird nicht unterstützt.

  • route

    Statische Routen können über eine Liste von Routen, die in der route-Option angegeben sind, konfiguriert werden. Der Standardwert ist eine leere Liste. Jede Route ist ein Wörterbuch mit den folgenden Einträgen: gateway, metric, network, prefix, src, table und type. network und prefix geben das Zielnetzwerk an. src gibt die Quell-IP-Adresse für eine Route an. table unterstützt sowohl die numerische als auch die benannte Tabelle. Um die benannte Tabelle anzugeben, müssen die Benutzer sicherstellen, dass die benannte Tabelle ordnungsgemäß in /etc/iproute2/rt_tables oder /etc/iproute2/rt_tables.d/*.conf definiert ist. Der optionale type-Schlüssel unterstützt die Werte blackhole, prohibit und unreachable. Siehe man 8 ip-route für ihre Definition. Routen mit diesen Typen unterstützen kein Gateway. Wenn der Typ nicht angeben wird, wird die Route als unicast Route betrachtet. Beachten Sie, dass die classless inter-domain routing(CIDR)-Notation oder die Netzwerk-Maskennotation für den network-Schlüssel nicht unterstützt wird.

  • routing_rule

    Die policyrouting-Regeln können über eine Liste von Regeln, die in der routing_rule-Option angegeben sind, konfiguriert werden, die es ermöglichen, die Pakete nach anderen Paketen zu routen als der Zieladresse. Der Standardwert ist eine leere Liste. Jede Regel ist ein Wörterbuch mit den folgenden Einträgen:

    • priority - Die Priorität der Regel. Eine gültige Priorität reicht von 0 bis 4294967295. Eine höhere Zahl bedeutet eine niedrigere Priorität.
    • action - Die Aktion der Regel. Die möglichen Werte sind to-table (Standard), blackhole, prohibit, unreachable.
    • dport- Der Bereich des Zielport (z.B. 1000 - 2000). Ein gültiger dport-Wert für beide Start- und Endwerte reicht von 0 bis 65534. Der Startwert darf nicht größer als der Endwert sein.
    • family - Die IP-Familie der Regel. Die möglichen Werte sind ipv4 und ipv6.
    • from - Die Quelladresse des Pakets, die übereinstimmen soll (z.B. 192.168.100.58/24).
    • fwmark - Der fwmark-Wert des Pakets, um Übereinstimmungen zu erzielen.
    • fwmask - Der fwmask-Wert des Pakets, um Übereinstimmungen zu erzielen.
    • iif - Wählen Sie den eingehenden Schnittstellennamen zum Übereinstimmen.
    • invert - Invertieren der ausgewählten Übereinstimmung der Regel. Die möglichen Werte sind boolesche Werte true und false (Standard). Wenn der Wert true ist, entspricht dies der Übereinstimmung mit jedem Paket, das nicht die ausgewählte Übereinstimmung der Regel erfüllt.
    • ipproto - Wählt den IP-Protokollwert zum Übereinstimmen; der gültige Wert reicht von 1 bis 255.
    • oif - Wählt den ausgehenden Schnittstellennamen zur Übereinstimmung.
    • sport - Der Bereich des Quellport (z.B. 1000 - 2000). Ein gültiger sport-Wert für beide Start- und Endwerte reicht von 0 bis 65534. Der Startwert darf nicht größer als der Endwert sein.
    • suppress_prefixlength - Lehnt Routingentscheidungen ab, die die angegebene oder kürzere Präfixlänge aufweisen.
    • table - Die Routen-Tabelle, die für die to-table-Aktion nachgeschlagen werden soll. table unterstützt sowohl die numerische als auch die benannte Tabelle. Um die benannte Tabelle anzugeben, müssen die Benutzer sicherstellen, dass die benannte Tabelle ordnungsgemäß in /etc/iproute2/rt_tables oder /etc/iproute2/rt_tables.d/*.conf definiert ist.
    • to - Die Zieladresse des Pakets, die übereinstimmen soll (z.B. 192.168.100.58/24).
    • tos - Wählen Sie den tos-Wert, um übereinzustimmen.
    • uid - Der Bereich der uid, um Übereinstimmungen zu erzielen (z.B. 1000 - 2000). Ein gültiger uid-Wert für beide Start- und Endwerte reicht von 0 bis 4294967295. Der Startwert darf nicht größer als der Endwert sein.
  • route_append_only

    Die route_append_only-Option erlaubt es nur, neue Routen zu den vorhandenen Routen im System hinzuzufügen.

    Wenn die boolesche Option route_append_only auf true gesetzt ist, werden die angegebenen Routen zum aktuellen Routen hinzugefügt. Wenn route_append_only auf false (Standard) gesetzt ist, werden die aktuellen Routen ersetzt. Beachten Sie, dass das Setzen von route_append_only auf true ohne route anzugeben, den Effekt hat, die aktuellen statischen Routen beizubehalten.

  • rule_append_only

    Die rule_append_only-boolesche Option ermöglicht es, die aktuellen Routingregeln zu erhalten.

Hinweis: Wenn route_append_only oder rule_append_only nicht angegeben sind, löscht die netzwerk-Rolle die aktuellen Routen oder Routingregeln.

Hinweis: Ports zu Brücken-, Bond- oder Teamgeräten können keine ip-Einstellungen angeben.

ethtool

Die ethtool-Einstellungen ermöglichen es, verschiedene Funktionen ein- oder auszuschalten. Die Namen entsprechen den Namen, die vom ethtool-Werkzeug verwendet werden. Je nach tatsächlichem Kernel und Gerät wird möglicherweise die Änderung einiger Optionen nicht unterstützt.

Die ethtool-Konfiguration unterstützt die folgenden Optionen:

  • ring

    Ändert die rx/tx ring-Parameter des angegebenen Netzwerkgeräts. Die Liste der unterstützten ring-Parameter ist:

    • rx - Ändert die Anzahl der Ring-Einträge für den Rx-Ring.
    • rx-jumbo - Ändert die Anzahl der Ring-Einträge für den Rx-Jumbo-Ring.
    • rx-mini - Ändert die Anzahl der Ring-Einträge für den Rx-Mini-Ring.
    • tx - Ändert die Anzahl der Ring-Einträge für den Tx-Ring.
  ethtool:
    features:
      esp_hw_offload: true|false  # optional
      esp_tx_csum_hw_offload: true|false  # optional
      fcoe_mtu: true|false  # optional
      gro: true|false  # optional
      gso: true|false  # optional
      highdma: true|false  # optional
      hw_tc_offload: true|false  # optional
      l2_fwd_offload: true|false  # optional
      loopback: true|false  # optional
      lro: true|false  # optional
      ntuple: true|false  # optional
      rx: true|false  # optional
      rx_all: true|false  # optional
      rx_fcs: true|false  # optional
      rx_gro_hw: true|false  # optional
      rx_udp_tunnel_port_offload: true|false  # optional
      rx_vlan_filter: true|false  # optional
      rx_vlan_stag_filter: true|false  # optional
      rx_vlan_stag_hw_parse: true|false  # optional
      rxhash: true|false  # optional
      rxvlan: true|false  # optional
      sg: true|false  # optional
      tls_hw_record: true|false  # optional
      tls_hw_tx_offload: true|false  # optional
      tso: true|false  # optional
      tx: true|false  # optional
      tx_checksum_fcoe_crc: true|false  # optional
      tx_checksum_ip_generic: true|false  # optional
      tx_checksum_ipv4: true|false  # optional
      tx_checksum_ipv6: true|false  # optional
      tx_checksum_sctp: true|false  # optional
      tx_esp_segmentation: true|false  # optional
      tx_fcoe_segmentation: true|false  # optional
      tx_gre_csum_segmentation: true|false  # optional
      tx_gre_segmentation: true|false  # optional
      tx_gso_partial: true|false  # optional
      tx_gso_robust: true|false  # optional
      tx_ipxip4_segmentation: true|false  # optional
      tx_ipxip6_segmentation: true|false  # optional
      tx_nocache_copy: true|false  # optional
      tx_scatter_gather: true|false  # optional
      tx_scatter_gather_fraglist: true|false  # optional
      tx_sctp_segmentation: true|false  # optional
      tx_tcp_ecn_segmentation: true|false  # optional
      tx_tcp_mangleid_segmentation: true|false  # optional
      tx_tcp_segmentation: true|false  # optional
      tx_tcp6_segmentation: true|false  # optional
      tx_udp_segmentation: true|false  # optional
      tx_udp_tnl_csum_segmentation: true|false  # optional
      tx_udp_tnl_segmentation: true|false  # optional
      tx_vlan_stag_hw_insert: true|false  # optional
      txvlan: true|false  # optional
    coalesce:
      adaptive_rx: true|false  # optional
      adaptive_tx: true|false  # optional
      pkt_rate_high: 0  # optional minimum=0 maximum=0xffffffff
      pkt_rate_low: 0  # optional minimum=0 maximum=0xffffffff
      rx_frames: 0  # optional minimum=0 maximum=0xffffffff
      rx_frames_high: 0  # optional minimum=0 maximum=0xffffffff
      rx_frames_irq: 0  # optional minimum=0 maximum=0xffffffff
      rx_frames_low: 0  # optional minimum=0 maximum=0xffffffff
      rx_usecs: 0  # optional minimum=0 maximum=0xffffffff
      rx_usecs_high: 0  # optional minimum=0 maximum=0xffffffff
      rx_usecs_irq: 0  # optional minimum=0 maximum=0xffffffff
      rx_usecs_low: 0  # optional minimum=0 maximum=0xffffffff
      sample_interval: 0  # optional minimum=0 maximum=0xffffffff
      stats_block_usecs: 0  # optional minimum=0 maximum=0xffffffff
      tx_frames: 0  # optional minimum=0 maximum=0xffffffff
      tx_frames_high: 0  # optional minimum=0 maximum=0xffffffff
      tx_frames_irq: 0  # optional minimum=0 maximum=0xffffffff
      tx_frames_low: 0  # optional minimum=0 maximum=0xffffffff
      tx_usecs: 0  # optional minimum=0 maximum=0xffffffff
      tx_usecs_high: 0  # optional minimum=0 maximum=0xffffffff
      tx_usecs_irq: 0  # optional minimum=0 maximum=0xffffffff
      tx_usecs_low: 0  # optional minimum=0 maximum=0xffffffff
    ring:
      rx: 0  # optional minimum=0 maximum=0xffffffff
      rx_jumbo: 0  # optional minimum=0 maximum=0xffffffff
      rx_mini: 0  # optional minimum=0 maximum=0xffffffff
      tx: 0  # optional minimum=0 maximum=0xffffffff

ieee802_1x

Konfiguriert die 802.1x-Authentifizierung für eine Schnittstelle.

Derzeit ist NetworkManager der einzige unterstützte Provider, und EAP-TLS ist die einzige unterstützte EAP-Methode.

SSL-Zertifikate und Schlüssel müssen auf dem Host bereitgestellt werden, bevor die Rolle ausgeführt wird.

  • eap

    Die erlaubte EAP-Methode, die bei der Authentifizierung im Netzwerk mit 802.1x verwendet wird.

    Derzeit ist tls der Standard- und einzige akzeptierte Wert.

  • identity (erforderlich)

    Identitätszeichenfolge für EAP-Authentifizierungsmethoden.

  • private_key (erforderlich)

    Absoluter Pfad zum privaten Schlüssel des Clients, der für die 802.1x-Authentifizierung verwendet wird (PEM- oder PKCS#12-kodiert).

  • private_key_password

    Passwort für den privaten Schlüssel, der in private_key angegeben ist.

  • private_key_password_flags

    Liste von Flags, um zu konfigurieren, wie das Passwort für den privaten Schlüssel verwaltet wird.

    Mehrere Flags können angegeben werden.

    Gültige Flags sind:

    • none
    • agent-owned
    • not-saved
    • not-required

    Siehe die offizielle NetworkManager-Dokumentation zu "Secret flag types" für weitere Details (man 5 nm-settings).

  • client_cert (erforderlich)

    Absoluter Pfad zum PEM-kodierten Zertifikat des Clients, das für die 802.1x-Authentifizierung verwendet wird.

  • ca_cert

    Absoluter Pfad zum PEM-kodierten Zertifikat der Zertifizierungsstelle, das verwendet wird, um den EAP-Server zu verifizieren.

  • ca_path

    Absoluter Pfad zum Verzeichnis, das zusätzliche PEM-kodierte CA-Zertifikate enthält, die zur Überprüfung des EAP-Servers verwendet werden. Kann anstelle von oder zusätzlich zu ca_cert verwendet werden. Kann nicht verwendet werden, wenn system_ca_certs aktiviert ist.

  • system_ca_certs

    Wenn auf true gesetzt, verwendet NetworkManager die vertrauenswürdigen CA-Zertifikate des Systems zur Verifizierung des EAP-Servers.

  • domain_suffix_match

    Wenn festgelegt, sorgt NetworkManager dafür, dass der Domainname des EAP-Serverzertifikats mit diesem String übereinstimmt.

bond

Die bond-Einstellung konfiguriert die Optionen von bondierten Schnittstellen (Typ bond). Siehe die Kernel-Dokumentation für Bonding oder die Dokumentation von nmcli Ihrer Distribution für gültige Werte. Es unterstützt die folgenden Optionen:

  • mode

    Bonding-Modus. Die möglichen Werte sind balance-rr (Standard), active-backup, balance-xor, broadcast, 802.3ad, balance-tlb oder balance-alb.

  • ad_actor_sys_prio

    Im Bonding-Modus 802.3ad gibt dies die Systempriorität an. Der gültige Bereich ist 1 - 65535.

  • ad_actor_system

    Im Bonding-Modus 802.3ad gibt dies die MAC-Adresse des Systems für den Akteur in Protokoll-Paket-Austausch (LACPDUs) an.

  • ad_select

    Diese Option gibt die Aggregationsauswahl-Logik 802.3ad an. Die möglichen Werte sind: stable, bandwidth, count.

  • ad_user_port_key

    Im Bonding-Modus 802.3ad definiert dies die oberen 10 Bits des Portschlüssels. Der zulässige Wertebereich liegt zwischen 0 - 1023.

  • all_ports_active

all_slaves_active im Kernel und NetworkManager. Der boolesche Wert false entfernt die doppelten Frames (die auf inaktiven Ports empfangen wurden), und der boolesche Wert true liefert die doppelten Frames.

  • arp_all_targets

    Diese Option gibt an, wie viele arp_ip_targets erreichbar sein müssen, damit der ARP-Überwachungsdienst einen Port als aktiv betrachtet. Die möglichen Werte sind any oder all.

  • arp_interval

    Diese Option gibt die ARP-Link-Überwachungsfrequenz in Millisekunden an. Ein Wert von 0 deaktiviert die ARP-Überwachung.

  • arp_validate

    In allen Modi, die ARP-Überwachung unterstützen, gibt diese Option an, ob ARP-Proben und -Antworten validiert werden sollen. Oder für die Zwecke der Linküberwachung wird hier entschieden, ob nicht-ARP-Verkehr gefiltert (außer Acht gelassen) werden soll. Die möglichen Werte sind: none, active, backup, all, filter, filter_active, filter_backup.

  • arp_ip_target

    Wenn arp_interval aktiviert ist, gibt diese Option die IP-Adressen an, die als ARP-Überwachungsziel verwendet werden sollen.

  • downdelay

    Die Zeit, die gewartet werden soll (in Millisekunden), bevor ein Port nach dem Erkennen eines Linkfehlers deaktiviert wird.

  • fail_over_mac

    Diese Option gibt die Richtlinie an, um die MAC-Adresse für das Bond-Interface im aktiven Backup-Modus auszuwählen. Die möglichen Werte sind: none (Standard), active, follow.

  • lacp_rate

    Im Bonding-Modus 802.3ad definiert diese Option die Rate, mit der wir von unserem Linkpartner verlangen, LACPDU-Pakete zu übermitteln. Die möglichen Werte sind: slow, fast.

  • lp_interval

    Diese Option gibt die Anzahl der Sekunden an, zwischen den Instanzen, in denen der Bonding-Treiber Lernpakete an jeden Port-Partner-Switch sendet.

  • miimon

    Legt das MII-Link-Überwachungsintervall (in Millisekunden) fest.

  • min_links

    Diese Option gibt die minimale Anzahl von Links an, die aktiv sein müssen, bevor das Trägersignal gesetzt wird.

  • num_grat_arp

    Diese Option gibt die Anzahl der Benachrichtigungen für Partner (gratuitous ARPs) an, die nach einem Failover-Ereignis gesendet werden sollen. Für den zulässigen Wert reicht der Bereich von 0 bis 255.

  • packets_per_port

    Im Bonding-Modus balance-rr gibt diese Option die Anzahl der Pakete an, die für ein Port in der Netzwerkübertragung erlaubt sind, bevor auf das nächste gewechselt wird. Der zulässige Wertebereich liegt zwischen 0 - 65535.

  • peer_notif_delay

    Diese Option gibt die Verzögerung (in Millisekunden) zwischen jeder Partnerbenachrichtigung an, wenn diese nach einem Failover-Ereignis ausgegeben wird.

  • primary

    Diese Option definiert das primäre Gerät.

  • primary_reselect

    Diese Option gibt die Resektionen für den primären Port an. Die möglichen Werte sind: always, better, failure.

  • resend_igmp

    Diese Option gibt die Anzahl der IGMP-Mitgliedschaftsberichte an, die nach einem Failover-Ereignis gesendet werden sollen. Der zulässige Wertebereich liegt zwischen 0 und 255.

  • tlb_dynamic_lb

    Diese Option gibt an, ob dynamisches Shuffling von Flows im TLB-Modus aktiviert ist. Der boolesche Wert true aktiviert das Flow-Shuffling, während der boolesche Wert false es deaktiviert.

  • updelay

    Diese Option gibt die Zeit (in Millisekunden) an, die gewartet wird, bevor ein Port aktiviert wird, nachdem eine Linkwiederherstellung erkannt wurde.

  • use_carrier

    Diese Option gibt an, ob MII oder ETHTOOL-Ioctls anstelle von netif_carrier_ok() verwendet werden sollen, um den Linkstatus zu bestimmen. Der boolesche Wert true ermöglicht die Verwendung von netif_carrier_ok(), während der boolesche Wert false MII oder ETHTOOL-Ioctls verwendet.

  • xmit_hash_policy

    Diese Option gibt die Übertragungs-Hash-Richtlinie an, die für die Portauswahl verwendet werden soll, die möglichen Werte sind: layer2, layer3+4, layer2+3, encap2+3, encap3+4, vlan+srcmac.

Beispiele für Optionen

Das gleiche Verbindungsprofil mehrmals einstellen:

netzwerk_connections:
  - name: Wired0
    type: ethernet
    interface_name: eth0
    ip:
      dhcp4: true

  - name: Wired0
    state: up

Aktivieren eines bestehenden Verbindungsprofils:

netzwerk_connections:
  - name: eth0
    state: up

Deaktivieren eines bestehenden Verbindungsprofils:

netzwerk_connections:
  - name: eth0
    state: down

Erstellen eines persistenten Verbindungsprofils:

netzwerk_connections:
  - name: eth0
    #persistent_state: present  # Standard
    type: ethernet
    autoconnect: true
    mac: "00:00:5e:00:53:5d"
    ip:
      dhcp4: true

Angeben eines verbindenden Profils für ein Ethernet-Gerät mit der ID_PATH:

netzwerk_connections:
  - name: eth0
    type: ethernet
    # Für PCI-Geräte hat der Pfad die Form "pci-$domain:$bus:$device.$function"
    # Das Profil entspricht nur der Schnittstelle an der PCI-Adresse pci-0000:00:03.0
    match:
      path:
        - pci-0000:00:03.0
    ip:
      address:
        - 192.0.2.3/24
  - name: eth0
    type: ethernet
    # Angabe eines verbindenden Profils für ein Ethernet-Gerät nur mit der PCI-Adresse
    # pci-0000:00:01.0 oder pci-0000:00:03.0
    match:
      path:
        - pci-0000:00:0[1-3].0
        - &!pci-0000:00:02.0
    ip:
      address:
        - 192.0.2.3/24

Löschen eines Verbindungsprofils mit dem Namen eth0 (sofern vorhanden):

netzwerk_connections:
  - name: eth0
    persistent_state: absent

Konfigurieren der Ethernet-Link-Einstellungen:

netzwerk_connections:
  - name: eth0
    type: ethernet

    ethernet:
      autoneg: false
      speed: 1000
      duplex: full

Erstellen einer Brückenverbindung:

netzwerk_connections:
  - name: br0
    type: bridge
    #interface_name: br0  # standardmäßig der Verbindungsname

Konfigurieren einer Brückenverbindung:

netzwerk_connections:
  - name: internal-br0
    interface_name: br0
    type: bridge
    ip:
      dhcp4: false
      auto6: false

Festlegen von controller und port_type:

netzwerk_connections:
  - name: br0-bond0
    type: bond
    interface_name: bond0
    controller: internal-br0
    port_type: bridge

  - name: br0-bond0-eth1
    type: ethernet
    interface_name: eth1
    controller: br0-bond0
    port_type: bond

Konfigurieren von VLANs:

netzwerk_connections:
  - name: eth1-profil
    autoconnect: false
    type: ethernet
    interface_name: eth1
    ip:
      dhcp4: false
      auto6: false

  - name: eth1.6
    autoconnect: false
    type: vlan
    parent: eth1-profil
    vlan:
      id: 6
    ip:
      address:
        - 192.0.2.5/24
      auto6: false

Konfigurieren von MacVLAN:

netzwerk_connections:
  - name: eth0-profil
    type: ethernet
    interface_name: eth0
    ip:
      address:
        - 192.168.0.1/24

  - name: veth0
    type: macvlan
    parent: eth0-profil
    macvlan:
      mode: bridge
      promiscuous: true
      tap: false
    ip:
      address:
        - 192.168.1.1/24

Konfigurieren einer drahtlosen Verbindung:

netzwerk_connections:
  - name: wlan0
    type: wireless
    wireless:
      ssid: "Mein WPA2-PSK-Netzwerk"
      key_mgmt: "wpa-psk"
      # Empfehlung, das drahtlose Passwort in einem Tresor zu verschlüsseln
      # siehe https://docs.ansible.com/ansible/latest/user_guide/vault.html
      password: "p@55w0rD"

Festlegen der IP-Konfiguration:

netzwerk_connections:
  - name: eth0
    type: ethernet
    ip:
      route_metric4: 100
      dhcp4: false
      #dhcp4_send_hostname: false
      gateway4: 192.0.2.1

      dns:
        - 192.0.2.2
        - 198.51.100.5
      dns_search:
        - example.com
        - subdomain.example.com
      dns_options:
        - rotate
        - timeout:1

      route_metric6: -1
      auto6: false
      gateway6: 2001:db8::1

      address:
        - 192.0.2.3/24
        - 198.51.100.3/26
        - 2001:db8::80/7

      route:
        - network: 198.51.100.128
          prefix: 26
          gateway: 198.51.100.1
          metric: 2
        - network: 198.51.100.64
          prefix: 26
          gateway: 198.51.100.6
          metric: 4
      route_append_only: false
      rule_append_only: true

Konfigurieren von 802.1x:

netzwerk_connections:
  - name: eth0
    type: ethernet
    ieee802_1x:
      identity: meinhost
      eap: tls
      private_key: /etc/pki/tls/client.key
      # Empfehlung, das Passwort für den privaten Schlüssel in einem Tresor zu verschlüsseln
      # siehe https://docs.ansible.com/ansible/latest/user_guide/vault.html
      private_key_password: "p@55w0rD"
      client_cert: /etc/pki/tls/client.pem
      ca_cert: /etc/pki/tls/cacert.pem
      domain_suffix_match: example.com

Konfigurieren von Enhanced Open(OWE):

netzwerk_connections:
  - name: wlan0
    type: wireless
    wireless:
      ssid: "WIFI_SSID"
      key_mgmt: "owe"

Beispiele für die Anwendung der Netzwerkkonfigurationszustandskonfiguration

Konfigurieren der IP-Adressen:

netzwerk_state:
  interfaces:
    - name: ethtest0
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.168.122.250
            prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
          - ip: 2001:db8::1:1
            prefix-length: 64
        autoconf: false
        dhcp: false
    - name: ethtest1
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.168.100.192
            prefix-length: 24
        auto-dns: false
        dhcp: false
      ipv6:
        enabled: true
        address:
          - ip: 2001:db8::2:1
            prefix-length: 64
        autoconf: false
        dhcp: false

Konfigurieren der Route:

netzwerk_state:
  interfaces:
    - name: eth1
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.0.2.251
            prefix-length: 24
        dhcp: false

  routes:
    config:
      - destination: 198.51.100.0/24
        metric: 150
        next-hop-address: 192.0.2.251
        next-hop-interface: eth1
        table-id: 254

Konfigurieren der DNS-Suche und -Server:

netzwerk_state:
  dns-resolver:
    config:
      search:
        - example.com
        - example.org
      server:
        - 2001:4860:4860::8888
        - 8.8.8.8

Ungültige und falsche Konfiguration

Die netzwerk-Rolle lehnt ungültige Konfigurationen ab. Es wird empfohlen, die Rolle zunächst mit --check zu testen. Es gibt keinen Schutz gegen falsche (aber gültige) Konfigurationen. Überprüfen Sie Ihre Konfiguration, bevor Sie sie anwenden.

Internes Modul von netzwerk_connections

Das interne Modul netzwerk_connections ist für die interne Verwendung oder Integrationstests gedacht und nicht für den direkten externen Zugang oder die Nutzung. Wenn dieses interne Modul in Integrationstests verwendet wird, werden die Aufgaben, die in tasks/main.yaml angegeben sind, übersprungen, wodurch die Testausführung beschleunigt wird.

Kompatibilität

Die netzwerk-Rolle unterstützt dasselbe Konfigurationsschema für beide Provider (nm und initscripts). Das bedeutet, Sie können dasselbe Playbook mit NetworkManager und initscripts verwenden. Beachten Sie jedoch, dass nicht jede Option von jedem Provider genau gleich verarbeitet wird. Führen Sie zuerst einen Testlauf mit --check durch.

Es wird nicht unterstützt, eine Konfiguration für einen Provider zu erstellen und zu erwarten, dass ein anderer Provider sie verarbeitet. Zum Beispiel ist das Erstellen von Profilen mit dem initscripts-Provider und anschließendem Aktivieren von NetworkManager nicht garantiert, dass es automatisch funktioniert. Möglicherweise müssen Sie die Konfiguration anpassen, sodass sie von einem anderen Provider verwendet werden kann.

Zum Beispiel ist es akzeptabel, einen RHEL6-Host mit initscripts zu konfigurieren und auf RHEL7 zu aktualisieren, während initscripts in RHEL7 weiterhin verwendet werden. Was jedoch nicht garantiert ist, ist auf RHEL7 zu aktualisieren, initscripts zu deaktivieren und zu erwarten, dass NetworkManager automatisch die Konfiguration übernimmt.

Je nach Konfiguration von NetworkManager werden Verbindungen möglicherweise auch als ifcfg-Dateien gespeichert, aber es ist nicht garantiert, dass diese ifcfg-Dateien von den reinen initscripts verarbeitet werden können, nachdem der NetworkManager-Dienst deaktiviert wurde.

Die netzwerk-Rolle unterstützt außerdem die Konfiguration in bestimmten Ansible-Distributionen, die die Rolle wie RHEL behandeln, z. B. AlmaLinux, CentOS, OracleLinux, Rocky.

Einschränkungen

Da Ansible normalerweise über das Netzwerk arbeitet, z. B. über SSH, gibt es einige Einschränkungen zu beachten:

Die netzwerk-Rolle unterstützt keine Bootstrap-Netzwerkkonfiguration. Eine Option kann ansible-pull sein. Eine andere Möglichkeit könnte sein, den Host zu Beginn während der Installation (ISO-basiert, kickstart usw.) automatisch zu konfigurieren, sodass der Host mit einem Management-LAN oder VLAN verbunden ist. Es hängt stark von Ihrer Umgebung ab.

Für den initscripts-Provider bedeutet das Bereitstellen eines Profils lediglich, die ifcfg-Dateien zu erstellen. Nichts passiert automatisch, bis das Play ifup oder ifdown über die up- oder down Zustände ausgibt -- es sei denn, es gibt andere Komponenten, die von den ifcfg-Dateien abhängen und auf Änderungen reagieren.

Der initscripts-Provider erfordert, dass die verschiedenen Profile in der richtigen Reihenfolge vorhanden sind, wenn sie voneinander abhängen. Zum Beispiel muss das Bonding-Controller-Gerät vor den Portgeräten angegeben werden.

Wenn ein Profil für NetworkManager entfernt wird, nimmt dies auch die Verbindung herunter und entfernt möglicherweise virtuelle Schnittstellen. Beim initscripts-Provider ändert das Entfernen eines Profils nicht seinen aktuellen Laufzeitstatus (dies ist auch eine zukünftige Funktion für NetworkManager).

Für NetworkManager kann das Ändern einer Verbindung mit aktivierter automatischer Verbindung dazu führen, dass ein neues Profil auf einer zuvor nicht verbundenen Schnittstelle aktiviert wird. Außerdem führt das Löschen einer derzeit aktiven Verbindung von NetworkManager dazu, dass die Schnittstelle entfernt wird. Daher sollte die Reihenfolge der Schritte eingehalten werden, und bei der sorgfältigen Handhabung der autoconnect-Eigenschaft könnte es notwendig sein. Dies sollte in der RFE von NetworkManager rh#1401515 verbessert werden.

Es scheint schwierig zu sein, die Netzwerkkonfiguration des Zielhosts zu ändern, sodass die derzeitige SSH-Verbindung von Ansible unterbrochen wird. Wenn Sie das tun möchten, könnte ansible-pull eine Lösung sein. Alternativ könnte eine Kombination aus async/poll und dem Ändern des ansible_host während des Plays erforderlich sein.

TODO Die aktuelle Rolle unterstützt noch nicht, das Play einfach in einen Vorkonfigurationsschritt und einen zweiten Schritt zum Aktivieren der neuen Konfiguration aufzuteilen.

Im Allgemeinen müssen Sie, um das Play erfolgreich auszuführen, zunächst bestimmen, welche Konfiguration aktiv ist, und dann eine sorgfältige Abfolge von Schritten planen, um die neue Konfiguration zu ändern. Die tatsächliche Lösung hängt stark von Ihrer Umgebung ab.

Behebung möglicher Probleme

Wenn bei der Konfiguration des Netzwerks aus der Ferne etwas schiefgeht, müssen Sie möglicherweise physischen Zugang zur Maschine erhalten, um sich zu erholen.

TODO NetworkManager unterstützt eine Checkpoint/Rollback-Funktion. Zu Beginn des Plays könnten wir einen Checkpoint erstellen, und wenn wir aufgrund eines Fehlers die Konnektivität verlieren, würde NetworkManager nach einer Zeitüberschreitung automatisch zurücksetzen. Die Einschränkung besteht darin, dass dies nur mit NetworkManager funktioniert und es unklar ist, ob ein Rollback zu einer funktionierenden Konfiguration führen wird.

Wollen Sie beitragen? Werfen Sie einen Blick auf unsere Beitragsrichtlinien!

rpm-ostree

Siehe README-ostree.md

Installieren
ansible-galaxy install linux-system-roles.network
Lizenz
bsd-3-clause
Downloads
263.3k