Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]


12.9.4 Netzwerkeinrichtung

Durch das Modul (gnu services networking) werden Dienste zum Konfigurieren der Netzwerkschnittstellen und zum Einrichten der Netzwerkverbindung Ihrer Maschine bereitgestellt. Die Dienste decken unterschiedliche Arten ab, wie Sie Ihre Maschine einrichten können: Sie können eine statische Netzwerkkonfiguration einrichten, einen Client für das Dynamic Host Configuration Protocol (DHCP) benutzen oder Daemons wie NetworkManager oder Connman einsetzen, mit denen der gesamte Vorgang automatisch abläuft, automatisch auf Änderungen an der Verbindung reagiert wird und eine abstrahierte Benutzerschnittstelle bereitgestellt wird.

Auf einem Laptop sind NetworkManager und Connman bei weitem die komfortabelsten Optionen, darum enthalten die vorgegebenen Dienste für Desktop-Arbeitsumgebungen NetworkManager (siehe %desktop-services). Für einen Server, eine virtuelle Maschine oder einen Container sind eine statische Netzwerkkonfiguration oder ein schlichter DHCP-Client meist angemessener.

Dieser Abschnitt beschreibt die verschiedenen Dienste zur Netzwerkeinrichtung, die Ihnen zur Verfügung stehen, angefangen bei der statischen Netzwerkkonfiguration.

Scheme-Variable: static-networking-service-type

Dies ist der Diensttyp für statisch konfigurierte Netzwerkschnittstellen. Sein Wert muss eine Liste von static-networking-Verbundsobjekten sein. Jedes deklariert eine Menge von Adressen, Routen und Links, wie im Folgenden gezeigt.

Hier sehen Sie die einfachst mögliche Konfiguration, die nur über eine einzelne Netzwerkkarte („Network Interface Controller“, NIC) eine Verbindung nur für IPv4 herstellt.

