Suivant: Mises à jour non surveillées (Unattended Upgrades), Précédent: Configuration du réseau, Monter: Services [Table des matières][Index]
Le module (gnu services networking)
dont on a parlé dans la section
précédente fournit des services pour des configuration plus avancées :
fournir un service DHCP que d’autres peuvent utiliser, filtrer des paquets
avec iptables ou nftables, faire tourner un point d’accès WiFi avec
hostadp
, lancer le « superdémon » inetd
et bien plus
encore. Cette section les décrit.
Ce type définie un service qui lance un démon DHCP. Pour créer un service
de ce type, vous devez appliquer un objet <dhcpd-configuration>
. Par
exemple :
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "my-dhcpd.conf"))
(interfaces '("enp0s25"))))
package
(par défaut : isc-dhcp
)Le paquet qui fournit le démon DHCP. ce paquet doit fournir le démon sbin/dhcpd relativement à son répertoire de sortie. Le paquet par défaut est le serveur DHCP d’ISC.
config-file
(par défaut : #f
)Le fichier de configuration à utiliser. Il est requis. Il sera passé à
dhcpd
via son option -cf
. La valeur peut être n’importe quel
objet « simili-fichier » (voir file-like objects). Voir
man dhcpd.conf
pour des détails sur la syntaxe du fichier de
configuration.
version
(par défaut : "4"
)La version de DHCP à utiliser. Le serveur DHCP d’ISC supporte les valeur «
4 », « 6 » et « 4o6 ». Elles correspondent aux options -4
, -6
et -4o6
du programme dhcpd
. Voir man dhcpd
pour plus
de détails.
run-directory
(par défaut : "/run/dhcpd"
)Le répertoire d’exécution à utiliser. Au moment de l’activation du service, ce répertoire sera créé s’il n’existe pas.
pid-file
(par défaut : "/run/dhcpd/dhcpd.pid"
)Le fichier de PID à utiliser. Cela correspond à l’option -pf
de
dhcpd
. Voir man dhcpd
pour plus de détails.
interfaces
(par défaut : '()
)Les noms des interfaces réseaux sur lesquelles dhcpd écoute. Si cette liste
n’est pas vide, alors ses éléments (qui doivent être des chaînes de
caractères) seront ajoutés à l’invocation de dhcpd
lors du démarrage
du démon. Il n’est pas forcément nécessaire de spécifier des interfaces ici
; voir man dhcpd
pour plus de détails.
Il s’agit du type de service permettant d’exécuter le démon
hostapd pour mettre en place des points
d’accès et des serveurs d’authentification WiFi (IEEE 802.11). Sa valeur
associée doit être un hostapd-configuration
comme indiqué ci-dessous
:
;; Utiliser wlan1 pour lancer le point d'accès pour « My Network ». (service hostapd-service-type (hostapd-configuration (interface "wlan1") (ssid "My Network") (channel 12)))
Ce type de données représente la configuration du service hostapd, avec les champs suivants :
package
(par défaut : hostapd
)Le paquet hostapd à utiliser.
interface
(par défaut : "wlan0"
)L’interface réseau pour faire fonctionner le point d’accès WiFi.
ssid
Le SSID (identifiant de l’ensemble de services), une chaîne de caractères qui identifie ce réseau.
broadcast-ssid?
(par défaut : #t
)La diffusion de ce SSID.
channel
(par défaut : #f
)Le canal WiFi à utiliser.
drivers
(par défaut : "nl80211"
)Le type d’interface du conducteur. "nl80211"
est utilisé avec tous
les pilotes mac80211 de Linux. Utilisez "none"
si vous construisez
hostapd comme un serveur RADIUS autonome qui ne contrôle aucun pilote
sans-fil/filaire.
extra-settings
(par défaut : ""
)Paramètres supplémentaires à ajouter tels quels au fichier de configuration de hostapd. Voir https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf pour la référence du fichier de configuration.
C’est le type de service permettant de simuler la mise en réseau WiFi, qui
peut être utile dans les machines virtuelles à des fins de test. Le service
charge le noyau Linux
module mac80211_hwsim
et lance hostapd pour créer un pseudo réseau
WiFi qui peut être vu sur wlan0
, par défaut.
La valeur du service est un enregistrement hostapd-configuration
.
C’est le type de service pour mettre en place une configuration iptables. iptables est un outil de filtrage de paquets pris en charge par le noyau Linux. Ce service prend en charge la configuration d’iptable pour IPv4 et IPv6. Un exemple de configuration simple, qui rejette les connexions entrantes sauf celles sur le port 22 est présenté ci-dessous.
(service iptables-service-type
(iptables-configuration
(ipv4-rules (plain-file "iptables.rules" "*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j 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 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
COMMIT
"))))
Type de données représentant la configuration d’iptables.
iptables
(par défaut : iptables
)Le paquet iptables qui fournit iptables-restore
et
ip6tables-restore
.
ipv4-rules
(par défaut : %iptables-accept-all-rules
)Les règles iptables à utiliser. Elles seront passées à
iptables-restore
. Cela peut être un objet « simili-fichier »
(voir file-like objects).
ipv6-rules
(par défaut : %iptables-accept-all-rules
)Les règles iptables à utiliser. Elles seront passées à
ip6tables-restore
. Cela peut être un objet « simili-fichier »
(voir file-like objects).
C’est le type de service permettant de mettre en place une configuration
nftables. nftables est un projet de netfilter qui vise à remplacer le cadre
existant iptables, ip6tables, arptables et ebtables. Il fournit un nouveau
cadre de filtrage de paquets, un nouvel utilitaire d’espace utilisateur·rice
nft
, et une couche de compatibilité pour iptables. Ce service est
fourni avec un jeu de règles par défaut %default-nftables-ruleset
qui
rejette toutes les connexions entrantes sauf celles vers le port ssh 22.
Pour l’utiliser, il suffit d’écrire :
Type de données représentant la configuration de nftables.
package
(par défaut : nftables
)Le paquet nftables qui fournit nft
.
ruleset
(par défaut : %default-nftables-ruleset
)Les règles d’utilisation de nftables. Il peut s’agir de n’importe quel objet « de type fichier » (voir objets de type fichier).
C’est le type de service qui lance le démon Network Time Protocol (NTP), ntpd
. Le démon gardera l’horloge
système synchronisée avec celle des serveurs NTP spécifiés.
La valeur de ce service est un objet ntpd-configuration
, décrit
ci-dessous.
C’est le type de données représentant la configuration du service NTP.
servers
(par défaut : %ntp-servers
)C’est la liste des serveurs (enregistrements <ntp-server>
) avec
lesquels ntpd
sera synchronisé. Voir la définition du type de
données ntp-server
ci-dessous.
allow-large-adjustment?
(par défaut : #t
)Détermine si ntpd
peut faire un ajustement initial de plus de
1 000 secondes.
ntp
(par défaut : ntp
)Le paquet NTP à utiliser.
Liste de noms d’hôtes à utiliser comme serveurs NTP par défaut. Ce sont les serveurs du projet NTP Pool.
Le type de données représentant la configuration d’un serveur NTP.
type
(par défaut : 'server
)Le type de serveur NTP, indiqué par un symbole. L’un des types suivants :
'pool
, 'server
, 'peer
, 'broadcast
ou
'manycastclient
.
adresse
L’adresse du serveur, comme une chaîne de caractères.
options
Les options NTPD à utiliser avec ce serveur spécifique, données sous la forme d’une liste de noms d’options et/ou de tuples de noms et de valeurs d’options. L’exemple suivant définit un serveur à utiliser avec les options iburst et prefer, ainsi que version 3 et un temps maxpoll de 16 secondes.
(ntp-server (type 'server) (address "some.ntp.server.org") (options `(iburst (version 3) (maxpoll 16) prefer))))
Lance le démon NTP ntpd
, implémenté par
OpenNTPD. Le démon gardera l’horloge
système synchronisée avec celle des serveurs donnés.
(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/"))))
Cette variable est une liste des adresses de serveurs définies dans
%ntp-servers
.
openntpd
(par défaut : openntpd
)Le paquet openntpd à utiliser.
listen-on
(par défaut : '("127.0.0.1" "::1")
)Une liste d’adresses IP locales ou de noms d’hôtes que devrait écouter le démon ntpd.
query-from
(par défaut : '()
)Une liste d’adresses IP que le démon devrait utiliser pour les requêtes sortantes.
sensor
(par défaut : '()
)Spécifie une liste de senseurs de différences de temps que ntpd devrait
utiliser. ntpd
écoutera chaque senseur qui existe et ignorera ceux
qui n’existent pas. Voir la
documentation en amont pour plus d’informations.
server
(par défaut : '()
)Spécifie une liste d’adresses IP ou de noms d’hôtes de serveurs NTP avec lesquels se synchroniser.
servers
(par défaut : %openntp-servers
)Spécifie une liste d’adresses IP ou de noms d’hôtes de banques de serveurs NTP avec lesquelles se synchroniser.
constraint-from
(par défaut : '()
)ntpd
peut être configuré pour demander la « Date » à des serveurs
HTTPS de confiance via TLS. Cette information de temps n’est pas utilisée
pour sa précision mais agit comme une contrainte authentifiée, ce qui réduit
l’impact d’une attaque par l’homme du milieu sur le protocole NTP non
authentifié. Spécifie une liste d’URL, d’adresses IP ou de noms d’hôtes de
serveurs HTTPS qui fournissent cette contrainte.
constraints-from
(par défaut : '()
)Comme pour constraint-from
, spécifie une liste d’URL, d’adresses IP
ou de noms d’hôtes de serveurs HTTPS qui fournissent une contrainte. Si les
noms d’hôtes sont résolus en plusieurs adresses IP, ntpd
calculera la
contrainte médiane.
Ce service lance le démon inetd
(voir inetd invocation dans GNU Inetutils). inetd
écoute des connexions sur des
sockets internet et démarre le programme spécifié uniquement lorsqu’une
connexion arrive sur l’un de ces sockets.
La valeur de ce service est un objet inetd-configuration
. L’exemple
suivant configure le démon inetd
pour qu’il fournisse le service
echo
, ainsi qu’un service smtp qui transfère le trafic smtp par
ssh à un serveur smtp-server
derrière une passerelle hostname
:
(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" "/chemin/vers/ssh_key"
"-W" "smtp-server:25" "user@hostname")))))))
Voir plus bas pour plus de détails sur inetd-configuration
.
Type de données représentant la configuration de inetd
.
program
(par défaut : (file-append inetutils "/libexec/inetd")
)L’exécutable inetd
à utiliser.
entries
(par défaut : '()
)Une liste d’entrées de services inetd
. Chaque entrée devrait être
crée avec le constructeur inetd-entry
.
Type de données représentant une entrée dans la configuration
d’inetd
. Chaque entrée correspond à un socket sur lequel
inetd
écoutera les requêtes.
node
(par défaut : #f
)Chaîne de caractères facultative, un liste d’adresses locales séparées par
des virgules que inetd
devrait utiliser pour écouter ce service.
Voir Configuration file dans GNU Inetutils pour une description
complète de toutes les options.
name
Une chaîne de caractères dont le nom doit correspondre à une entrée de
/etc/services
.
socket-type
Un symbole parmi 'stream
, 'dgram
, 'raw
, 'rdm
ou
'seqpacket
.
protocol
Une chaîne de caractères qui doit correspondre à une entrée dans
/etc/protocols
.
wait?
(par défaut : #t
)Indique si inetd
devrait attendre que le serveur ait quitté avant
d’écouter de nouvelles demandes de service.
user
Une chaîne de caractères contenant le nom d’utilisateur (et éventuellement
de groupe) de l’utilisateur en tant que lequel le serveur devrait tourner.
Le nom du groupe peut être spécifié comme un suffixe, séparé par un
deux-points ou un point, c.-à-d. "utilisateur"
,
"utilisateur:groupe"
ou "utilisateur.groupe"
.
program
(par défaut : "internal"
)Le programme du serveur qui servira les requêtes, ou "internal"
si
inetd
devrait utiliser un service inclus.
arguments
(par défaut : '()
)Une liste de chaînes de caractères ou d’objets simili-fichiers qui sont les
arguments du programme du serveur, en commençant par le zéroième argument,
c.-à-d. le nom du programme lui-même. Pour les services internes à
inetd
, cette entrée doit être '()
ou '("internal")
.
Voir Configuration file dans GNU Inetutils pour trouver une discussion plus détaillée de chaque champ de configuration.
C’est le type du service qui lance un nœud OpenDHT, dhtnode
. Le démon peut être utilisé pour héberger votre
propre service mandataire à la table de hash distribue (DHT), par exemple
pour y connecter Jami, entre autres applications.
Important : Lorsque vous utiliser le serveur mandataire OpenDHT, les adresses IP qu’il « voit » venant des clients devraient être les adresses atteignables depuis les autres pairs. En pratique cela signifie qu’une adresse accessible publiquement est préférable pour un serveur mandataire, en dehors de votre réseau privé. Par exemple, héberger le serveur mandataire sur un réseau local privé en IPv4 et l’exposer via une redirection de port pourrait fonctionner pour les pairs externes, mais les pairs locaux au mandataire verront leur adresse privée partagées avec les pairs externes, ce qui posera des problèmes de connectivité.
La valeur de ce service est un objet opendht-configuration
, décrit
ci-dessous.
Les champs de opendht-configuration
disponibles sont :
opendht
(par défaut : opendht
) (type : simili-fichier)Le paquet opendht
à utiliser.
peer-discovery?
(par défaut : #f
) (type : booléen)Indique s’il faut activer le mécanisme de découverte de pairs locaux en multidiffusion.
enable-logging?
(par défaut : #f
) (type : booléen)Indique s’il faut activer la journalisation des messages vers syslog. C’est désactivé par défaut car cette option est plutôt verbeuse.
debug?
(par défaut : #f
) (type : booléen)Indique s’il faut activer la journalisation de débogage. Cela n’a aucun effet si la journalisation n’est pas activée.
bootstrap-host
(par défaut : "bootstrap.jami.net:4222"
) (type : peut-être-chaine)Le nom d’hôte du nœud utilisé pour effectuer la première connexion au
réseau. Vous pouvez fournir une valeur de port spécifique en ajoutant le
suffixe :PORT
. Par défaut, cela utilise les nœuds d’amorçage de Jami,
mais n’importe quel hôte peut être spécifié ici. Il est aussi possible de
désactiver l’amorçage en paramétrant explicitement ce champ à la valeur
%unset-value
.
port
(par défaut : 4222
) (type : peut-être-entier)Le port UDP sur lequel se lier. Lorsque la valeur est laissée non spécifiée, un port disponible est automatiquement choisi.
proxy-server-port
(type : peut-être-entier)Crée un serveur mandataire écoutant sur le port spécifié.
proxy-server-port-tls
(type : peut-être-entier)Crée un serveur mandataire écoutant les connexions TLS sur le port spécifié.
Type for a service that runs the Tor
anonymous networking daemon. The service is configured using a
<tor-configuration>
record. By default, the Tor daemon runs as the
tor
unprivileged user, which is a member of the tor
group.
Services of this type can be extended by other services to specify
onion services (in addition to those already specified in
tor-configuration
) as in this example:
(simple-service 'my-extra-onion-service tor-service-type
(list (tor-onion-service-configuration
(name "extra-onion-service")
(mapping '((80 . "127.0.0.1:8080"))))))
tor
(par défaut : tor
)Le paquet qui fournit le démon Tor. Ce paquet doit fournir le démon bin/tor relativement à son répertoire de sortie. Le paquet par défaut est le l’implémentation du projet Tor.
config-file
(par défaut : (plain-file "empty" "")
)Le fichier de configuration à utiliser. Il sera ajouté au fichier de
configuration par défaut, et le fichier de configuration final sera passé à
tor
via son option -f
. Cela peut être n’importe quel objet «
simili-fichier » (voir file-like objects). Voir man
tor
pour plus de détails sur la syntaxe du fichier de configuration.
hidden-services
(par défaut : '()
)The list of <tor-onion-service-configuration>
records to use. For
any onion service you include in this list, appropriate configuration to
enable the onion service will be automatically added to the default
configuration file.
socks-socket-type
(par défaut : 'tcp
)Le type de socket par défaut que Tor devrait utiliser pour les socket
SOCKS. Cela doit être soit 'tcp
soit 'unix
. S’il s’agit de
'tcp
, alors Tor écoutera pas défaut sur le port TCP 9050 sur
l’interface de boucle locale (c.-à-d. localhost). S’il s’agit de
'unix
, Tor écoutera sur le socket UNIX domain
/var/run/tor/socks-sock, qui sera inscriptible pour les membres du
groupe tor
.
Si vous voulez personnaliser le socket SOCKS plus avant, laissez
socks-socket-type
à sa valeur par défaut de 'tcp
et utilisez
config-file
pour remplacer les valeurs par défaut avec votre propre
option SocksPort
.
control-socket?
(par défaut : #f
)Indique s’il faut utiliser un « socket de contrôle » par lequel on peut
contrôler Tor pour, par exemple, instancier des services onion
dynamiquement. Si la valeur est #t
, Tor écoutera les commandes de
contrôle sur le socket UNIX domain /var/run/tor/control-sock, qui
sera inscriptible pour les membres du groupe tor
.
transport-plugins
(default: '()
)The list of <tor-transport-plugin>
records to use. For any transport
plugin you include in this list, appropriate configuration line to enable
transport plugin will be automatically added to the default configuration
file.
Data Type representing a Tor Onion Service configuration. See
the Tor project’s
documentation for more information. Available
tor-onion-service-configuration
fields are:
name
(type : string)Name for this Onion Service. This creates a
/var/lib/tor/hidden-services/name directory, where the
hostname file contains the ‘.onion
’ host name for this
Onion Service.
mapping
(type: alist)Association list of port to address mappings. The following example:
'((22 . "127.0.0.1:22") (80 . "127.0.0.1:8080"))
maps ports 22 and 80 of the Onion Service to the local ports 22 and 8080.
Data type representing a Tor pluggable transport plugin in
tor-configuration
. Plugguble transports are programs that disguise
Tor traffic, which can be useful in case Tor is censored. See the the Tor
project’s documentation and specification for more information.
Each transport plugin corresponds either to ClientTransportPlugin ...
or to ServerTransportPlugin ...
line in the default configuration
file, see man tor
. Available tor-transport-plugin
fields
are:
role
(default: 'client
)This must be either 'client
or 'server
. Otherwise, an error
is raised. Set the 'server
value if you want to run a bridge to help
censored users connect to the Tor network, see
the Tor project’s
brige guide. Set the 'client
value if you want to connect to
somebody else’s bridge, see the Tor
project’s “Get Bridges” page. In both cases the required additional
configuration should be provided via #:config-file
option of
tor-configuration
.
protocol
(default: "obfs4"
)A string that specifies a pluggable transport protocol.
program
This must be a “file-like” object or a string pointing to the pluggable transport plugin executable. This option allows the Tor daemon run inside the container to access the executable and all the references (e.g. package dependencies) attached to it.
Suppose you would like Tor daemon to use obfs4 type obfuscation and to
connect to Tor network via obfs4 bridge (a nonpublic Tor relay with support
for obfs4 type obfuscation). Then you may go to
https://bridges.torproject.org/ and
get there a couple of bridge lines (each starts with obfs4 ...
) and
use these lines in tor-service-type configuration as follows:
(service tor-service-type
(tor-configuration
(config-file (plain-file "torrc"
"\
UseBridges 1
Bridge obfs4 ...
Bridge obfs4 ..."))
(transport-plugins
(list (tor-transport-plugin
(program
(file-append
go-gitlab-torproject-org-tpo-anti-censorship-pluggable-transports-lyrebird
"/bin/lyrebird")))))))
Le module (gnu services rsync)
fournit les services suivant :
Vous pourriez vouloir un démon rsync si vous voulez que des fichiers soient disponibles pour que n’importe qui (ou juste vous) puisse télécharger des fichiers existants ou en téléverser des nouveaux.
C’est le type pour le démon rsync. La valeur
de ce service est un enregistrement rsync-configuration
comme dans
cet exemple :
;; Exporte deux répertoires par rsync. Par défaut rsync écoute sur toutes ;; les interfaces réseau. (service rsync-service-type (rsync-configuration (modules (list (rsync-module (name "music") (file-name "/srv/zik") (read-only? #f)) (rsync-module (name "movies") (file-name "/home/charlie/movies"))))))
Voir plus pas pour trouver des détails à propos de
rsync-configuration
.
Type de données représentant la configuration de rsync-service
.
package
(par défaut : rsync)Le paquet rsync
à utiliser.
address
(par défaut : #f
)L’adresse sur laquelle rsync
écoute les connexions entrantes. Si
la valeur n’est pas spécifiée, écoute sur toutes les adresses par défaut.
port-number
(par défaut : 873
)Le port TCP sur lequel rsync
écoute les connexions entrantes. Si
le port est inférieur à 1024
, rsync
doit être démarré en
tant qu’utilisateur et groupe root
.
pid-file
(par défaut : "/var/run/rsyncd/rsyncd.pid"
)Nom du fichier où rsync
écrit son PID.
lock-file
(par défaut : "/var/run/rsyncd/rsyncd.lock"
)Nom du fichier où rsync
écrit son fichier de verrouillage.
log-file
(par défaut : "/var/log/rsyncd.log"
)Nom du fichier où rsync
écrit son fichier de journal.
user
(par défaut : "root"
)Propriétaire du processus rsync
.
group
(par défaut : "root"
)Groupe du processus rsync
.
uid
(par défaut : "rsyncd"
)Nom d’utilisateur ou ID utilisateur en tant que lequel les transferts de
fichiers ont lieu si le démon a été lancé en root
.
gid
(par défaut : "rsyncd"
)Nom du groupe ou ID du groupe qui sera utilisé lors de l’accès au module.
modules
(par défaut : %default-modules
)Liste des « modules » — c.-à-d. des répertoires exportés par
rsync. Chaque élément doit être un enregistrement rsync-module
, comme
décrit plus bas.
C’est le type de données pour les « modules » rsync. Un module est un répertoire exporté par le protocole rsync. Les champs disponibles sont les suivants :
name
Le nom du module. C’est le nom qui apparait dans les URL. Par exemple, si le
module se nomme music
, l’URL correspondante sera
rsync://host.example.org/music
.
file-name
Nom du répertoire exporté.
comment
(par défaut : ""
)Commentaire associé au module. Les interfaces utilisateurs clientes peuvent l’afficher quand ils récupèrent la liste des modules disponibles.
read-only?
(par défaut : #t
)Indique si le client pourra envoyer des fichiers. Si la valeur est fausse, les envoies seront autorisés si les permissions du côté du démon le permettent.
chroot?
(par défaut : #t
)Lorsque la valeur est vraie, le démon rsync change de racine pour le répertoire du module avant de commencer le transfert de fichiers avec le client. Cela améliore la sécurité, mais nécessite que rsync tourne en root.
timeout
(par défaut : 300
)La durée en secondes de silence après laquelle le démon ferme une connexion avec le client.
Le module (gnu services syncthing)
fournit les services suivant :
Vous pourriez vouloir un démon syncthing si vous avez des fichiers sur plusieurs ordinateurs et souhaitez les synchroniser en temps réel, de manière sécurisée sans espionnage possible.
C’est le type pour le démon syncthing. La
valeur de ce service est un enregistrement syncthing-configuration
comme dans cet exemple :
(service syncthing-service-type
(syncthing-configuration (user "alice")))
Remarque : This service is also available for Guix Home, where it runs directly with your user privileges (voir
home-syncthing-service-type
).
Voir plus pas pour trouver des détails à propos de
syncthing-configuration
.
Type de données représentant la configuration de syncthing-service
.
syncthing
(par défaut : syncthing)Le paquet syncthing
à utiliser.
arguments
(par défaut : ’())Liste d’arguments de la ligne de commande à passer au binaire
syncthing
.
logflags
(par défaut : 0)L’ensemble des drapeaux de journalisation, voir logfiles sur la documentation de Syncthing.
user
(par défaut : #f)L’utilisateur qui lance le service Syncthing. Cela suppose que l’utilisateur spécifié existe.
group
(par défaut : "users")Le groupe qui lance le service Syncthing. Cela suppose que le group spécifié existe.
home
(par défaut : #f)Configuration et répertoires de données communs. Le répertoire de
configuration par défaut est $HOME de l’utilisateur user
de
Syncthing.
En plus, (gnu services ssh)
fournit les services suivant.
Type of the service that runs the GNU lsh secure shell (SSH) daemon,
lshd
. The value for this service is a <lsh-configuration>
object.
Data type representing the configuration of lshd
.
lsh
(default: lsh
) (type: file-like)The package object of the GNU lsh secure shell (SSH) daemon.
daemonic?
(default: #t
) (type: boolean)Whether to detach from the controlling terminal.
host-key
(default: "/etc/lsh/host-key"
) (type: string)File containing the host key. This file must be readable by root only.
interfaces
(default: '()
) (type: list)List of host names or addresses that lshd
will listen on. If
empty, lshd
listens for connections on all the network interfaces.
port-number
(default: 22
) (type: integer)Port to listen on.
allow-empty-passwords?
(par défaut : #f
) (type : booléen)Whether to accept log-ins with empty passwords.
root-login?
(default: #f
) (type: boolean)Whether to accept log-ins as root.
syslog-output?
(default: #t
) (type: boolean)Whether to log lshd
standard output to syslogd. This will make
the service depend on the existence of a syslogd service.
pid-file?
(default: #f
) (type: boolean)When #t
, lshd
writes its PID to the file specified in
pid-file.
pid-file
(default: "/var/run/lshd.pid"
) (type: string)File that lshd
will write its PID to.
x11-forwarding?
(default: #t
) (type: boolean)Whether to enable X11 forwarding.
tcp/ip-forwarding?
(default: #t
) (type: boolean)Whether to enable TCP/IP forwarding.
password-authentication?
(default: #t
) (type: boolean)Whether to accept log-ins using password authentication.
public-key-authentication?
(default: #t
) (type: boolean)Whether to accept log-ins using public key authentication.
initialize?
(default: #t
) (type: boolean)When #f
, it is up to the user to initialize the randomness generator
(voir lsh-make-seed dans LSH Manual), and to create a key pair with
the private key stored in file host-key (voir lshd basics dans LSH Manual).
C’est le type pour le démon ssh OpenSSH,
sshd
. Sa valeur doit être un enregistrement
openssh-configuration
comme dans cet exemple :
(service openssh-service-type
(openssh-configuration
(x11-forwarding? #t)
(permit-root-login 'prohibit-password)
(authorized-keys
`(("alice" ,(local-file "alice.pub"))
("bob" ,(local-file "bob.pub"))))))
Voir plus bas pour trouver des détails sur openssh-configuration
.
Ce service peut être étendu avec des clefs autorisées supplémentaires, comme dans cet exemple :
(service-extension openssh-service-type
(const `(("charlie"
,(local-file "charlie.pub")))))
C’est l’enregistrement de la configuration de la commande sshd
d’OpenSSH.
openssh
(par défaut : openssh)Le paquet OpenSSH à utiliser.
pid-file
(par défaut : "/var/run/sshd.pid"
)Nom du fichier où sshd
écrit son PID.
port-number
(par défaut : 22
)Port TCP sur lequel sshd
écoute les connexions entrantes.
max-connections
(par défaut : 200
)Limite du nombre maximum de connexions clientes simultanées, appliquée par
le service Shepherd dans le style d’inetd (voir make-inetd-constructor
dans le manuel de GNU
Shepherd).
permit-root-login
(par défaut : #f
)Ce champ détermine si et quand autoriser les connexions en root. Si la
valeur est #f
, les connexions en root sont désactivées ; si la valeur
est #t
, elles sont autorisées. S’il s’agit du symbole
'prohibit-password
, alors les connexions root sont autorisées mais
pas par une authentification par mot de passe.
allow-empty-passwords?
(par défaut : #f
)Lorsque la valeur est vraie, les utilisateurs avec un mot de passe vide peuvent se connecter. Sinon, ils ne peuvent pas.
password-authentication?
(par défaut : #t
)Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur mot de passe. Sinon, ils doivent utiliser une autre méthode d’authentification.
public-key-authentication?
(par défaut : #t
)Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur clef publique. Sinon, les utilisateurs doivent utiliser une autre méthode d’authentification.
Les clefs publiques autorisées sont stockées dans ~/.ssh/authorized_keys. Ce n’est utilisé que par le protocole version 2.
x11-forwarding?
(par défaut : #f
)Lorsque la valeur est vraie, le transfert de connexion du client graphique
X11 est activé — en d’autre termes, les options -X et -Y
de ssh
fonctionneront.
allow-agent-forwarding?
(par défaut : #t
)Indique s’il faut autoriser la redirection d’agent.
allow-tcp-forwarding?
(par défaut : #t
)Indique s’il faut autoriser la redirection TCP.
gateway-ports?
(par défaut : #f
)Indique s’il faut autoriser les ports de passerelle.
challenge-response-authentication?
(par défaut : #f
)Spécifie si l’authentification par défi est autorisée (p. ex. via PAM).
use-pam?
(par défaut : #t
)Active l’interface avec le module d’authentification greffable, PAM. Si la
valeur est #t
, cela activera l’authentification PAM avec
challenge-response-authentication?
et
password-authentication?
, en plus des modules de compte et de session
de PAM pour tous les types d’authentification.
Comme l’authentification par défi de PAM sert généralement un rôle
équivalent à l’authentification par mot de passe, vous devriez désactiver
soit challenge-response-authentication?
, soit
password-authentication?
.
print-last-log?
(par défaut : #t
)Spécifie si sshd
devrait afficher la date et l’heure de dernière
connexion des utilisateurs lorsqu’un utilisateur se connecte de manière
interactive.
subsystems
(par défaut : '(("sftp" "internal-sftp"))
)Configure les sous-systèmes externes (p. ex. le démon de transfert de fichiers).
C’est une liste de paires, composées chacune du nom du sous-système et d’une commande (avec éventuellement des arguments) à exécuter à la demande du sous-système.
La commande internal-sftp
met en œuvre un serveur SFTP en cours de
traitement. On peut aussi spécifier la commande sftp-server
:
(service openssh-service-type
(openssh-configuration
(subsystems
`(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
accepted-environment
(par défaut : '()
)Liste de chaînes de caractères qui décrivent les variables d’environnement qui peuvent être exportées.
Chaque chaîne a sa propre ligne. Voir l’option AcceptEnv
dans
man sshd_config
.
Cet exemple permet aux clients ssh d’exporter la variable COLORTERM
.
Elle est initialisée par les émulateurs de terminaux qui supportent les
couleurs. Vous pouvez l’utiliser dans votre fichier de ressource de votre
shell pour activer les couleurs sur la ligne de commande si cette variable
est initialisée.
(service openssh-service-type
(openssh-configuration
(accepted-environment '("COLORTERM"))))
authorized-keys
(par défaut : '()
) ¶C’est la liste des clefs autorisées. Chaque élément de la liste est un nom d’utilisateur suivit d’un ou plusieurs objets simili-fichiers qui représentent les clefs publiques SSH. Par exemple :
(openssh-configuration
(authorized-keys
`(("rekado" ,(local-file "rekado.pub"))
("chris" ,(local-file "chris.pub"))
("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))
enregistre les clefs publiques spécifiées pour les comptes rekado
,
chris
et root
.
Des clefs autorisées supplémentaires peuvent être spécifiées via
service-extension
.
Remarquez que cela n’interfère pas avec l’utilisation de ~/.ssh/authorized_keys.
generate-host-keys?
(par défaut : #t
)Indique s’il faut générer des pairs de clés hôtes avec ssh-keygen
-A
dans /etc/ssh s’il n’y en a pas.
Générer des pairs de clés prend quelques secondes quand assez d’entropie est disponible et n’arrive qu’une fois. Vous pouvez vouloir désactiver cette génération dans une machine virtuelle qui n’en a pas besoin car les clés hôtes sont fournies d’une autre manière, et où le temps de démarrage supplémentaire peut être un problème.
log-level
(par défaut : 'info
)C’est le symbole qui spécifie le niveau de journalisation : quiet
,
fatal
, error
, info
, verbose
, debug
, etc.
Voir la page de manuel de sshd_config pour trouver la liste complète
des noms de niveaux.
extra-content
(par défaut : ""
)Ce champ peut être utilisé pour ajouter un texte arbitraire au fichier de configuration. C’est particulièrement utile pour des configurations élaborées qui ne pourraient pas être exprimées autrement. Cette configuration, par exemple, désactiverait les connexions en root, mais les permettrait depuis une adresse IP spécifique :
(openssh-configuration
(extra-content "\
Match Address 192.168.0.1
PermitRootLogin yes"))
Type of the service that runs the
Dropbear SSH daemon,
whose value is a <dropbear-configuration>
object.
For example, to specify a Dropbear service listening on port 1234:
(service dropbear-service-type (dropbear-configuration
(port-number 1234)))
Ce type de données représente la configuration d’un démon SSH Dropbear.
dropbear
(par défaut : dropbear)Le paquet Dropbear à utiliser.
port-number
(par défaut : 22)Le port TCP sur lequel le démon attend des connexions entrantes.
syslog-output?
(par défaut : #t
)Indique s’il faut activer la sortie vers syslog.
pid-file
(par défaut : "/var/run/dropbear.pid"
)Nom du fichier de PID du démon.
root-login?
(par défaut : #f
)Indique s’il faut autoriser les connexions en root
.
allow-empty-passwords?
(par défaut : #f
)Indique s’il faut autoriser les mots de passes vides.
password-authentication?
(par défaut : #t
)Indique s’il faut autoriser l’authentification par mot de passe.
C’est le type du programme AutoSSH qui exécute une copie de ssh
et la surveille, en la
redémarrant si nécessaire si elle meurt ou arrête le trafic passant.
AutoSSH peut être exécuté manuellement à partir de la ligne de commande en
passant des arguments au binaire autossh
du paquet autossh
,
mais peut aussi être exécuté comme un service Guix. Ce dernier cas
d’utilisation est documenté ici.
AutoSSH peut être utilisé pour transférer le trafic local vers une machine distante en utilisant un tunnel SSH, et il respecte le ~/.ssh/config de l’utilisateur sous lequel il est exécuté.
Par exemple, pour spécifier un service exécutant autossh comme
utilisateur·rice pino
et transférant toutes les connexions locales au
port 8081
vers remote:8081
en utilisant un tunnel SSH, ajoutez
cet appel au champ services
du système d’exploitation :
(service autossh-service-type
(autossh-configuration
(user "pino")
(ssh-options (list "-T" "-N" "-L" "8081:localhost:8081" "remote.net"))))
Ce type de données représente la configuration du service AutoSSH.
user
(par défaut : "autossh"
)L’utilisateur·rice en tant que responsable du service AutoSSH. Cela suppose que l’utilisateur spécifié existe.
poll
(par défaut : 600
)Spécifie le temps de sondage de la connexion en secondes.
first-poll
(par défaut : #f
)Indique le nombre de secondes que l’AutoSSH attend avant le premier test de
connexion. Après ce premier test, le vote reprend au rythme défini dans
poll
. Lorsqu’il est défini à #f
, le premier sondage n’est pas
traité spécialement et utilisera également le sondage de connexion spécifié
dans poll
.
gate-time
(par défaut : 30
)Spécifie combien de secondes une connexion SSH doit être active avant qu’elle soit considérée comme réussie.
log-level
(par défaut : 1
)Le niveau du log, correspondant aux niveaux utilisés par syslog—donc
0
est le plus silencieux tandis que 7
est le plus bavard.
max-start
(par défaut : #f
)Le nombre maximum de fois que SSH peut être (re)démarré avant la sortie
d’AutoSSH. Lorsqu’il est défini sur #f
, aucun maximum n’est
configuré et AutoSSH peut redémarrer indéfiniment.
message
(par défaut : ""
)Le message à ajouter à celui de echo envoyé lors du test des connexions.
port
(par défaut : "0"
)Les ports utilisés pour la surveillance de la connexion. Lorsqu’il est
défini sur "0"
, la surveillance est désactivée. Lorsqu’il est défini
sur "n"
où n est un entier positif, les ports n et
n+1 sont utilisés pour surveiller la connexion, de sorte que le port
n est le port de surveillance de base et n+1
est le port
d’echo. Lorsqu’ils sont définis sur "n:m"
où n et
m sont des entiers positifs, les ports n et m sont
utilisés pour surveiller la connexion, de sorte que le port n est le
port de surveillance de base et m est le port d’echo.
ssh-options
(par défaut : '()
)La liste des arguments de la ligne de commande à passer à ssh
lorsqu’elle est exécutée. Les options -f et -M sont
réservées à AutoSSH et peuvent provoquer un comportement indéfini.
C’est le type du programme WebSSH
qui exécute un client web SSH. WebSSH peut être exécuté manuellement à
partir de la ligne de commande en passant des arguments au binaire
wssh
du paquet webssh
, mais il peut aussi être exécuté
comme un service Guix. Ce dernier cas d’utilisation est documenté ici.
Par exemple, pour spécifier un service exécutant WebSSH sur l’interface de
bouclage sur le port 8888
avec une politique de rejet avec une liste
des hôtes autorisés à se connecter, et NGINX comme reverse-proxy de ce
service écoutant la connexion HTTPS, ajouter cet appel au champ
services
du système d’exploitation :
(service webssh-service-type (webssh-configuration (address "127.0.0.1") (port 8888) (policy 'reject) (known-hosts '("localhost ecdsa-sha2-nistp256 AAAA…" "127.0.0.1 ecdsa-sha2-nistp256 AAAA…")))) (service nginx-service-type (nginx-configuration (server-blocks (list (nginx-server-configuration (inherit %webssh-configuration-nginx) (server-name '("webssh.example.com")) (listen '("443 ssl")) (ssl-certificate (letsencrypt-certificate "webssh.example.com")) (ssl-certificate-key (letsencrypt-key "webssh.example.com")) (locations (cons (nginx-location-configuration (uri "/.well-known") (body '("root /var/www;"))) (nginx-server-configuration-locations %webssh-configuration-nginx))))))))
Type de données représentant la configuration pour webssh-service
.
package
(par défaut : webssh)Le paquet webssh
à utiliser.
user-name
(par défaut : "webssh")Le nom ou l’identifiant de l’utilisateur·rice qui transfère le fichier vers et depuis ce module doit avoir lieu.
group-name
(par défaut : "webssh")Nom du groupe ou ID du groupe qui sera utilisé lors de l’accès au module.
address
(par défaut : #f)Adresse IP sur laquelle webssh
écoute les connexions entrantes.
port
(par défaut : 8888)Port TCP sur lequel webssh
écoute les connexions entrantes.
policy
(par défaut : #f)Politique de connexion. La politique de reject nécessite de spécifier known-hosts.
known-hosts
(par défaut : ’())Liste des hôtes qui ont permis une connexion SSH à partir de
webssh
.
log-file
(par défaut : "/var/log/webssh.log"
)Nom du fichier où webssh
écrit son fichier de journal.
log-level
(par défaut : #f)Niveau d’enregistrement.
This service type adds a list of known Facebook hosts to the
/etc/hosts file. (voir Host Names dans The GNU C Library
Reference Manual) Each line contains an entry that maps a known server
name of the Facebook on-line service—e.g., www.facebook.com
—to
unroutable IPv4 and IPv6 addresses.
Ce mécanisme peut éviter que des programmes qui tournent localement, comme des navigateurs Web, ne se connectent à Facebook.
Le module (gnu services avahi)
fourni la définition suivante.
C’est le service qui lance avahi-daemon
, un service système qui
répond aux requêtes mDNS/DNS-SD qui permet la découverte de services et la
recherche de nom en « zéro configuration » (voir
https://avahi.org/). Sa valeur doit être un enregistrement
avahi-configuration
— voir plus bas.
Ce service étend le démon de cache de services de noms (nscd) pour qu’il
puisse résoudre les noms d’hôtes en .local
avec
nss-mdns. Voir Name Service Switch, pour plus d’informations sur la résolution des noms d’hôte.
En plus, cela ajoute le paquet avahi au profil du système pour que les
commandes comme avahi-browse
soient directement utilisables.
Type de données représentant la configuration d’Avahi.
host-name
(par défaut : #f
)Si la valeur n’est pas #f
, utilise cette valeur comme nom d’hôte à
publier pour la machine ; sinon, utilise le vrai nom d’hôte de la machine.
publish?
(par défaut : #t
)Lorsque la valeur est vraie, permet la publication sur le réseau (en diffusion) des noms d’hôtes et des services.
publish-workstation?
(par défaut : #t
)Lorsque la valeur est vraie, avahi-daemon
publie le nom d’hôte et
l’adresse IP de la machine via mDNS sur le réseau local. Pour voir les noms
d’hôtes publiés sur votre réseau local, vous pouvez lancer :
avahi-browse _workstation._tcp
wide-area?
(par défaut : #f
)Lorsque la valeur est vraie, DNS-SD sur DNS unicast est activé.
ipv4?
(par défaut : #t
)ipv6?
(par défaut : #t
)Ces champs déterminent s’il faut utiliser des socket IPv4/IPv6.
domains-to-browse
(par défaut : '()
)C’est la liste des domaines sur lesquels naviguer.
C’est le type du service Open vSwitch,
dont la valeur devrait être un objet openvswitch-configuration
.
Type de données représentant la configuration de Open vSwitch, un commutateur virtuel multiniveaux conçu pour rendre possible l’automatisation massive des réseaux avec des extensions programmables.
package
(par défaut : openvswitch)Objet de paquet de Open vSwitch.
Il s’agit du type de service du service PageKite, une solution de tunneling permettant de rendre les serveurs
locaux visibles au public, même derrière des pare-feu restrictifs ou du NAT
sans transfert de ports. La valeur pour ce type de service est un
enregistrement pagekite-configuration
.
Voici un exemple exposant les démons locaux HTTP et SSH :
(service pagekite-service-type
(pagekite-configuration
(kites '("http:@kitename:localhost:80:@kitesecret"
"raw/22:@kitename:localhost:22:@kitesecret"))
(extra-file "/etc/pagekite.rc")))
Type de données représentant la configuration de PageKite.
package
(par défaut : pagekite)Objet du paquet de PageKite.
kitename
(par défaut : #f
)Nom de PageKite pour l’authentification au serveur frontal.
kitesecret
(par défaut : #f
)Secret partagé pour s’authentifier auprès du serveur frontal. Vous devriez
probablement mettre cela dans extra-file
à la place.
frontend
(par défaut : #f
)Connectez-vous au serveur frontal nommé PageKite au lieu du service pagekite.net.
kites
(par défaut : '("http:@kitename:localhost:80:@kitesecret")
)Liste de services kites à utiliser. Expose HTTP sur le port 80 par
défaut. Le format est proto:nomdukite:hôte:port:secret
.
extra-file
(par défaut : #f
)Fichier de configuration supplémentaire à lire, que vous devez créer manuellement. Utilisez-le pour ajouter des options supplémentaires et gérer les secrets partagés hors bande.
Le type de service pour se connecter au réseau Yggdrasil, une jeune implémentation d’un réseau IPv6 entièrement chiffré de bout en bout.
Yggdrasil fournit le routage indépendant du nom avec des adresses générées de manière cryptographiques. L’adressage statique signifie que vous pouvez garder la même adresse aussi longtemps que vous le souhaitez, même si vous changez d’emplacement, et que vous pouvez générer une nouvelle adresse (en générant de nouvelles clés) quand vous le souhaitez. https://yggdrasil-network.github.io/2018/07/28/addressing.html
Passez-lui une valeur de type yggdrasil-configuration
pour le
connecter aux pairs publics ou aux pairs locaux.
voici un exemple qui utilise des pairs publics et une adresse statique. Les
clés de signature et de chiffrement statiques sont définies dans
/etc/yggdrasil-private.conf (la valeur par défaut de
config-file
).
;; extrait d'une déclaration de système d'exploitation (service yggdrasil-service-type (yggdrasil-configuration (autoconf? #f) ;; utiliser uniquement les pairs publics (json-config ;; choisir parmi ;; https://github.com/yggdrasil-network/public-peers '((peers . #("tcp://1.2.3.4:1337")))) ;; /etc/yggdrasil-private.conf est la valeur par défaut pour config-file ))
# sample content for /etc/yggdrasil-private.conf { # Your private key. DO NOT share this with anyone! PrivateKey: 5c750... }
Type de données qui représente la configuration de Yggdrasil.
package
(par défaut : yggdrasil
)Objet du paquet de Yggdrasil.
json-config
(par défaut : '()
)Contenu de /etc/yggdrasil.conf. Sera fusionné avec
/etc/yggdrasil-private.conf. Remarquez que ces paramètres sont
stockés dans le dépôt de Guix, qui est disponible en lecture pour tout le
monde. Ne stockez pas vos clés privées dedans. Voir la sortie de
yggdrasil -genconf
pour un aperçu rapide de ce que sont des clés
valides et leurs valeurs par défaut.
autoconf?
(par défaut : #f
)Indique s’il faut utiliser le mode automatique. L’activer fera utiliser une IP dynamique à Yggdrasil et l’appairer à ses voisins IPv6.
log-level
(par défaut : 'info
)La quantité de détails à inclure dans les journaux. Utilisez 'debug
pour plus de détails.
log-to
(par défaut : 'stdout
)L’emplacement où envoyer les journaux. Par défaut, le service enregistre la
sortie standard dans /var/log/yggdrasil.log. L’alternative est
'syslog
, qui envoie la sortie au service syslog.
config-file
(par défaut : "/etc/yggdrasil-private.conf"
)What HJSON file to load sensitive data from. This is where private keys
should be stored, which are necessary to specify if you don’t want a
randomized address after each restart. Use #f
to disable. Options
defined in this file take precedence over json-config
. Use the
output of yggdrasil -genconf
as a starting point. To configure a
static address, delete everything except PrivateKey option.
Le type de service pour se connecter au réseau IPFS,
un système de fichiers mondial, versionné et en pair-à-pair. Passez lui un
objet ipfs-configuration
pour changer les ports utilisés pour la
passerelle et l’API.
Voici un exemple de configuration, avec des ports non standards :
(service ipfs-service-type
(ipfs-configuration
(gateway "/ip4/127.0.0.1/tcp/8880")
(api "/ip4/127.0.0.1/tcp/8881")))
Type de données représentant la configuration d’IPFS.
package
(par défaut : go-ipfs
)Objet du paquet d’IPFS.
gateway
(par défaut : "/ip4/127.0.0.1/tcp/8082"
)Adresse de la passerelle, au format « multiaddress ».
api
(par défaut : "/ip4/127.0.0.1/tcp/5001"
)Adresse du point d’accès de l’API, au format « multiaddress ».
C’est le type pour le logiciel de routage Keepalived, keepalived
. Sa valeur doit être un enregistrement
keepalived-configuration
comme dans cet exemple pour la machine
maître :
(service keepalived-service-type
(keepalived-configuration
(config-file (local-file "keepalived-master.conf"))))
où keepalived-master.conf :
vrrp_instance my-group { state MASTER interface enp9s0 virtual_router_id 100 priority 100 unicast_peer { 10.0.0.2 } virtual_ipaddress { 10.0.0.4/24 } }
et pour la machine de secours :
(service keepalived-service-type
(keepalived-configuration
(config-file (local-file "keepalived-backup.conf"))))
où keepalived-backup.conf :
vrrp_instance my-group { state BACKUP interface enp9s0 virtual_router_id 100 priority 99 unicast_peer { 10.0.0.3 } virtual_ipaddress { 10.0.0.4/24 } }
Suivant: Mises à jour non surveillées (Unattended Upgrades), Précédent: Configuration du réseau, Monter: Services [Table des matières][Index]