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


8.8.4 Netzwerkdienste

Das Modul (gnu services networking) bietet Dienste zum Konfigurieren des Netzwerks an.

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-Prozedur: dhcpd-service-type

Dieser Diensttyp definiert einen Dienst, der einen DHCP-Daemon ausführt. Um einen Dienst zu diesem Typ anzugeben, müssen Sie eine <dhcpd-configuration> bereitstellen. Zum Beispiel so:

(service dhcpd-service-type
         (dhcpd-configuration
          (config-file (local-file "my-dhcpd.conf"))
          (interfaces '("enp0s25"))))
Datentyp: dhcpd-configuration
package (Vorgabe: isc-dhcp)

Das Paket, das den DHCP-Daemon zur Verfügung stellt. Von diesem Paket wird erwartet, dass es den Daemon unter dem Pfad sbin/dhcpd relativ zum Verzeichnis der Paketausgabe bereitstellt. Das vorgegebene Paket ist der DHCP-Server vom ISC.

config-file (Vorgabe: #f)

Die Konfigurationsdatei, die benutzt werden soll. Sie muss angegeben werden und wird an dhcpd mittels seiner Befehlszeilenoption -cf übergeben. Ein beliebiges „dateiartiges“ Objekt kann dafür angegeben werden (siehe dateiartige Objekte). Siehe man dhcpd.conf für Details, welcher Syntax die Konfigurationsdatei genügen muss.

version (Vorgabe: "4")

Die DHCP-Version, die benutzt werden soll. Der ISC-DHCP-Server unterstützt die Werte „4“, „6“ und „4o6“. Das Feld entspricht den Befehlszeilenoptionen -4, -6 und -4o6 von dhcpd. Siehe man dhcpd für Details.

run-directory (Vorgabe: "/run/dhcpd")

Das zu benutzende Laufzeit-Verzeichnis („run“-Verzeichnis). Wenn der Dienst aktiviert wird, wird dieses Verzeichnis erzeugt, wenn es noch nicht existiert.

pid-file (Vorgabe: "/run/dhcpd/dhcpd.pid")

Die zu benutzende PID-Datei. Dieses Feld entspricht der Befehlszeilenoption -pf von dhcpd. Siehe man dhcpd für Details.

interfaces (Vorgabe: '())

Die Namen der Netzwerkschnittstelle, auf der dhcpd auf Broadcast-Nachrichten lauscht. Wenn diese Liste nicht leer ist, werden ihre Elemente (diese müssen Zeichenketten sein) an den dhcpd-Aufruf beim Starten des Daemons angehängt. Es ist unter Umständen nicht nötig, hier Schnittstellen ausdrücklich anzugeben; siehe man dhcpd für Details.

Scheme-Variable: static-networking-service-type

Dies ist der Typ für statisch konfigurierte Netzwerkschnittstellen.

Scheme-Prozedur: static-networking-service Schnittstelle IP [#:netmask #f] [#:gateway #f] [#:name-servers '()]  [#:requirement

'(udev)] Liefert einen Dienst, der die Schnittstelle auf dieser IP-Adresse startet. Wenn netmask wahr ist, wird es als Netzwerkmaske benutzt. Wenn gateway wahr ist, muss es eine Zeichenkette sein, die den voreingestellten Netzwerk-Zugang („Netzwerk-Gateway“) angibt. Als requirement („Anforderung“) können Abhängigkeiten von anderen Diensten deklariert werden, die vor dem Konfigurieren der Schnittstelle gestartet sein müssen.

Diese Prozedur kann mehrmals aufgerufen werden, einmal pro Netzwerkschnittstelle, die Sie möchten. Intern funktioniert sie, indem sie static-networking-service-type mit zusätzlichen Netzwerkschnittstellen erweitert, um die sich der Dienst kümmern soll.

Zum Beispiel:

(static-networking-service "eno1" "192.168.1.82"
                           #:gateway "192.168.1.2"
                           #:name-servers '("192.168.1.2"))
Scheme-Prozedur: wicd-service [#:wicd wicd]

Liefert einen Dienst, der Wicd ausführt, einen Netzwerkverwaltungsdaemon, um ein einfacheres Einrichten kabelgebundener und drahtloser Netzwerkanbindungen zu ermöglichen.

Dieser Dienst fügt das wicd-Paket zum globalen Profil hinzu und stellt dadurch mehrere Befehle zur Verfügung, um mit dem Daemon zu interagieren und Netzwerke einzurichten: wicd-client, eine grafische Benutzeroberfläche, und die Benutzungsschnittstellen wicd-cli und wicd-curses.

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.

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 zur Zeit 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.

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.

Scheme-Variable: iptables-service-type

Mit diesem Diensttyp wird eine iptables-Konfiguration eingerichtet. iptables ist ein Rahmen für Netzwerkpaketfilter, der vom Linux-Kernel unterstützt wird. Der Dienst unterstützt die Konfiguration von iptables für sowohl IPv4 als auch IPv6. Eine einfache Beispielkonfiguration, die alle eingehenden Verbindungen verweigert, die nicht an den SSH-Port 22 gehen, können Sie hier sehen:

(service iptables-service-type
         (iptables-configuration
          (ipv4-rules (plain-file "iptables.rules" "*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
"))
          (ipv6-rules (plain-file "ip6tables.rules" "*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
COMMIT
"))))
Datentyp: iptables-configuration

Repräsentiert die iptables-Konfiguration.

iptables (Vorgabe: iptables)

Das zu benutzende iptables-Paket, das iptables-restore und ip6tables-restore zur Verfügung stellt.

ipv4-rules (Vorgabe: %iptables-accept-all-rules)

Die zu benutzenden iptables-Regeln. Diese werden an iptables-restore übergeben. Als Regeln kann jedes „dateiartige“ Objekt angegeben werden (siehe dateiartige Objekte).

ipv6-rules (Vorgabe: %iptables-accept-all-rules)

Die zu benutzenden ip6tables-Regeln. Diese werden an ip6tables-restore übergeben. Als Regeln kann jedes „dateiartige“ Objekt angegeben werden (siehe dateiartige Objekte).

Scheme-Variable: nftables-service-type

Dieser Dienst richtet eine Konfiguration von nftables ein. nftables ist als Projekt ein Teil von Netfilter mit dem Ziel, den bestehenden Aufbau aus iptables, ip6tables, arptables und ebtables zu ersetzen. Es stellt einen neuen Rahmen für Netzwerkpaketfilter bereit sowie ein neues Werkzeug nft auf Anwendungsebene und eine Kompatibilitätsschicht für iptables. Dieser Dienst wird zusammen mit %default-nftables-ruleset ausgeliefert, einem vorgegebenen Satz von Regeln, der alle eingehenden Verbindungen außer auf dem SSH-Port 22 ablehnt. Um ihn zu benutzen, schreiben Sie einfach:

Datentyp: nftables-configuration

Datentyp, der die nftables-Konfiguration repräsentiert.

package (Vorgabe: nftables)

Das nftables-Paket, das nft zur Verfügung stellt.

ruleset (Vorgabe: %default-nftables-ruleset)

Die zu benutzenden nftables-Regeln. Als Regeln kann jedes „dateiartige“ Objekt angegeben werden (siehe dateiartige Objekte).

Scheme-Variable: ntp-service-type

Dies ist der Typ des Dienstes, der den ntpd-Daemon für das Network Time Protocol, kurz NTP, ausführt. Mit diesem Daemon wird die Systemuhr mit der Uhr auf den angegebenen NTP-Servern synchronisiert.

Der Wert dieses Dienstes ist ein ntpd-configuration-Objekt, wie im Folgenden beschrieben.

Datentyp: ntp-configuration

Der Datentyp für die Dienstkonfiguration des NTP-Dienstes.

servers (Vorgabe: %ntp-servers)

Dies ist die Liste der Server (<ntp-server>-Verbundsobjekte), mit denen ntpd synchronisiert wird. Siehe die Definition des ntp-server-Datentyps weiter unten.

allow-large-adjustment? (Vorgabe: #t)

Hiermit wird festgelegt, ob ntpd die Uhr beim ersten Umstellen um mehr als 1.000 Sekunden ändern darf.

ntp (Vorgabe: ntp)

Das NTP-Paket, was benutzt werden soll.

Scheme-Variable: %ntp-servers

Liste der Rechnernamen („Host“-Namen), die als vorgegebene NTP-Server benutzt werden. Dabei handelt es sich um die Server des NTP Pool Project.

Datentyp: ntp-server

Der Datentyp, der die Konfiguration eines NTP-Servers repräsentiert.

type (Vorgabe: 'server)

Die Art des NTP-Servers als Symbol, entweder 'pool, 'server, 'peer, 'broadcast oder 'manycastclient.

address

Die Adresse des Servers als Zeichenkette.

options

NTPD-Optionen, die für diesen bestimmten Server gelten sollen, angegeben als Liste von Optionsnamen und/oder Tupeln aus je Optionsname und -wert. Im folgenden Beispiel wird ein Server definiert, der die Optionen iburst und prefer sowie version 3 und eine maxpoll-Zeit von 16 Sekunden benutzen soll.

(ntp-server
 (type 'server)
 (address "ein.ntp.server.org")
 (options `(iburst (version 3) (maxpoll 16) prefer))))
Scheme-Prozedur: openntpd-service-type

Hiermit wird ntpd, der Network-Time-Protocol-Daemon (NTP-Daemon), ausgeführt, in seiner OpenNTPD-Implementierung. Der Daemon sorgt dafür, dass die Systemuhr mit den Uhren der eingestellten Server synchron bleibt.

(service
 openntpd-service-type
 (openntpd-configuration
  (listen-on '("127.0.0.1" "::1"))
  (sensor '("udcf0 correction 70000"))
  (constraint-from '("www.gnu.org"))
  (constraints-from '("https://www.google.com/"))
  (allow-large-adjustment? #t)))

Scheme-Variable: %openntpd-servers

Diese Variable bezeichnet eine Liste von Serveradressen, die in %ntp-servers definiert sind.

Datentyp: openntpd-configuration
openntpd (Vorgabe: (file-append openntpd "/sbin/ntpd"))

Das openntpd-Programm, das benutzt werden soll.

listen-on (Vorgabe: '("127.0.0.1" "::1"))

Eine Liste von lokalen IP-Adressen oder Rechnernamen („Host“-Namen), auf denen der ntpd-Daemon lauschen soll.

query-from (Vorgabe: '())

Eine Liste von lokalen IP-Adressen, die der ntpd-Daemon für ausgehende Anfragen benutzen soll.

sensor (Vorgabe: '())

Hiermit geben Sie eine Liste von Zeitdifferenz-Sensorgeräten an, die ntpd benutzen soll. ntpd wird auf jeden Sensor lauschen, der auch tatsächlich existiert, und solche, die nicht existieren, ignorieren. Siehe die Dokumentation beim Anbieter für weitere Informationen.

server (Vorgabe: '())

Hiermit geben Sie eine Liste von IP-Adressen oder Rechnernamen von NTP-Servern an, mit denen synchronisiert werden soll.

servers (Vorgabe: %openntp-servers)

Hiermit geben Sie eine Liste von IP-Adressen oder Rechnernamen von NTP-Pools an, mit denen synchronisiert werden soll.

constraint-from (Vorgabe: '())

ntpd kann so eingestellt werden, dass es das Datum aus der „Date“-Kopfzeile bei mit TLS übermittelten Anfragen an HTTPS-Server, denen vertraut wird, ausliest. Diese Zeitinformation wird nicht für Genauigkeit benutzt, sondern um mit authentifizierten Informationen die Auswirkungen eines Man-in-the-Middle-Angriffs auf unauthentifizierte NTP-Kommunikation einzuschränken. Geben Sie hierzu eine Liste von URLs, IP-Adressen oder Rechnernamen („Host“-Namen) von HTTPS-Servern an, um eine solche Beschränkung („Constraint“) einzurichten.

constraints-from (Vorgabe: '())

Wie bei constraint-from geben Sie auch hier eine Liste von URLs, IP-Adressen oder Rechnernamen von HTTPS-Servern an, um eine Beschränkung einzurichten. Falls der Rechnername zu mehreren IP-Adressen aufgelöst wird, berechnet ntpd den Median von allen als Beschränkung.

allow-large-adjustment? (Vorgabe: #f)

Legt fest, ob ntpd die Uhr beim ersten Umstellen um mehr als 180 Sekunden verstellen darf.

Scheme-Variable: inetd-service-type

Dieser Dienst führt den inetd-Daemon aus (siehe inetd invocation in GNU Inetutils). inetd lauscht auf Verbindungen mit Internet-Sockets und startet bei Bedarf das entsprechende Server-Programm, sobald eine Verbindung mit einem dieser Sockets hergestellt wird.

Der Wert dieses Dienstes ist ein inetd-configuration-Objekt. Im folgenden Beispiel wird der inetd-Daemon konfiguriert, um den eingebauten echo-Dienst sowie einen SMTP-Dienst anzubieten, wobei letzterer SMTP-Kommunikation über SSH an einen Server smtp-server über einen vom rechnernamen bezeichneten Zugang („Gateway“) weiterleitet:

(service
 inetd-service-type
 (inetd-configuration
  (entries (list
            (inetd-entry
             (name "echo")
             (socket-type 'stream)
             (protocol "tcp")
             (wait? #f)
             (user "root"))
            (inetd-entry
             (node "127.0.0.1")
             (name "smtp")
             (socket-type 'stream)
             (protocol "tcp")
             (wait? #f)
             (user "root")
             (program (file-append openssh "/bin/ssh"))
             (arguments
              '("ssh" "-qT" "-i" "/pfad/zum/ssh_schlüssel"
                "-W" "smtp-server:25" "benutzer@rechnername")))))))

Siehe unten für mehr Details über inetd-configuration.

Datentyp: inetd-configuration

Datentyp, der die Konfiguration von inetd repräsentiert.

program (Vorgabe: (file-append inetutils "/libexec/inetd"))

Das inetd-Programm, das benutzt werden soll.

entries (Vorgabe: '())

Eine Liste von inetd-Diensteinträgen. Jeder Eintrag sollte von einem inetd-entry-Konstruktor erzeugt werden.

Datentyp: inetd-entry

Datentyp, der einen Eintrag in der inetd-Konfiguration repräsentiert. Jeder Eintrag entspricht einem Socket, auf dem inetd auf Anfragen lauscht.

node (Vorgabe: #f)

Optional sollte hier als Zeichenkette eine kommagetrennte Liste lokaler Adressen angegeben werden, die inetd benutzen soll, wenn er stellvertretend für den angegebenen Dienst lauscht. Siehe Configuration file in GNU Inetutils für eine vollständige Beschreibung aller Optionen.

name

Eine Zeichenkette. Dieser Name muss einem Eintrag in /etc/services entsprechen.

socket-type

Entweder 'stream, 'dgram, 'raw, 'rdm oder 'seqpacket.

protocol

Eine Zeichenkette, die einem Eintrag in /etc/protocols entsprechen muss.

wait? (Vorgabe: #t)

Ob inetd warten soll, bis der Server beendet ist, bevor es wieder auf neue Anfragen an den Dienst lauscht.

user

Eine Zeichenkette mit dem Benutzernamen (und optional dem Gruppennamen) des Benutzers, als der dieser Server ausgeführt werden soll. Der Gruppenname kann als Suffix angegeben werden, getrennt durch einen Doppelpunkt oder Punkt, d.h. "benutzer", "benutzer:gruppe" oder "benutzer.gruppe".

program (Vorgabe: "internal")

Das Serverprogramm, das die Anfragen bedienen soll, oder "internal", wenn inetd einen eingebauten Dienst verwenden soll.

arguments (Vorgabe: '())

Eine Liste von Zeichenketten oder dateiartigen Objekten, die dem Serverprogramm als Argumente übergeben werden, angefangen mit dem nullten Argument, d.h. dem Namen selbigen Serverprogramms. Bei in inetd eingebauten Diensten muss dieser Eintrag auf '() oder '("internal") gesetzt sein.

Siehe Configuration file in GNU Inetutils für eine mehr ins Detail gehende Erörterung jedes Konfigurationsfeldes.

Scheme-Variable: tor-service-type

Dies ist der Diensttyp für den Dienst, der den Tor-Daemon für anonyme Netzwerkrouten ausführt. Der Dienst benutzt für seine Konfiguration ein <tor-configuration>-Verbundsobjekt. Vorgegeben ist, dass der Tor-Daemon als „unprivilegierter“ Nutzer tor ausgeführt wird, einem Mitglied der tor-Benutzergruppe ohne besondere Berechtigungen.

Datentyp: tor-configuration
tor (Vorgabe: tor)

Das Paket, das den Tor-Daemon zur Verfügung stellt. Von diesem Paket wird erwartet, dass es den Daemon unter dem Pfad bin/tor relativ zum Ausgabeverzeichnis verfügbar macht. Das vorgegebene Paket ist die Implementierung des Tor-Projekts.

config-file (Vorgabe: (plain-file "empty" ""))

Die Konfigurationsdatei, die benutzt werden soll. Sie wird an eine vorgegebene Konfigurationsdatei angehängt und die sich daraus ergebende Konfigurationsdatei wird dann an tor über dessen Befehlszeilenoption -f übergeben. Hier kann jedes „dateiartige“ Objekt (siehe dateiartige Objekte) angegeben werden. Siehe man tor für Details zur Syntax der Konfigurationsdatei.

hidden-services (Vorgabe: '())

Die Liste der zu benutzenden „versteckten Dienste“ als <hidden-service>-Verbundsobjekte. Für jeden versteckten Dienst, den Sie in dieser Liste eintragen, werden automatisch entsprechende Einstellungen zur vorgefertigten Konfigurationsdatei hinzugefügt. Sie können <hidden-service>-Verbundsobjekte bequem mit der unten beschriebenen Prozedur tor-hidden-service erzeugen lassen.

socks-socket-type (Vorgabe: 'tcp)

Welche Art von Socket Tor für seinen SOCKS-Socket in der Voreinstellung benutzen soll. Dafür muss entweder 'tcp oder 'unix angegeben werden. Für 'tcp wird Tor nach Voreinstellung auf dem TCP-Port 9050 auf der loopback-Schnittstelle (d.h. localhost) lauschen. Für 'unix wird Tor auf dem UNIX-Socket /var/run/tor/socks-sock lauschen, auf den Mitglieder der tor-Benutzergruppe Schreibberechtigung erhalten.

Wenn Sie detailliertere Anpassungen am SOCKS-Socket vornehmen wollen, belassen Sie socks-socket-type bei seinem vorgegebenen Wert 'tcp und benutzen Sie config-file, um diese Voreinstellung mit Ihrer eigenen SocksPort-Option zu überspielen.

Scheme-Prozedur: tor-hidden-service Name Zuordnung

Hiermit wird ein neuer versteckter Dienst von Tor mit diesem Namen definiert, der die Zuordnung herstellt. Die Zuordnung ist eine Liste von Port-/Rechner-Tupeln wie hier:

 '((22 "127.0.0.1:22")
   (80 "127.0.0.1:8080"))

In diesem Beispiel wird Port 22 des versteckten Dienstes an den ihm zugeordneten lokalen Port 22 weitergeleitet und Port 80 wird an den lokalen Port 8080 weitergeleitet.

Dadurch wird ein Verzeichnis /var/lib/tor/hidden-services/Name erstellt, worin sich in der Datei hostname der .onion-Rechnername („Host“-Name) des versteckten Dienstes befindet.

Siehe die Dokumentation des Tor-Projekts für weitere Informationen.

Das Modul (gnu services rsync) bietet die folgenden Dienste an:

Sie könnten einen rsync-Daemon einsetzen wollen, um Dateien verfügbar zu machen, damit jeder (oder nur Sie) bestehende Dateien herunterladen oder neue Dateien hochladen kann.

Scheme-Variable: rsync-service-type

Dies ist der Diensttyp für den rsync-Daemon, er benutzt ein rsync-configuration-Verbundsobjekt wie in diesem Beispiel:

Siehe unten für Details zur rsync-configuration.

Datentyp: rsync-configuration

Datentyp, der die Konfiguration für den rsync-service repräsentiert.

package (Vorgabe: rsync)

Zu benutzendes rsync-Paket.

port-number (Vorgabe: 873)

Der TCP-Port, auf dem rsync auf eingehende Verbindungen lauscht. Wenn die Portnummer kleiner als 1024 ist, muss rsync als Administratornutzer root und auch mit dieser Benutzergruppe gestartet werden.

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

Der Name der Datei, in die rsync seine PID schreibt.

lock-file (Vorgabe: "/var/run/rsyncd/rsyncd.lock")

Der Name der Datei, die rsync als seine Sperrdatei verwendet.

log-file (Vorgabe: "/var/log/rsyncd.log")

Der Name der Datei, in die rsync seine Protokolle schreibt.

use-chroot? (Vorgabe: #t)

Ob chroot auf das über rsync geteilte Verzeichnis angewandt werden soll.

share-path (Vorgabe: /srv/rsync)

Der Ort des Verzeichnisses, das rsync teilt, d.h. seine „Shared Directory“.

share-comment (Vorgabe: "Rsync share")

Kommentar zum von rsync geteilten Verzeichnis.

read-only? (Vorgabe: #f)

Bestimmt die Lese- und Schreibberechtigungen für das gemeinsame Verzeichnis.

timeout (Vorgabe: 300)

Ein-/Ausgabe-Zeitbeschränkung in Sekunden.

user (Vorgabe: "root")

Das Benutzerkonto, dem der rsync-Prozess gehören soll.

group (Vorgabe: "root")

Die Benutzergruppe des rsync-Prozesses.

uid (Vorgabe: "rsyncd")

Der Benutzername oder der Benutzeridentifikator (d.h. die „User-ID“), mit dem Dateiübertragungen zum und vom Modul stattfinden sollen, wenn der Daemon als Administratornutzer root läuft.

gid (Vorgabe: "rsyncd")

Benutzergruppenname oder Gruppenidentifikator („Group-ID“), mit dem auf das Modul zugegriffen wird.

Des Weiteren bietet das Modul (gnu services ssh) die folgenden Dienste an.

Scheme-Prozedur: lsh-service [#:host-key "/etc/lsh/host-key"] [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] [#:allow-empty-passwords? #f] [#:root-login? #f]  [#:syslog-output? #t]

[#:x11-forwarding? #t]  [#:tcp/ip-forwarding? #t] [#:password-authentication? #t]  [#:public-key-authentication? #t] [#:initialize? #t] Das lshd-Programm auf dem lsh-Paket so ausführen, dass es auf dem Port mit Portnummer port-number lauscht. host-key muss eine Datei angeben, die den Wirtsschlüssel enthält, die nur für den Administratornutzer lesbar sein darf.

Wenn daemonic? wahr ist, entkoppelt sich lshd vom Terminal, auf dem er läuft, und schickt seine Protokolle an syslogd, außer syslog-output? ist auf falsch gesetzt. Selbstverständlich hängt der lsh-service dann auch von der Existenz eines syslogd-Dienstes ab. Wenn pid-file? wahr ist, schreibt lshd seine PID in die Datei namens pid-file.

Wenn initialize? wahr ist, wird der Startwert zur Verschlüsselung ebenso wie der Wirtsschlüssel bei der Dienstaktivierung erstellt, falls sie noch nicht existieren. Das kann lange dauern und Anwenderinteraktion kann dabei erforderlich sein.

Wenn initialize? falsch ist, bleibt es dem Nutzer überlassen, den Zufallsgenerator zu initialisieren (siehe lsh-make-seed in LSH Manual) und ein Schlüsselpaar zu erzeugen, dessen privater Schlüssel in der mit host-key angegebenen Datei steht (siehe lshd basics in LSH Manual).

Wenn interfaces leer ist, lauscht lshd an allen Netzwerkschnittstellen auf Verbindungen, andernfalls muss interfaces eine Liste von Rechnernamen („Host“-Namen) oder Adressen bezeichnen.

allow-empty-passwords? gibt an, ob Anmeldungen mit leeren Passwörtern akzeptiert werden sollen, und root-login? gibt an, ob Anmeldungen als Administratornutzer „root“ akzeptiert werden sollen.

Die anderen Felder sollten selbsterklärend sein.

Scheme-Variable: openssh-service-type

Dies ist der Diensttyp für den OpenSSH-Secure-Shell-Daemon, sshd. Sein Wert muss ein openssh-configuration-Verbundsobjekt wie in diesem Beispiel sein:

(service openssh-service-type
         (openssh-configuration
           (x11-forwarding? #t)
           (permit-root-login 'without-password)
           (authorized-keys
             `(("alice" ,(local-file "alice.pub"))
               ("bob" ,(local-file "bob.pub"))))))

Siehe unten für Details zur openssh-configuration.

Dieser Dienst kann mit weiteren autorisierten Schlüsseln erweitert werden, wie in diesem Beispiel:

(service-extension openssh-service-type
                   (const `(("charlie"
                             ,(local-file "charlie.pub")))))
Datentyp: openssh-configuration

Dies ist der Verbundstyp für die Konfiguration von OpenSSHs sshd.

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

Der Name der Datei, in die sshd seine PID schreibt.

port-number (Vorgabe: 22)

Der TCP-Port, auf dem sshd auf eingehende Verbindungen lauscht.

permit-root-login (Vorgabe: #f)

Dieses Feld bestimmt, ob und wann Anmeldungen als Administratornutzer „root“ erlaubt sind. Wenn es #f ist, sind Anmeldungen als Administrator gesperrt, bei #t sind sie erlaubt. Wird hier das Symbol 'without-password angegeben, dann sind Anmeldungen als Administrator erlaubt, aber nur, wenn keine passwortbasierte Authentifizierung verwendet wird.

allow-empty-passwords? (Vorgabe: #f)

Wenn dies auf wahr gesetzt ist, können sich Nutzer, deren Passwort leer ist, anmelden. Ist es falsch, können sie es nicht.

password-authentication? (Vorgabe: #t)

Wenn dies wahr ist, können sich Benutzer mit ihrem Passwort anmelden. Wenn es falsch ist, müssen sie andere Authentisierungsmethoden benutzen.

public-key-authentication? (Vorgabe: #t)

Wenn dies wahr ist, können Benutzer zur Anmeldung mit ihrem öffentlichen Schlüssel authentifiziert werden. Wenn es falsch ist, müssen sie andere Authentisierungsmethoden benutzen.

Autorisierte öffentliche Schlüssel werden in ~/.ssh/authorized_keys gespeichert. Dies wird nur für Protokollversion 2 benutzt.

x11-forwarding? (Vorgabe: #f)

Wenn dies auf wahr gesetzt ist, ist das Weiterleiten von Verbindungen an grafische X11-Clients erlaubt — mit anderen Worten funktionieren dann die ssh-Befehlszeilenoptionen -X und -Y.

allow-agent-forwarding? (Vorgabe: #t)

Ob Weiterleitung an den SSH-Agenten zugelassen werden soll.

allow-tcp-forwarding? (Vorgabe: #t)

Ob Weiterleitung von TCP-Kommunikation zugelassen werden soll.

gateway-ports? (Vorgabe: #f)

Ob Ports als Zugang für eingehende Verbindungen („Gateway-Ports“) weitergeleitet werden dürfen.

challenge-response-authentication? (Vorgabe: #f)

Gibt an, ob „Challenge-Response“-Authentifizierung zugelassen wird (z.B. über PAM).

use-pam? (Vorgabe: #t)

Aktiviert die Pluggable-Authentication-Module-Schnittstelle. Wenn es auf #t gesetzt ist, wird dadurch PAM-Authentisierung über challenge-response-authentication? und password-authentication? aktiviert, zusätzlich zur Verarbeitung von PAM-Konten und Sitzungsmodulen für alle Authentisierungsarten.

Weil PAM-Challenge-Response-Authentisierung oft für dieselben Zwecke wie Passwortauthentisierung eingesetzt wird, sollten Sie entweder challenge-response-authentication? oder password-authentication? deaktivieren.

print-last-log? (Vorgabe: #t)

Hiermit wird angegeben, ob sshd Datum und Uhrzeit der letzten Anmeldung anzeigen soll, wenn sich ein Benutzer interaktiv anmeldet.

subsystems (Vorgabe: '(("sftp" "internal-sftp")))

Hiermit werden externe Subsysteme konfiguriert (z.B. ein Dateiübertragungsdaemon).

Diese werden als Liste von zweielementigen Listen angegeben, von denen jede den Namen des Subsystems und einen Befehl (mit optionalen Befehlszeilenargumenten) benennt, der bei einer Anfrage an das Subsystem ausgeführt werden soll.

Der Befehl internal-sftp implementiert einen SFTP-Server im selben Prozess. Alternativ kann man den sftp-server-Befehl angeben:

(service openssh-service-type
         (openssh-configuration
          (subsystems
           `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
accepted-environment (Vorgabe: '())

Eine Liste von Zeichenketten, die die Umgebungsvariablen benennen, die exportiert werden dürfen.

Jede Zeichenkette wird zu einer eigenen Zeile in der Konfigurationsdatei. Siehe die Option AcceptEnv in man sshd_config.

Mit diesem Beispiel können SSH-Clients die Umgebungsvariable COLORTERM exportieren. Sie wird von Terminal-Emulatoren gesetzt, die Farben unterstützen. Sie können Sie in der Ressourcendatei Ihrer Shell benutzen, um Farben in der Eingabeaufforderung und in Befehlen zu aktivieren, wenn diese Variable gesetzt ist.

(service openssh-service-type
         (openssh-configuration
           (accepted-environment '("COLORTERM"))))
authorized-keys (Vorgabe: '())

Dies ist die Liste der autorisierten Schlüssel. Jedes Element der Liste ist ein Benutzername gefolgt von einem oder mehr dateiartigen Objekten, die öffentliche SSH-Schlüssel repräsentieren. Zum Beispiel werden mit

(openssh-configuration
  (authorized-keys
    `(("rekado" ,(local-file "rekado.pub"))
      ("chris" ,(local-file "chris.pub"))
      ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))

die angegebenen öffentlichen Schlüssel für die Benutzerkonten rekado, chris und root registriert.

Weitere autorisierte Schlüssel können als service-extension hinzugefügt werden.

Beachten Sie, dass das hier neben ~/.ssh/authorized_keys ohne sich zu stören benutzt werden kann.

log-level (Vorgabe: 'info)

Dieses Symbol gibt die Stufe der Protokollierung an: quiet (schweigsam), fatal, error, info, verbose (ausführlich), debug (Fehlersuche) etc. Siehe die Handbuchseite für sshd_config für die vollständige Liste der Stufenbezeichnungen.

extra-content (Vorgabe: "")

Dieses Feld kann benutzt werden, um beliebigen Text an die Konfigurationsdatei anzuhängen. Es ist besonders bei ausgeklügelten Konfigurationen nützlich, die anders nicht ausgedrückt werden können. Zum Beispiel würden mit dieser Konfiguration Anmeldungen als Administratornutzer „root“ grundsätzlich untersagt, lediglich für eine bestimmte IP-Adresse wären sie zugelassen:

(openssh-configuration
  (extra-content "\
Match Address 192.168.0.1
  PermitRootLogin yes"))
Scheme-Prozedur: dropbear-service [Konfiguration]

Den Dropbear-SSH-Daemon mit der angegebenen Konfiguration ausführen, einem <dropbear-configuration>-Objekt.

Wenn Sie zum Beispiel einen Dropbear-Dienst angeben möchten, der auf Port 1234 lauscht, dann fügen Sie diesen Aufruf ins services-Feld des Betriebssystems ein:

(dropbear-service (dropbear-configuration
                    (port-number 1234)))
Datentyp: dropbear-configuration

Dieser Datentyp repräsentiert die Konfiguration eines Dropbear-SSH-Daemons.

dropbear (Vorgabe: dropbear)

Das zu benutzende Dropbear-Paket.

port-number (Vorgabe: 22)

Die Portnummer des TCP-Ports, auf dem der Daemon auf eingehende Verbindungen wartet.

syslog-output? (Vorgabe: #t)

Ob eine Ausgabe für Syslog aktiviert sein soll.

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

Der Dateiname der PID-Datei des Daemons.

root-login? (Vorgabe: #f)

Ob Anmeldungen als Administratornutzer root möglich sein sollen.

allow-empty-passwords? (Vorgabe: #f)

Ob leere Passwörter zugelassen sein sollen.

password-authentication? (Vorgabe: #t)

Ob passwortbasierte Authentisierung zugelassen sein soll.

Scheme-Variable: %facebook-host-aliases

Diese Variable enthält eine Zeichenkette, die Sie für /etc/hosts benutzen können (siehe Host Names in The GNU C Library Reference Manual). Jede Zeile enthält einen Eintrag, der einen bekannten Servernamen des Facebook-Online-Dienstes — z.B. www.facebook.com — an den lokalen Rechner umleitet — also an 127.0.0.1 oder dessen IPv6-Gegenstück ::1.

Normalerweise wird diese Variable im Feld hosts-file einer operating-system-Betriebssystemdeklaration benutzt (siehe /etc/hosts):

(use-modules (gnu) (guix))

(operating-system
  (host-name "mymachine")
  ;; …
  (hosts-file
    ;; Eine /etc/hosts-Datei, mit der "localhost" und
    ;; "mymachine" als Alias-Namen eingerichtet werden
    ;; und für die Facebook-Servernamen stattdessen
    ;; Alias-Namen benutzt werden.
    (plain-file "hosts"
                (string-append (local-host-aliases host-name)
                               %facebook-host-aliases))))

Dieser Mechanismus kann verhindern, dass lokal laufende Programme, wie z.B. Web-Browser, auf Facebook zugreifen.

Das Modul (gnu services avahi) stellt die folgende Definition zur Verfügung.

Scheme-Variable: avahi-service-type

Dieser Dienst führt den avahi-daemon aus, einen systemweiten mDNS-/DNS-SD-Anbieter, mit dem im lokalen Netzwerk befindliche Geräte erkannt werden können („Service Discovery“) und Rechnernamen selbstständig aufgelöst werden können („Zero-Configuration“) (siehe https://avahi.org/). Sein Wert muss ein zero-configuration-Verbundsobjekt sein — siehe unten.

Dieser Dienst erweitert den Name Service Cache Daemon (nscd), damit er .local-Rechnernamen mit nss-mdns auflösen kann. Siehe Name Service Switch für Informationen zur Auflösung von Rechnernamen.

Des Weiteren wird das avahi-Paket zum Systemprofil hinzugefügt, damit Befehle wie avahi-browse einfach benutzt werden können.

Datentyp: avahi-configuration

Dieser Datentyp repräsentiert die Konfiguration von Avahi.

host-name (Vorgabe: #f)

Wenn dies auf etwas anderes als #f gesetzt ist, wird es anderen als Rechnername für diese Maschine mitgeteilt, andernfalls wird der tatsächliche Rechnername anderen mitgeteilt.

publish? (Vorgabe: #t)

Wenn es auf wahr gesetzt ist, dürfen Rechnernamen und Avahi-Dienste über das Netzwerk mitgeteilt werden (als Broadcast).

publish-workstation? (Vorgabe: #t)

Wenn es auf wahr gesetzt ist, teilt avahi-daemon den Rechnernamen dieser Maschine und die IP-Adresse über mDNS auf dem lokalen Netzwerk öffentlich mit. Um die auf Ihrem lokalen Netzwerk mitgeteilten Rechnernamen zu sehen, können Sie das hier ausführen:

avahi-browse _workstation._tcp
wide-area? (Vorgabe: #f)

Wenn dies auf wahr gesetzt ist, ist DNS-SD über „Unicast DNS“ aktiviert.

ipv4? (Vorgabe: #t)
ipv6? (Vorgabe: #t)

Mit diesen Feldern wird festgelegt, ob IPv4-/IPv6-Sockets verwendet werden.

domains-to-browse (Vorgabe: '())

Dies ist eine Liste von Domänen, die durchsucht werden.

Scheme-Variable: openvswitch-service-type

Dies ist der Diensttyp des Open-vSwitch-Dienstes, der als Wert ein openvswitch-configuration-Objekt hat.

Datentyp: openvswitch-configuration

Der Datentyp, der die Konfiguration von Open vSwitch repräsentiert, einem auf mehreren Schichten arbeitenden („multilayer“) virtuellen Switch, der für massenhafte Netzwerkautomatisierung durch programmatische Erweiterungen eingesetzt werden kann.

package (Vorgabe: openvswitch)

Das Paketobjekt vom Open vSwitch.

Scheme-Variable: pagekite-service-type

Dies ist der Diensttyp für den PageKite-Dienst, einem Angebot zur getunnelten Netzwerkumleitung, womit bloß auf localhost lauschende Server öffentlich erreichbar gemacht werden können. Mit PageKite werden die Server für andere erreichbar, selbst wenn Ihre Maschine nur über eine restriktive Firewall oder eine Netzwerkadressübersetzung („Network Address Translation“, NAT) ohne Portweiterleitung mit dem Internet verbunden ist. Der Wert dieses Dienstes ist ein pagekite-configuration-Verbundsobjekt.

Hier ist ein Beispiel, wodurch die lokal laufenden HTTP- und SSH-Daemons zugänglich gemacht werden:

(service pagekite-service-type
         (pagekite-configuration
           (kites '("http:@kitename:localhost:80:@kitesecret"
                    "raw/22:@kitename:localhost:22:@kitesecret"))
           (extra-file "/etc/pagekite.rc")))
Datentyp: pagekite-configuration

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

package (Vorgabe: pagekite)

Paketobjekt von PageKite.

kitename (Vorgabe: #f)

PageKite-Name, um sich gegenüber dem Vordergrundserver zu authentisieren.

kitesecret (Vorgabe: #f)

Das gemeinsame Geheimnis, das eine Authentisierung gegenüber dem Vordergrundserver ermöglicht. Wahrscheinlich sollten Sie es besser als Teil von extra-file angeben.

frontend (Vorgabe: #f)

Eine Verbindung zum angegebenen PageKite-Vordergrundserver herstellen statt zu dem Dienst von pagekite.net.

kites (Vorgabe: '("http:@kitename:localhost:80:@kitesecret"))

Die Liste der zu benutzenden „Kites“ für Dienste. Nach Vorgabe wird der HTTP-Server auf Port 80 nach außen hin zugänglich gemacht. Dienste sind im Format protokoll:kitename:rechnername:port:geheimnis anzugeben.

extra-file (Vorgabe: #f)

Eine Konfigurationsdatei, die zusätzlich eingelesen werden soll. Es wird erwartet, dass Sie diese manuell erstellen. Benutzen Sie sie, wenn Sie zusätzliche Optionen angeben möchten und um gemeinsame Geheimnisse abseits von Guix’ Zuständigkeitsbereich zu verwalten.


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