BEZEICHNUNG
systemd.socket - Socket-Unit-KonfigurationÜBERSICHT
Socket.socketBESCHREIBUNG
Eine Unit-Konfigurationsdatei, deren Namen in ».socket« endet, kodiert Informationen über einen IPC oder Netzwerk-Socket oder ein Dateisystem-FIFO, der von Systemd gesteuert und überwacht wird, für Socket-basierte Aktivierung. Diese Handbuchseite führt die für diesen Unit-Typ spezifischen Konfigurationsoptionen auf. Siehe systemd.unit(5) für die gemeinsamen Optionen aller Unit-Konfigurationsdateien. Die gemeinsamen Konfigurationseinträge werden in den generischen Abschnitten »[Unit]« und »[Install]« konfiguriert. Die Socket-spezifischen Konfigurationsoptionen werden in dem Abschnitt »[Socket]« konfiguriert. Zusätzliche Optionen sind in systemd.exec(5), das die Ausführungsumgebung, in der die Befehle ExecStartPre=, ExecStartPost=, ExecStopPre= und ExecStopPost= ausgeführt werden und in systemd.kill(5), das die Art der Beendigung der Prozesse definiert und in systemd.resource-control(5), das die Ressourcensteuerungseinstellungen für die Prozesse des Sockets konfiguriert, aufgeführt. Für jede Socket-Unit muss eine passende Dienste-Unit existieren, die den bei eingehendem Verkehr auf dem Socket zu startenden Dienst beschreibt (siehe systemd.service(5) für weitere Informationen über .service-Units). Der Name der .service-Unit ist standardmäßig der gleiche wie der Name der .socket-Unit, dies kann aber mit der weiter unten beschriebenen Option Service= verändert werden. Abhängig von den Einstellungen der unten beschriebenen Option Accept= muss diese Dienste-Unit entweder wie die .socket-Unit (aber mit ersetzter Endung) benannt sein, außer dies wird mit Service= außer Kraft gesetzt, oder sie muss eine Vorlagen-Unit sein, die auf die gleiche Art benannt ist. Beispiel: Eine Socket-Datei foo.socket benötigt einen passenden Dienst foo.service, falls Accept=no gesetzt ist. Falls Accept=yes gesetzt ist, muss eine [email protected] existieren, aus der die Dienste für jede eingehende Verbindung instanziiert werden. Es wird keine implizite Abhängigkeit WantedBy= oder RequiredBy= vom Socket auf den Dienst hinzugefügt. Dies bedeutet, dass der Dienst ohne den Socket gestartet werden darf. In diesem Fall muss er in der Lage sein, den Socket selbst zu öffnen. Um dies zu verhindern, kann eine explizite Abhängigkeit Requires= hinzugefügt werden. Socket-Units können zur Implementierung des bedarfsorientierten Startens von Diensten sowie zum parallelen Starten von Diensten verwandt werden. Siehe die am Ende verlinkten Blog-Einträgen für eine Einführung. Beachten Sie, dass Daemon-Software, die für Socket-Aktivierung mit Socket-Units konfiguriert ist, in der Lage sein muss, Sockets von Systemd zu akzeptieren, entweder mittels Systemds nativer Socket-Übergabeschnittstelle (siehe sd_listen_fds(3) für Details über das genau verwandte Protokoll und die Reihenfolge, in der die Dateideskriptoren übergeben werden) oder mittels traditioneller inetd(8)-artiger Socket-Übergabe (d.h. Sockets, die über Standardein- und -ausgabe mittels StandardInput=socket in der Dienstedatei übergeben werden). Alle mittels .socket-Units bereitgestellten Netzwerk-Sockets werden im Netzwerknamensraum des Rechners bereitgestellt (siehe network_namespaces(7)). Dies bedeutet allerdings nicht, dass der Dienst, der durch eine konfigurierte Socket-Unit aktiviert wird, auch Teil des Netzwerk-Namensraum des Rechners sein muss. Der Betrieb von Diensten in ihrem eigenen Netzwerknamensraum (beispielsweise mittels PrivateNetwork=, siehe systemd.exec(5)) wird unterstützt und ist sogar gängige Praxis. Dabei werden nur die mittels Socket-Aktivierung konfigurierten Sockets vom Namensraum des Rechners empfangen. Bei einer solchen Installation ist die Kommunikation mit dem Netzwerknamensraum des Rechners durch die hereingereichten Aktivierungs-Sockets erlaubt, während alle Sockets, die vom Dienste-Code selbst bereitgestellt werden, dem Namensraum des Dienstes selbst zugeordnet sind und daher möglicherweise einer sehr deutlich restriktiveren Konfiguration unterliegen könnten.AUTOMATISCHE ABHÄNGIGKEITEN
Implizite Abhängigkeiten
Die folgenden Abhängigkeiten werden implizit hinzugefügt:•Socket-Units erhalten automatisch eine
Abhängigkeit Before= auf die von ihnen aktivierten
Dienste-Units.
•Socket-Units, die sich auf
Dateisystempfade beziehen (wie AF_UNIX-Sockets oder FIFOs) erhalten
implizit eine Abhängigkeit Requires= und After= auf alle
für den Zugriff auf diese Pfade notwendigen
Einhänge-Units.
•Socket-Units, die die Einstellung
BindToDevice= verwenden, erhalten automatisch Abhängigkeiten
BindsTo= und After= von der Geräte-Unit, die die
festgelegte Netzwerkschnittstelle kapselt.
Zusätzliche implizite Abhängigkeiten als Ergebnis der
Ausführung und der gemäß systemd.exec(5) und
systemd.resource-control(5) dokumentierten
Ressourcen-Steuerungsparameter können hinzugefügt werden.
Standardabhängigkeiten
Die folgenden Abhängigkeiten werden hinzugefügt, es sei denn, DefaultDependencies=no ist gesetzt:•Socket-Units erhalten automatisch eine
Abhängigkeit Before= von sockets.target.
•Socket-Units erhalten automatisch ein
Abhängigkeitspaar After= und Requires= von sysinit.target
und ein Abhängigkeitspaar Before= und Conflicts= von
shutdown.target. Diese Abhängigkeiten stellen sicher, dass die
Socket-Unit vor den normalen Diensten beim Systemstart gestartet und beim
Herunterfahren beendet wird. Nur Sockets, die in der frühen
Systemstartphase oder spät beim Herunterfahren beteiligt sind, sollten
die Option DefaultDependencies= deaktivieren.
OPTIONEN
Socket-Unit-Datei können Abschnitte [Unit] und [Install] enthalten, die in systemd.unit(5) beschrieben sind. Socket-Unit-Dateien müssen einen Abschnitt »[Socket]« enthalten, der Informationen über das überwachte Socket oder den überwachten FIFO weitergibt. Eine Reihe von Optionen, die in diesem Abschnitt angegeben werden können, werden auch von anderen Unit-Typen verwandt. Diese Optionen sind in systemd.exec(5) und systemd.kill(5) dokumentiert. Die für den Abschnitt »[Socket]« in Socket-Units speziellen Optionen sind die folgenden: ListenStream=, ListenDatagram=, ListenSequentialPacket=Gibt eine Adresse an, auf der auf Anfragen
für einen Stream- ( SOCK_STREAM), Datagram- (SOCK_DGRAM)
bzw. sequenzielles Paket- ( SOCK_SEQPACKET) Socket gewartet werden
soll. Die Adresse kann in verschiedenen Formaten geschrieben werden:
Falls die Adresse mit einem Schrägstrich (»/«) beginnt,
wird sie von einem Dateisystem-Socket in der Socket-Familie AF_UNIX
gelesen.
Falls die Adresse mit einem At-Zeichen (»@«) beginnt, wird sie als
abstrakter Namensraum-Socket in der Familie AF_UNIX gelesen. Das
»@« wird durch ein NUL vor der Anbindung ersetzt.
Für Details siehe unix(7).
Falls die Adresszeichenkette eine einzelne Zahl ist, wird sie als Nummer des
Ports, an dem auf IPv6-Anfragen gewartet werden soll, gelesen. Abhängig
vom Wert von BindIPv6Only= (siehe oben) könnte dies dazu
führen, dass der Dienst sowohl auf IPv6 und IPv4 (Vorgabe) oder nur
IPv6 verfügbar ist.
Falls die Adresszeichenkette im Format » v.w.x.y:z«
vorliegt, wird sie als IPv4-Adresse v.w.x.y und Port z
interpretiert.
Falls die Adresszeichenkette im Format »[ x]:y«
vorliegt, wird sie als IPv6-Adresse x und Port y interpretiert.
Ein optionaler Schnittstellengeltungsbereich (Schnittstellenname oder -nummer)
kann nach einem »%«-Symbol angegeben werden: »[
x]: y%dev«. Schnittstellengeltungsbereiche sind
nur für linklokale Adressen nützlich, da der Kernel sie in
anderen Fällen ignoriert. Beachten Sie, dass der Dienst auch via IPv4
verfügbar gemacht werden könnte, wenn eine Adresse als IPv6
spezifiziert wurde, abhängig von der Einstellung BindIPv6Only=
(siehe unten).
Falls die Adresszeichenkette im Format »vsock: x:y«
vorliegt, wird sie als CID-Adresse x auf einem Port y in der
Familie AF_VSOCK gelesen. Die CID ist eine eindeutige
32-Bit-Ganzzahlkennung in AF_VSOCK, analog zu einer IP-Adresse. Die
Angabe der CID ist optional und kann auf die leere Zeichenkette gesetzt
werden.
Beachten Sie, dass SOCK_SEQPACKET (d.h. ListenSequentialPacket=)
nur für AF_UNIX-Sockets verfügbar ist. Wird
SOCK_STREAM (d.h. ListenStream=) für IP-Sockets verwandt,
dann bezieht es sich auf TCP-Sockets, SOCK_DGRAM (d.h.
ListenDatagram=) auf UDP.
Diese Optionen können mehr als einmal angegeben werden. In diesem Fall
wird eingehender Verkehr auf einem der Sockets Dienste-Aktivierung
auslösen und alle aufgeführten Sockets werden an den Dienst
übergeben, unabhängig davon, ob es auf ihnen eingehenden Verkehr
gibt oder nicht. Falls einer der Optionen die leere Zeichenkette zugewiesen
wird, wird die Liste der Adressen, bei denen auf Anfragen gewartet werden
soll, zurückgesetzt und alle vorherigen Verwendungen einer dieser
Optionen werden keinen Effekt haben.
Es ist auch möglich, bei der Verwendung von Service= mehr als eine
Socket-Unit für den gleichen Dienst zu haben und der Dienst wird alle
Sockets, die in allen Socket-Units konfiguriert sind, empfangen. Die in einer
Unit konfigurierten Sockets werden in der Reihenfolge der Konfiguration
weitergegeben, zwischen Socket-Units ist aber keine Ordnung festgelegt.
Falls hier eine IP-Adresse verwandt wird, ist es oft wünschenswert, auf
ihr auf Anfragen zu warten, bevor die Schnittstelle, auf der sie konfiguriert
ist, hochgebracht und einsatzbereit ist und sogar unabhängig davon, ob
sie zu irgendeinem Zeitpunkt hoch und einsatzbereit sein wird. Um damit
umzugehen, wird empfohlen, die unten beschriebene Option FreeBind= zu
setzen.
ListenFIFO=
Gibt einen Dateisystem-FIFO (siehe
fifo(7) für Details) an, auf dem auf Anfragen gewartet wird.
Dies erwartet einen absoluten Dateisystempfad als Argument. Das Verhalten ist
ansonsten sehr ähnlich zu der Anweisung ListenDatagram=
oben.
ListenSpecial=
Gibt eine besondere Datei in dem Dateisystem
an, auf der auf Anfragen gewartet werden soll. Dies erwartet einen absoluten
Dateisystempfad als Argument. Das Verhalten ist ansonsten sehr ähnlich
zu der Anweisung ListenFIFO= oben. Verwenden Sie dies, um
Zeichengeräteknoten sowie besondere Dateien in /proc/ und /sys/ zu
öffnen.
ListenNetlink=
Gibt eine Netlink-Familie an, für die
ein Socket erstellt werden soll, bei dem auf Anfragen gewartet werden soll.
Dies erwartet eine kurze Zeichenkette, die sich auf den
AF_NETLINK-Familiennamen bezieht (wie audit oder
kobject-uevent), als Argument, optional kann ein Leerraumzeichen
gefolgt von einer multicast-Gruppenganzzahl angehängt werden. Das
Verhalten ist ansonsten sehr ähnlich zu der Anweisung
ListenDatagram= oben.
ListenMessageQueue=
Gibt einen
POSIX-Nachrichtenwarteschlangennamen an, bei dem auf Anfragen gewartet werden
soll (siehe mq_overview(7) für Details). Dies erwartet einen
gültigen Nachrichtenwarteschlangennamen (d.h. anfangend mit
»/«). Das Verhalten ist ansonsten sehr ähnlich zu der
Anweisung ListenDatagram= oben. Unter Linux sind
Nachrichtenwarteschlangendeskriptoren tatsächlich Dateideskriptoren und
können zwischen Prozessen vererbt werden.
ListenUSBFunction=
Gibt einen
USB-FunctionFS[1]-Endpunktort zur Implementierung von
USB-Gadget-Funktionen an, auf dem auf Anfragen gewartet werden soll. Dies
erwartet einen absoluten Dateisystempfad eines
Functionfs-Einhängepunktes als Argument. Das Verhalten ist ansonsten
ähnlich zu der Anweisung ListenFIFO= oben. Verwenden Sie dies,
um den FunctionFS-Endpunkt ep0 zu öffnen. Wird diese Option verwandt,
dann muss der aktivierte Dienst die Optionen USBFunctionDescriptors=
und USBFunctionStrings= gesetzt haben.
SocketProtocol=
Akzeptiert entweder udplite oder
sctp. Das Socket wird das UDP-Lite-( IPPROTO_UDPLITE) bzw.
SCP-Protokoll ( IPPROTO_SCTP) verwenden.
BindIPv6Only=
Akzeptiert entweder default,
both oder ipv6-only. Steuert die Socket-Option IPV6_V6ONLY
(siehe ipv6(7) für Details). Falls both, werden
IPv6-gebundene Sockets sowohl über IPv4 als auch IPv6 zugreifbar sein.
Falls ipv6-only, werden sie nur über IPv6 zugreifbar sein. Falls
default (was, Überraschung, die Vorgabe ist), wird die
systemweite Voreinstellung, wie sie durch /proc/sys/net/ipv6/bindv6only
gesteuert wird, die standardmäßig wiederum ein Äquivalent
von both ist, verwandt.
Backlog=
Akzeptiert ein vorzeichenfreies
Ganzzahlargument. Gibt die Anzahl an Verbindungen, die noch nicht akzeptiert
wurden und in die Warteschlange eingereiht werden sollen, an. Diese
Einstellung ist nur für Datenstrom- und sequenzielle Paket-Sockets
relevant. Siehe listen(2) für Details.
Standardmäßig SOMAXCONN (128).
BindToDevice=
Gibt einen Netzwerkschnittstellennamen an, an
den dieses Socket gebunden werden soll. Falls gesetzt, wird Verkehr nur von
der angegebenen Netzwerkschnittstelle akzeptiert. Dies steuert die
Socket-Option SO_BINDTODEVICE (siehe socket(7) für
Details). Falls diese Option verwandt wird, wird eine implizite
Abhängigkeit von dieser Socket-Unit auf die
Netzwerkschnittellen-Geräte-Unit (siehe systemd.device(5))
erstellt. Beachten Sie, dass das Setzen dieses Parameters zur Ergänzung
zusätzlicher Abhängigkeiten zu der Unit führen
könnte (siehe oben).
SocketUser=, SocketGroup=
Akzeptiert einen UNIX-Benutzer-/Gruppennamen.
Wenn angegeben, gehören alle AF_UNIX-Sockets und FIFO-Knoten im
Dateisystem dem angegebenen Benutzer und der angegebenen Gruppe. Falls nicht
gesetzt (die Vorgabe), gehören die Knoten dem Benutzer/der Gruppe root
(falls im Systemkontext ausgeführt) oder dem aufrufenden Benutzer/der
aufrufenden Gruppe (falls im Benutzerkontext ausgeführt). Falls nur ein
Benutzer aber keine Gruppe angegeben ist, dann wird die Gruppe von der
Standardgruppe des Benutzers abgeleitet.
SocketMode=
Falls auf einem Dateisystem-Socket oder FIFO
auf Anfragen gewartet wird, gibt diese Option den Dateisystemzugriffsmodus bei
der Erzeugung des Dateiknotens an. Akzeptiert einen Zugriffsmodus in oktaler
Notation. Standardmäßig 0666.
DirectoryMode=
Falls auf einem Dateisystem-Socket oder FIFO
auf Anfragen gewartet wird, werden die Elternknoten bei Bedarf automatisch
erzeugt. Diese Option gibt den Dateisystemzugriffsmodus bei der Erzeugung
dieser Verzeichnisse an. Akzeptiert einen Zugriffsmodus in oktaler Notation.
Standardmäßig 0755.
Accept=
Akzeptiert ein logisches Argument. Falls yes,
wird für jede eingehende Verbindung eine Dienste-Instanz gestartet und
nur der Verbindungs-Socket übergeben. Falls no, werden alle auf
Anfragen wartende Sockets selbst an die startende Dienst-Unit übergeben
und nur eine Dienste-Unit wird für alle Verbindungen gestartet (siehe
auch oben). Dieser Wert wird für Datagram-Sockets und FIFOs ignoriert,
wo eine einzelne Dienste-Unit bedingungslos allen eingehenden Verkehr
bearbeitet. Standardmäßig no. Zur Erhöhung der
Leistung wird empfohlen, neue Daemons nur so zu schreiben, dass sie für
Accept=no geeignet sind. Ein Daemon, der auf einem
AF_UNIX-Socket auf Anfragen wartet, kann, aber muss nicht,
close(2) auf dem empfangenen Socket vor dem Beenden aufrufen.
Allerdings darf er nicht mit unlink den Socket aus dem Dateisystem entfernen.
Er sollte nicht auf mit gesetztem Accept=no erhaltenen Sockets
shutdown(2) aufrufen, kann dies aber mit Sockets, bei denen
Accept=yes gesetzt ist, machen. Das Setzen von Accept=yes ist
hauptsächlich nützlich, um Daemons, die für die
Verwendung mit inetd(8) entwickelt wurden, zu erlauben,
unverändert mit Systemd-Socket-Aktivierung zu funktionieren.
Für IPv4- und IPv6-Verbindungen wird die Umgebungsvariable
REMOTE_ADDR die ferne IP-Adresse und REMOTE_PORT den fernen Port
enthalten. Dies ist das gleiche Format wie von CGI benutzt. Für
SOCK_RAW ist der Port das IP-Protokoll.
Es wird empfohlen, für mittels Accept=yes aktivierte
Diensteinstanzen CollectMode=inactive-or-failed zu setzen, um
sicherzustellen, dass fehlgeschlagene Verbindungsdienste bereinigt und deren
Speicher freigegeben werden und sich nicht ansammeln.
Writable=
Akzeptiert ein logisches Argument. Darf nur in
Zusammenhang mit ListenSpecial= verwandt werden. Falls wahr, wird die
angegebene besondere Datei im Lese-/Schreibmodus geöffnet, falls
falsch, im nur-Lesemodus. Standardmäßig falsch.
FlushPending=
Akzeptiert ein logisches Argument. Darf nur
bei Accept=no verwandt werden. Falls »yes«, werden die
Puffer des Sockets bereinigt, nachdem sich der ausgelöste Dienst
beendet hat. Damit werden sämtliche anhängige Daten
rausgeschrieben und anhängende eingehende Verbindungen abgelehnt. Falls
»no«, werden die Puffer des Sockets nicht bereinigt, wodurch dem
Dienst ermöglicht wird, sämtliche anhängende Verbindungen
nach dem Neustart zu bedienen, was das normalerweise erwartete Verhalten
darstellt. Standardmäßig no.
MaxConnections=
Die maximale Anzahl an Verbindungen,
für die gleichzeitig Dienste-Instanzen ausgeführt werden sollen,
wenn Accept=yes gesetzt ist. Falls mehr gleichzeitige Verbindungen
eingehen, werden sie abgelehnt, bis mindestens eine bestehende Verbindung
beendet ist. Diese Einstellung hat auf Sockets, die mit Accept=no
konfiguriert sind oder Datagram-Sockets keinen Effekt.
Standardmäßig 64.
MaxConnectionsPerSource=
Die maximale Anzahl an Verbindungen für
einen Dienst pro Quell-IP-Adresse. Dies ist sehr ähnlich zu der
Anweisung MaxConnections= oben. Standardmäßig
deaktiviert.
KeepAlive=
Akzeptiert ein logisches Argument. Falls wahr,
wird der TCP/IP-Stack eine Aufrechterhaltungsnachricht nach 2 Stunden
(abhängig von der Konfiguration von
/proc/sys/net/ipv4/tcp_keepalive_time) für alle TCP-Datenströme,
die auf diesem Socket akzeptiert sind, senden. Dies steuert die Socket-Option
SO_KEEPALIVE (siehe socket(7) und die Dokumentation
TCP-Aufrechterhaltungs-HOWTO[2] für Details).
Standardmäßig false.
KeepAliveTimeSec=
Akzeptiert Zeit (in Sekunden) als Argument.
Die Verbindung muss im Leerlauf bleiben, bevor TCP das Senden von
Aufrechterhaltungstestern beginnt. Dies steuert die Socket-Option TCP_KEEPIDLE
(siehe socket(7) und das TCP-Aufrechterhaltungs-HOWTO[2]
für Details). Standardwert ist 7200 Sekunden (2 Stunden).
KeepAliveIntervalSec=
Akzeptiert Zeit (in Sekunden) als Argument
zwischen individuellen Aufrechterhaltungstestern, falls die Socket-Option
SO_KEEPALIVE auf diesem Socket gesetzt wurde. Dies steuert die
Socket-Option TCP_KEEPINTVL (siehe socket(7) und das
TCP-Aufrechterhaltungs-HOWTO[2] für Details). Standardwert ist
75 Sekunden.
KeepAliveProbes=
Akzeptiert eine Ganzzahl als Argument. Sie ist
die Anzahl von nicht bestätigten Testern, die gesandt werden
müssen, bevor die Verbindung als tot betrachtet und die Anwendungsebene
unterrichtet wird. Dies steuert die Socket-Option TCP_KEEPCNT (siehe
socket(7) und das TCP-Aufrechterhaltungs-HOWTO[2] für
Details). Standardwert ist 9.
NoDelay=
Akzeptiert ein logisches Argument. Der
Nagle-Algorithmus von TCP funktioniert durch Kombination einer Reihe von
kleinen ausgehenden Nachrichten und dem gemeinsamen Senden. Dies steuert die
Socket-Option TCP_NODELAY (siehe tcp(7)). Standardmäßig
false.
Priority=
Akzeptiert ein Ganzzahlargument, das die
Priorität steuert, mit der sämtlicher Verkehr von diesem Socket
gesandt wird. Dies steuert die Socket-Option SO_PRIORITY (siehe
socket(7) für Details).
DeferAcceptSec=
Akzeptiert eine Zeit (in Sekunden) als
Argument. Falls gesetzt, wird der auf Anfragen wartende Prozess nur
aufgeweckt, falls Daten auf dem Socket ankommen und nicht sofort, wenn die
Verbindung etabliert wird. Wenn diese Option gesetzt ist, wird die
Socket-Option TCP_DEFER_ACCEPT verwandt (siehe tcp(7)) und der
Kernel wird anfängliche ACK-Pakete ohne Daten ignorieren. Das Argument
gibt die ungefähre Zeitdauer an, die der Kernel auf eingehende Daten
warten sollte, bevor er auf das normale Verhalten der Berücksichtigung
leerer ACK-Pakete zurückfallen soll. Diese Option nützt bei
Protokollen, bei denen der Client Daten zuerst sendet (z.B. HTTP im Gegensatz
zu SMTP), da der Serverprozess nicht unnötigerweise aufgeweckt werden
wird, bevor er irgendetwas erledigen kann.
Falls der Client auch die Option TCP_DEFER_ACCEPT verwendet, wird die
Latenz der anfänglichen Verbindung auch reduziert, da der Kernel die
Daten im abschließenden Paket des Verbindungsaufbaus (dem dritten Paket
der Dreiwege-Datenflusssteuerung) senden wird.
Standardmäßig deaktiviert.
ReceiveBuffer=, SendBuffer=
Akzeptiert ein Ganzzahlargument, das die
Empfangs- bzw. Sendepuffergröße des Sockets steuert. Dies
steuert die Socket-Optionen SO_RCVBUF und SO_SNDBUF (siehe
socket(7) für Details). Die normalen Endungen K, M, G werden
unterstützt und zur Basis 1024 interpretiert.
IPTOS=
Akzeptiert ein Ganzzahlargument, das das
IP-Feld »Type-Of-Service« für von diesem Socket erstellte
Pakete steuert. Dies steuert die Socket-Option IP_TOS (siehe
ip(7) für Details.). Es kann entweder eine numerische
Zeichenkette oder low-delay, throughput, reliability oder
low-cost angegeben werden.
IPTTL=
Akzeptiert ein Ganzzahlargument, das das
IPv4-Feld »Time-To-Live/IPv6 Hop-Count« für von diesem
Socket erstellte Pakete steuert. Dies steuert die Socket-Option
IP_TTL/IPV6_UNICAST_HOPS (siehe ip(7) und ipv6(7)
für Details.).
Mark=
Akzeptiert einen Ganzzahlwert. Steuert die
Firewall-Markierung von durch dieses Socket generierten Paketen. Dies kann in
der Firewall-Logik zur Filterung von Paketen von diesem Socket verwandt
werden. Dies setzt die Socket-Option SO_MARK. Siehe iptables(8)
für Details.
ReusePort=
Akzeptiert einen logischen Wert. Falls wahr,
werden mehrere bind(2)s auf diesen TCP- oder UDP-Port erlaubt. Dies
steuert die Socket-Option SO_REUSEPORT. Siehe socket(7)
für Details.
SmackLabel=, SmackLabelIPIn=, SmackLabelIPOut=
Akzeptiert einen Zeichenkettenwert. Steuert
die erweiterten Attribute »security.SMACK64«,
»security.SMACK64IPIN« bzw.
»security.SMACK64IPOUT«, d.h. dem Sicherheits-Label des FIFO
oder dem Sicherheits-Label für eingehende bzw. ausgehende Verindungen
auf dem Socket. Siehe Smack[3] für Details.
SELinuxContextFromNet=
Akzeptiert ein logisches Argument. Falls wahr,
wird Systemd versuchen, das für den instanziierten Dienst verwandte
SELinux-Label aus den vom Peer über das Netzwerk übergebenen
Informationen herauszufinden. Beachten Sie, dass von den vom Peer
übergebenen Informationen nur die Sicherheitsstufe verwandt wird.
Andere Anteile des ergebenen SELinux-Kontextes stammen entweder vom
Zielprogramm, das effektiv vom Socket ausgelöst wird, oder aus dem Wert
der Option SELinuxContext=. Diese Konfigurationsoption ist nur
anwendbar, wenn der aktivierte Dienst in einem einzelnen
Socket-Dateideskriptor übergeben wird, d.h. die Dienste-Instanzen, bei
denen die Standardeingabe mit einem Socket verbunden ist oder Dienste, die
durch genau eine Socket-Unit ausgelöst werden. Beachten Sie auch, dass
diese Option nur nützlich ist, wenn eine MLS/MCS-SELinux-Richtlinie
eingesetzt wird. Standardmäßig »false«.
PipeSize=
Akzeptiert eine Größe in Bytes.
Steuert die Pipepuffergröße der FIFOs, die in dieser Socket-Unit
konfiguriert werden. Siehe fcntl(2) für Details. Die normalen
Endungen K, M, G werden unterstützt und zur Basis 1024
interpretiert.
MessageQueueMaxMessages=, MessageQueueMessageSize=
Diese zwei Felder akzeptieren Ganzzahlwerte
und steuern beim Erstellen der Nachrichtenwarteschlange das Feld mq_maxmsg
bzw. mq_msgsize. Beachten Sie, dass entweder keine oder beide der Variablen
gesetzt werden müssen. Siehe mq_setattr(3) für
Details.
FreeBind=
Akzeptiert einen logischen Wert. Steuert, ob
der Socket an eine nichtlokale IP-Adresse gebunden werden kann. Dies ist
nützlich, um Sockets zu konfigurieren, die auf einer bestimmten
IP-Adresse auf Anfragen warten sollen, bevor diese IP-Adresse erfolgreich auf
einer Netzwerkschnittstelle konfiguriert wurde. Dies richtet die Socket-Option
IP_FREEBIND/IPV6_FREEBIND ein. Aus Robustheitsgründen
wird empfohlen, diese Option immer zu benutzen, wenn Sie ein Socket an eine
bestimmte IP-Adresse binden. Standardmäßig false.
Transparent=
Akzeptiert einen logischen Wert. Steuert die
Socket-Option IP_TRANSPARENT/IPV6_TRANSPARENT.
Standardmäßig false.
Broadcast=
Akzeptiert einen logischen Wert. Dies steuert
die Socket-Option SO_BROADCAST, die das Senden von Datagrammen von
diesem Socket erlaubt. Standardmäßig false.
PassCredentials=
Akzeptiert einen logischen Wert. Dies steuert
die Socket-Option SO_PASSCRED, die AF_UNIX-Sockets den Empfang
von Berechtigungsnachweisen vom sendenden Prozess in einer Hilfsnachricht
erlaubt. Standardmäßig false.
PassSecurity=
Akzeptiert einen logischen Wert. Dies steuert
die Socket-Option SO_PASSSEC, die AF_UNIX-Sockets den Empfang
des Sicherheitskontextes vom sendenden Prozess in einer Hilfsnachricht
erlaubt. Standardmäßig false.
PassPacketInfo=
Akzeptiert einen logischen Wert. Dies steuert
die Socket-Optionen IP_PKTINFO, IPV6_RECVPKTINFO,
NETLINK_PKTINFO oder PACKET_AUXDATA, die dem Empfang
zusätzlicher, paketbezogener Metadaten auf den Sockets AF_INET,
AF_INET6, AF_UNIX und AF_PACKET als Zusatznachrichten
aktivieren. Standardmäßig false.
Timestamping=
Akzeptiert entweder »off«,
»us« (Alias: »usec«, »µs«)
oder »ns« (Alias: »nsec«). Dies steuert die
Socket-Optionen SO_TIMESTAMP oder SO_TIMESTAMPNS und aktiviert,
ob eingehender Netzwerkverkehr Zeitstempel-Metadaten transportieren soll.
Standardmäßig off.
TCPCongestion=
Akzeptiert einen Zeichenkettenwert. Steuert
den von diesem Socket verwandten TCP-Überlastungsalgorithmus. Sollte
entweder »westwood«, »veno«,
»cubic«, »lp« oder jeder andere vom IP-Stack
verfügbare Algorithmus sein. Diese Einstellung gilt nur für
Datenstrom-Sockets.
ExecStartPre=, ExecStartPost=
Akzeptiert eine oder mehrere Befehlszeilen,
die ausgeführt werden, vor bzw. nachdem der auf Anfragen wartende
Socket/FIFO erstellt und gebunden wurde. Das erste Symbol auf der Befehlszeile
muss ein absoluter Dateiname sein, dem die Argumente für den Prozess
folgen. Gemäß des für ExecStartPre= bei
Dienste-Unit-Dateien verwandten Schematas können mehrere Befehlszeilen
angegeben werden.
ExecStopPre=, ExecStopPost=
Zusätzliche Befehle, die
ausgeführt werden, vor bzw. nachdem der auf Anfragen wartende
Socket/FIFO geschlossen und entfernt wurde. Gemäß des für
ExecStartPre= bei Dienste-Unit-Dateien verwandten Schematas
können mehrere Befehlszeilen angegeben werden.
TimeoutSec=
Konfiguriert die Zeit, die auf das Beenden der
in ExecStartPre=, ExecStartPost=, ExecStopPre= und
ExecStopPost= festgelegten Befehle gewartet wird. Falls ein Befehl sich
nicht innerhalb der konfigurierten Zeit beendet, wird der Socket als
fehlgeschlagen betrachtet und wieder heruntergefahren. Alle noch laufenden
Befehle werden zwangsweise mittels SIGTERM und nach einer weiteren
Verzögerung dieser Zeitdauer mit SIGKILL beendet. (Siehe
KillMode= in systemd.kill(5).) Akzeptiert einen einheitenfreien
Wert in Sekunden oder einen Zeitdauerwert wie »5min 20s«. Durch
Übergabe von »0« wird die Zeitüberschreitungslogik
deaktiviert. Standardmäßig DefaultTimeoutStartSec= aus
der Verwalterkonfigurationsdatei (siehe systemd-system.conf(5)).
Service=
Gibt den bei eingehendem Verkehr zu
aktivierenden Dienste-Unit-Namen an. Diese Einstellung ist nur für
Sockets mit Accept=no erlaubt. Standardmäßig wird der
Dienst verwandt, der den gleichen Namen wie das Socket trägt (mit
entfernter Endung). Meistens sollte es nicht notwendig sein, diese Option zu
verwenden. Beachten Sie, dass Setzen dieses Parameters zur Hinzunahme
zusätzlicher Abhängigkeiten führen kann (siehe
oben).
RemoveOnStop=
Akzeptiert ein logisches Argument. Falls
aktiviert, werden alle von dieser Socket-Unit erstellten Dateiknoten entfernt,
wenn diese gestoppt wird. Dies gilt für AF_UNIX-Sockets im
Dateisystem, POSIX-Nachrichtenwarteschlangen, FIFOs sowie allen Symlinks auf
sie, die mit Symlinks= konfiguriert sind. Normalerweise sollte es nicht
notwendig sein, diese Option zu verwenden. Die Verwendung dieser Option wird
auch nicht empfohlen, da Dienste weiterlaufen könnten, nachdem die
Socket-Unit beendet wurde und es sollte weiterhin möglich sein, mit
ihnen über den Dateisystemknoten zu kommunizieren.
Standardmäßig aus.
Symlinks=
Akzeptiert eine Liste von Dateisystempfaden.
Die angegebenen Pfade werden als Symlinks auf den AF_UNIX-Socket-Pfad
oder FIFO-Pfad von dieser Socket-Unit erstellt. Falls diese Einstellung
verwandt wird, kann nur ein AF_UNIX-Socket in diesem Dateisystem oder
ein FIFO für die Socket-Unit konfiguriert sein. Verwenden Sie diese
Option, um einen oder mehrere Symlink-Aliasnamen für einen Socket zu
verwalten und ihren Lebenszyklus zu verknüpfen. Beachten Sie, dass es
für die Socket-Unit nicht als fatal betrachtet wird, wenn die
Erstellung eines Symlinks fehlschlägt und die Socket-Unit weiterhin
starten könnte. Falls eine leere Zeichenkette zugewiesen wird, wird die
Liste der Pfade zurückgesetzt. Standardmäßig eine leere
Liste.
FileDescriptorName=
Weist allen Dateideskriptoren, die diese
Socket-Unit kapselt, einen Namen zu. Dies hilft aktivierten Diensten bei der
Erkennung bestimmter Dateideskriptoren, falls mehrere Dateideskriptoren
übergeben werden. Dienste können den Aufruf
sd_listen_fds_with_names(3) verwenden, um den konfigurierten Namen
für die empfangenen Dateideskriptoren zu erlangen. Die Namen
dürfen jedes ASCII-Zeichen enthalten, allerdings keine Steuerzeichen
und »:«, und dürfen höchstens 255 Zeichen lang
sein. Falls diese Einstellung nicht verwandt wird, ist die Vorgabe für
Dateideskriptoren der Name der Socket-Unit, einschließlich ihrer Endung
.socket.
TriggerLimitIntervalSec=, TriggerLimitBurst=
Konfiguriert eine Begrenzung, wie oft diese
Socket-Unit innerhalb eines bestimmten Zeitintervalls aktiviert werden darf.
Die Länge des Zeitintervalls in den normalen Zeiteinheiten
»us«, »ms«, »s«,
»min«, »h«, … kann mit
TriggerLimitIntervalSec= konfiguriert werden, die Vorgabe ist 2s (siehe
systemd.time(7) für Details über die verschiedenen
verstandenen Zeiteinheiten). Die Einstellung TriggerLimitBurst=
akzeptiert einen positiven Ganzzahlwert und legt die Anzahl der erlaubten
Aktivierungen pro Zeiteinheit fest, die Vorgabe ist 200 für Sockets mit
Accept=yes (daher werden standardmäßig 200 Aktivierungen
pro 2 Sekunden erlaubt) und andernfalls 20 (20 Aktivierungen pro 2 Sekunden).
Setzen Sie einen der beiden auf 0, um jede Art der
Auslöseratenbegrenzung zu deaktivieren. Falls diese Begrenzung erreicht
wird, wird die Socket-Unit in den Fehlerzustandmodus gebracht und Verbindungen
zu ihr sind nicht mehr möglich, bis sie neu gestartet wird. Beachten
Sie, dass diese Begrenzung erzwungen wird, bevor die Diensteaktivierung in die
Warteschlange eingereiht wird.
Lesen Sie systemd.unit(5), systemd.exec(5) und
systemd.kill(5) für weitere Einstellungen.
SIEHE AUCH
systemd(1), systemctl(1), systemd-system.conf(5), systemd.unit(5), systemd.exec(5), systemd.kill(5), systemd.resource-control(5), systemd.service(5), systemd.directives(7), sd_listen_fds(3), sd_listen_fds_with_names(3) Für eine ausführlichere Beschreibung siehe die Serie »Systemd für Entwickler«: Socket-Aktivierung[4], Socket-Aktivierung, Teil II[5], Inetd-Dienste konvertieren[6], Socket-aktivierte Internet-Dienste und Betriebssystem-Container[7].ANMERKUNGEN
- 1.
- USB FunctionFS
- 2.
- TCP-Aufrechterhaltungs-HOWTO
- 3.
- Smack
- 4.
- Socket-Aktivierung
- 5.
- Socket-Aktivierung, Teil II
- 6.
- Inetd-Dienste-Konvertierung
- 7.
- Socket-aktivierte Internet-Dienste und Betriebssystem-Container
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzersystemd 252 |