;; Statische Netzwerkkonfiguration mit einer Netzwerkkarte, nur IPv4.
(service static-networking-service-type
         (list (static-networking
                (addresses
                 (list (network-address
                        (device "eno1")
                        (value "10.0.2.15/24"))))
                (routes
                 (list (network-route
                        (destination "default")
                        (gateway "10.0.2.2"))))
                (name-servers '("10.0.2.3")))))

Obiges Code-Schnipsel kann ins services-Feld Ihrer Betriebssystemkonfiguration eingetragen werden (siehe Das Konfigurationssystem nutzen), um Ihre Maschine mit 10.0.2.15 als ihre IP-Adresse zu versorgen mit einer 24-Bit-Netzmaske für das lokale Netzwerk — also dass jede 10.0.2.x-Adresse im lokalen Netzwerk (LAN) ist. Kommunikation mit Adressen außerhalb des lokalen Netzwerks wird über 10.0.2.2 geleitet. Rechnernamen werden über Anfragen ans Domain Name System (DNS) an 10.0.2.3 aufgelöst.

Datentyp: static-networking

Dieser Datentyp repräsentiert eine statische Netzwerkkonfiguration.

Folgendes Beispiel zeigt, wie Sie die Konfiguration einer Maschine deklarieren, die nur über eine einzelne Netzwerkkarte („Network Interface Controller“, NIC), die als eno1 verfügbar ist, über eine IPv4-Adresse und eine IPv6-Adresse verbunden ist:

;; Netzwerkkonfiguration mit einer Netzwerkkarte, IPv4 + IPv6.
(static-networking
 (addresses (list (network-address
                   (device "eno1")
                   (value "10.0.2.15/24"))
                  (network-address
                   (device "eno1")
                   (value "2001:123:4567:101::1/64"))))
 (routes (list (network-route
                (destination "default")
                (gateway "10.0.2.2"))
               (network-route
                (destination "default")
                (gateway "2020:321:4567:42::1"))))
 (name-servers '("10.0.2.3")))

Wenn Sie mit dem Befehl ip aus dem iproute2-Paket von Linux-basierten Systemen vertraut sind, sei erwähnt, dass obige Deklaration gleichbedeutend damit ist, wenn Sie dies eingeben:

ip address add 10.0.2.15/24 dev eno1
ip address add 2001:123:4567:101::1/64 dev eno1
ip route add default via inet 10.0.2.2
ip route add default via inet6 2020:321:4567:42::1

Führen Sie für mehr Informationen man 8 ip aus. Alteingesessene GNU/Linux-Nutzer werden sicherlich wissen, wie sie das mit ifconfig und route machen, aber wir ersparen es Ihnen.

Für den Datentyp stehen folgende Felder zur Verfügung:

addresses
links (Vorgabe: '())
routes (Vorgabe: '())

Die Liste der network-address-, network-link- und network-route-Verbundsobjekte für dieses Netzwerk (siehe unten).

name-servers (Vorgabe: '())

Die Liste der IP-Adressen (als Zeichenketten) der DNS-Server. Diese IP-Adressen werden in /etc/resolv.conf geschrieben.

provision (Vorgabe: '(networking))

Wenn dies ein wahrer Wert ist, bezeichnet dies die Liste von Symbolen für den Shepherd-Dienst, der dieser Netzwerkkonfiguration entspricht.

requirement (Vorgabe: '())

Die Liste der Shepherd-Dienste, von denen dieser abhängt.

Datentyp: network-address

Dieser Datentyp repräsentiert die IP-Adresse einer Netzwerkschnittstelle.

device

Der Name der Netzwerkschnittstelle, die für diese Adresse benutzt wird — z.B. "eno1".

value

Die eigentliche IP-Adresse und Netzwerkmaske in CIDR-Notation als Zeichenkette.

Zum Beispiel bezeichnet "10.0.2.15/24" die IPv4-Adresse 10.0.2.15 auf einem Subnetzwerk, dessen erste 24 Bit gleich sind — alle 10.0.2.x-Adressen befinden sich im selben lokalen Netzwerk

ipv6?

Ob mit value eine IPv6-Adresse angegeben wird. Vorgegeben ist, dies automatisch festzustellen.

Datentyp: network-route

Dieser Datentyp steht für eine Netzwerkroute.

destination

Das Ziel der Route (als Zeichenkette) entweder mit einer IP-Adresse oder "default" zum Einstellen der Vorgaberoute.

source (Vorgabe: #f)

Die Quelle der Route.

device (Vorgabe: #f)

Welches Gerät für diese Route benutzt wird — z.B. "eno2".

ipv6? (Vorgabe: automatisch)

Ob es sich um eine IPv6-Route handelt. Das vorgegebene Verhalten ist, dies automatisch anhand des Eintrags in destination oder gateway zu bestimmen.

gateway (Vorgabe: #f)

Die IP-Adresse des Netzwerkzugangs (als Zeichenkette), über die der Netzwerkverkehr geleitet wird.

Der Datentyp für einen Netzwerk-Link (siehe Link in Guile-Netlink-Handbuch).

name

Der Name des Links — z.B. "v0p0".

type

Eine Zeichenkette, die für den Typ des Links steht — z.B. 'veth.

arguments

Eine Liste der Argumente für diesen Link-Typ.

Scheme-Variable: %loopback-static-networking

Dies ist das static-networking-Verbundsobjekt, das für das „Loopback-Gerät“ lo steht, mit IP-Adressen 127.0.0.1 und ::1, was den Shepherd-Dienst loopback zur Verfügung stellt.

Scheme-Variable: %qemu-static-networking

Dies ist das static-networking-Verbundsobjekt, das für eine Netzwerkeinrichtung mit QEMUs als Nutzer ausgeführtem Netzwerkstapel („User-Mode Network Stack“) auf dem Gerät eth0 steht (siehe Using the user mode network stack in QEMU Documentation).

Scheme-Variable: dhcp-client-service-type

Dies ist der Diensttyp für den Dienst, der dhcp ausführt, einen Client für das „Dynamic Host Configuration Protocol“ (DHCP), der auf allen Netzwerkschnittstellen außer „loopback“ läuft. Sein Wert ist das zu verwendende DHCP-Client-Paket; vorgegeben ist isc-dhcp.

Scheme-Variable: network-manager-service-type

Dies ist der Diensttyp für den NetworkManager-Dienst. Der Wert dieses Diensttyps ist ein network-manager-configuration-Verbundsobjekt.

Dieser Dienst gehört zu den %desktop-services (siehe Desktop-Dienste).

Datentyp: network-manager-configuration

Datentyp, der die Konfiguration von NetworkManager repräsentiert.

network-manager (Vorgabe: network-manager)

Das zu verwendende NetworkManager-Paket.

dns (Vorgabe: "default")

Der Verarbeitungsmodus für DNS-Anfragen. Er hat Einfluss darauf, wie NetworkManager mit der Konfigurationsdatei resolv.conf verfährt.

default

NetworkManager aktualisiert resolv.conf, damit sie die Nameserver enthält, die von zurzeit aktiven Verbindungen benutzt werden.

dnsmasq

NetworkManager führt dnsmasq als lokal zwischenspeichernden Nameserver aus und aktualisiert resolv.conf so, dass es auf den lokalen Nameserver verweist. Falls Sie mit einem VPN verbunden sind, wird dafür eine getrennte DNS-Auflösung verwendet („Conditional Forwarding“).

Mit dieser Einstellung können Sie Ihre Netzwerkverbindung teilen. Wenn Sie sie zum Beispiel mit einem anderen Laptop über ein Ethernet-Kabel teilen möchten, können Sie nm-connection-editor öffnen und die Methode der Ethernet-Verbindung für IPv4 und IPv6 auf „Gemeinsam mit anderen Rechnern“ stellen und daraufhin die Verbindung neu herstellen (oder Ihren Rechner neu starten).

Sie können so auch eine Verbindung vom Wirts- zum Gastsystem in virtuellen Maschinen mit QEMU (siehe Guix in einer VM installieren) herstellen, d.h. eine „Host-to-Guest Connection“). Mit einer solchen Wirt-nach-Gast-Verbindung können Sie z.B. von einem Webbrowser auf Ihrem Wirtssystem auf einen Web-Server zugreifen, der auf der VM läuft (siehe Web-Dienste). Sie können sich damit auch über SSH mit der virtuellen Maschine verbinden (siehe openssh-service-type). Um eine Wirt-nach-Gast-Verbindung einzurichten, führen Sie einmal diesen Befehl aus:

nmcli connection add type tun \
 connection.interface-name tap0 \
 tun.mode tap tun.owner $(id -u) \
 ipv4.method shared \
 ipv4.addresses 172.28.112.1/24

Danach geben Sie bei jedem Start Ihrer virtuellen QEMU-Maschine (siehe Guix in einer VM starten) die Befehlszeilenoption -nic tap,ifname=tap0,script=no,downscript=no an qemu-system-… mit.

none

NetworkManager verändert resolv.conf nicht.

vpn-plugins (Vorgabe: '())

Dies ist die Liste der verfügbaren Plugins für virtuelle private Netzwerke (VPN). Zum Beispiel kann das Paket network-manager-openvpn angegeben werden, womit NetworkManager virtuelle private Netzwerke mit OpenVPN verwalten kann.

Scheme-Variable: connman-service-type

Mit diesem Diensttyp wird Connman ausgeführt, ein Programm zum Verwalten von Netzwerkverbindungen.

Sein Wert muss ein connman-configuration-Verbundsobjekt wie im folgenden Beispiel sein:

Weiter unten werden Details der connman-configuration erklärt.

Datentyp: connman-configuration

Datentyp, der die Konfiguration von Connman repräsentiert.

connman (Vorgabe: connman)

Das zu verwendende Connman-Paket.

disable-vpn? (Vorgabe: #f)

Falls dies auf wahr gesetzt ist, wird Connmans VPN-Plugin deaktiviert.

Scheme-Variable: wpa-supplicant-service-type

Dies ist der Diensttyp, um WPA Supplicant auszuführen. Dabei handelt es sich um einen Authentisierungsdaemon, der notwendig ist, um sich gegenüber verschlüsselten WLAN- oder Ethernet-Netzwerken zu authentisieren.

Datentyp: wpa-supplicant-configuration

Repräsentiert die Konfiguration des WPA-Supplikanten.

Sie hat folgende Parameter:

wpa-supplicant (Vorgabe: wpa-supplicant)

Das WPA-Supplicant-Paket, was benutzt werden soll.

requirement (Vorgabe: '(user-processes loopback syslogd)

Die Liste der Dienste, die vor dem WPA-Supplikanten bereits gestartet sein sollen.

dbus? (Vorgabe: #t)

Ob auf Anfragen auf D-Bus gelauscht werden soll.

pid-file (Vorgabe: "/var/run/wpa_supplicant.pid")

Wo die PID-Datei abgelegt wird.

interface (Vorgabe: #f)

Wenn dieses Feld gesetzt ist, muss es den Namen einer Netzwerkschnittstelle angeben, die von WPA Supplicant verwaltet werden soll.

config-file (Vorgabe: #f)

Optionale Konfigurationsdatei.

extra-options (Vorgabe: '())

Liste zusätzlicher Befehlszeilenoptionen, die an den Daemon übergeben werden.

Manche Netzwerkgeräte wie Modems brauchen eine besondere Behandlung, worauf die folgenden Dienste abzielen.

Scheme-Variable: modem-manager-service-type

Dies ist der Diensttyp für den ModemManager-Dienst. Der Wert dieses Diensttyps ist ein modem-manager-configuration-Verbundsobjekt.

Dieser Dienst gehört zu den %desktop-services (siehe Desktop-Dienste).

Datentyp: modem-manager-configuration

Repräsentiert die Konfiguration vom ModemManager.

modem-manager (Vorgabe: modem-manager)

Das ModemManager-Paket, was benutzt werden soll.

Scheme-Variable: usb-modeswitch-service-type

Dies ist der Diensttyp für den USB_ModeSwitch-Dienst. Der Wert dieses Diensttyps ist ein usb-modeswitch-configuration-Verbundsobjekt.

Wenn sie eingesteckt werden, geben sich manche USB-Modems (und andere USB-Geräte) zunächst als Nur-Lese-Speichermedien und nicht als Modem aus. Sie müssen erst einem Moduswechsel („Modeswitching“) unterzogen werden, bevor sie benutzt werden können. Der USB_ModeSwitch-Diensttyp installiert udev-Regeln, um bei diesen Geräten automatisch ein Modeswitching durchzuführen, wenn sie eingesteckt werden.

Dieser Dienst gehört zu den %desktop-services (siehe Desktop-Dienste).

Datentyp: usb-modeswitch-configuration

Der Datentyp, der die Konfiguration von USB_ModeSwitch repräsentiert.

usb-modeswitch (Vorgabe: usb-modeswitch)

Das USB_ModeSwitch-Paket, das die Programmdateien für das Modeswitching enthält.

usb-modeswitch-data (Vorgabe: usb-modeswitch-data)

Das Paket, in dem die Gerätedaten und die udev-Regeldatei stehen, die USB_ModeSwitch benutzt.

config-file (Vorgabe: #~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf"))

Welche Konfigurationsdatei das USB_ModeSwitch-Aufrufprogramm („Dispatcher“) benutzt. Nach Vorgabe wird die mit USB_ModeSwitch ausgelieferte Konfigurationsdatei benutzt, die neben anderen Voreinstellungen die Protokollierung nach /var/log abschaltet. Wenn #f festgelegt wird, wird keine Konfigurationsdatei benutzt.


Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]