Next: , Previous: , Up: Servicios   [Contents][Index]


12.9.5 Servicios de red

The (gnu services networking) module discussed in the previous section provides services for more advanced setups: providing a DHCP service for others to use, filtering packets with iptables or nftables, running a WiFi access point with hostapd, running the inetd “superdaemon”, and more. This section describes those.

Procedimiento Scheme: dhcpd-service-type

Este tipo define un servicio que ejecuta el daemon DHCP. Para crear un servicio de este tipo debe proporcionar un objeto <dhcpd-configuration>. Por ejemplo:

(service dhcpd-service-type
         (dhcpd-configuration
          (config-file (local-file "mi-dhcpd.conf"))
          (interfaces '("enp0s25"))))
Tipo de datos: dhcpd-configuration
package (predeterminado: isc-dhcp)

The package that provides the DHCP daemon. This package is expected to provide the daemon at sbin/dhcpd relative to its output directory. The default package is the ISC’s DHCP server.

config-file (predeterminado: #f)

El archivo de configuración usado. Esta opción es necesaria. Se le proporcionará a dhcpd a través de su opción -cf. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”). Véase man dhcpd.conf para detalles sobre la sintaxis del archivo de configuración.

version (predeterminada: "4")

La versión DHCP usada. El servidor DHCP de ISC permite los valores “4”, “6” y “4o6”. Corresponden con las opciones -4, -6 y -4o6 del programa dhcpd. Véase man dhcpd para más detalles.

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

El directorio de ejecución usado. Durante la activación del servicio se creará en caso de no existir.

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

El archivo de PID usado. Corresponde con la opción -pf de dhcpd. Véase man dhcpd para más detalles.

interfaces (predeterminadas: '())

Los nombres de las interfaces de red en las que dhcpd debería esperar retransmisiones. Si la lista no está vacía, entonces sus elementos (que deben ser cadenas) se añadirá a la invocación de dhcpd cuando se inicie el daemon. Puede no ser necesaria la especificación explícita aquí de ninguna interfaz; véase man dhcpd para más detalles.

Variable Scheme: hostapd-service-type

Este es el tipo de servicio que ejecuta el daemon hostapd para configurar puntos de acceso WiFi (IEEE 802.11) y servidores de identificación. Su valor debe ser un registro hostapd-configuration como en este ejemplo:

;; Use wlan1 para ejecutar el punto de acceso para "Mi red".
(service hostapd-service-type
         (hostapd-configuration
          (interface "wlan1")
          (ssid "Mi red")
          (channel 12)))
Tipo de datos: hostapd-configuration

Este tipo de datos representa la configuración del servicio hostapd, y tiene los siguientes campos:

package (predeterminado: hostapd)

El paquete hostapd usado.

interface (predeterminado: "wlan0")

La interfaz de red en la que se establece el punto de acceso WiFi.

ssid

El SSID (identificador del servicio, del inglés “service set identifier”), una cadena que identifica esta red.

broadcast-ssid? (predeterminado: #t)

Determina si se emite este SSID.

channel (predeterminado: 1)

El canal WiFi usado.

driver (predeterminado: "nl80211")

El tipo de controlador de la interfaz. "nl80211" se usa con todos los controladores de mac80211 de Linux. Use "none" si está construyendo hostapd como un servidor RADIUS independiente que no controla ningún controlador de red cableada o inalámbrica.

extra-settings (predeterminado: "")

Configuración adicional que se añade literalmente al archivo de configuración de hostapd. Véase https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf para la referencia del archivo de configuración.

Variable Scheme: simulated-wifi-service-type

Tipo de servicio que simula una red inalámbrica (“WiFi”), lo que puede ser útil en máquinas virtuales para realizar pruebas. El servicio carga el módulo mac80211_hwsim del núcleo Linux e inicia hostapd para crear una red inalámbrica virtual que puede verse en wlan0, de manera predeterminada.

El valor de este servicio es un registro hostapd-configuration.

Variable Scheme: iptables-service-type

Este es el tipo de servicio para la aplicación de configuración de iptables. iptables es un entorno de trabajo para el filtrado de paquetes implementado por el núcleo Linux. Este servicio permite la configuración de iptables tanto para IPv4 como IPv6. Un ejemplo simple de cómo rechazar todas las conexiones entrantes excepto aquellas al puerto 22 de ssh se muestra a continuación.

(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
"))))
Tipo de datos: iptables-configuration

El tipo de datos que representa la configuración de iptables.

iptables (predeterminado: iptables)

El paquete iptables que proporciona iptables-restore y ip6tables-restore.

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

Las reglas de iptables usadas. Se le proporcionarán a iptables-restore. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”).

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

Las reglas de ip6tables usadas. Se le proporcionarán a ip6tables-restore. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”).

Variable Scheme: nftables-service-type

This is the service type to set up a nftables configuration. nftables is a netfilter project that aims to replace the existing iptables, ip6tables, arptables and ebtables framework. It provides a new packet filtering framework, a new user-space utility nft, and a compatibility layer for iptables. This service comes with a default ruleset %default-nftables-ruleset that rejecting all incoming connections except those to the ssh port 22. To use it, simply write:

Tipo de datos: nftables-configuration

El tipo de datos que representa la configuración de nftables.

package (predeterminado: nftables)

El paquete nftables que proporciona nft.

ruleset (predeterminados: %default-nftables-ruleset)

El conjunto de reglas de nftables usado. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”).

Variable Scheme: ntp-service-type

Este es el tipo del servicio que ejecuta el daemon del protocolo de tiempo en red (NTP), ntpd. El daemon mantendrá el reloj del sistema sincronizado con el de los servidores NTP especificados.

El valor de este servicio es un objeto ntpd-configuration, como se describe a continuación.

Tipo de datos: ntp-configuration

Este es el tipo de datos para la configuración del servicio NTP.

servers (predeterminados: %ntp-servers)

La lista de servidores (registros <ntp-server>) con los que la herramienta ntpd se sincronizará. Véase la información sobre el tipo de datos ntp-server a continuación.

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

Esto determina si se le permite a ntpd realizar un ajuste inicial de más de 1000 segundos.

ntp (predeterminado: ntp)

El paquete NTP usado.

Variable Scheme: %ntp-servers

Lista de nombres de máquinas usadas como servidores NTP predeterminados. Son servidores del NTP Pool Project.

Tipo de datos: ntp-server

Tipo de datos que representa la configuración de un servidor NTP.

type (predeterminado: 'server)

The type of the NTP server, given as a symbol. One of 'pool, 'server, 'peer, 'broadcast or 'manycastclient.

address

La dirección del servidor, como una cadena.

options

NTPD options to use with that specific server, given as a list of option names and/or of option names and values tuples. The following example define a server to use with the options iburst and prefer, as well as version 3 and a maxpoll time of 16 seconds.

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

Ejecuta ntpd, el daemon del protocolo de tiempo en red (NTP), implementado por OpenNTPD. El daemon mantendrá el reloj del sistema sincronizado con el de los servidores proporcionados.

(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/"))))

Variable Scheme: %openntpd-servers

Esta variable es una lista de las direcciones de servidores definidos en %ntp-servers.

Tipo de datos: openntpd-configuration
openntpd (predeterminado: (file-append openntpd "/sbin/ntpd"))

El ejecutable openntpd usado.

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

Una lista de direcciones IP o nombres de máquina en los que el daemon ntpd debe escuchar conexiones.

query-from (predeterminadas: '())

Una lista de direcciones IP locales que el daemon ntpd debe usar para consultas salientes.

sensor (predeterminados: '())

Especifica una lista de dispositivos de sensores de tiempo de ntpd debería usar. ntpd escuchará cada sensor que realmente exista e ignora los que no. Véase la documentación de las desarrolladoras originales para más información.

server (predeterminado: '())

Especifica una lista de direcciones IP o nombres de máquina de servidores NTP con los que sincronizarse.

servers (predeterminada: %openntp-servers)

Una lista de direcciones IP o nombres de máquina con los que el daemon ntpd se debe sincronizar.

constraint-from (predeterminado: '())

ntpd puede configurarse para que solicite la fecha a través del campo “Date” de servidores HTTPS en los que se confíe a través de TLS. Esta información de tiempo no se usa por precisión pero actúa como una condición verificada, por tanto reduciendo el impacto de ataques mediante la intervención del tráfico con servidores NTP no verificados. Especifica una lista de URL, direcciones IP o nombres de máquina de servidores HTTPS que proporcionarán la condición.

constraints-from (predeterminadas: '())

Como en constraint-from, proporciona una lista de URL, direcciones IP o nombres de máquina de servidores HTTP para proporcionar la condición. En caso de que el nombre de máquina resuelva en múltiples direcciones IP, ntpd calculará la condición mediana de todas ellas.

Variable Scheme: inetd-service-type

Este servicio ejecuta el daemon inetd (see inetd invocation in GNU Inetutils). inetd escucha conexiones en sockets de internet, e inicia bajo demanda el programa servidor cuando se realiza una conexión en uno de esos sockets.

El valor de este servicio es un objeto inetd-configuration. El ejemplo siguiente configura el daemon inetd para proporcionar el servicio echo implementado por él mismo, así como un servicio smtp que reenvía el tráfico smtp por ssh a un servidor servidor-smtp tras la pasarela máquina:

(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" "/ruta/de/la/clave_ssh"
                "-W" "servidor-smtp:25" "usuaria@maquina")))))))

A continuación se proporcionan más detalles acerca de inetd-configuration.

Tipo de datos: inetd-configuration

Tipo de datos que representa la configuración de inetd.

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

El ejecutable inetd usado.

entries (predeterminadas: '())

Una lista de entradas de servicio de inetd. Cada entrada debe crearse con el constructor inted-entry.

Tipo de datos: inetd-entry

Tipo de datos que representa una entrada en la configuración de inetd. Cada entrada corresponde a un socket en el que inetd escuchará a la espera de peticiones.

node (predeterminado: #f)

Cadena opcional, una lista separada por comas de direcciones locales que inetd debería usar cuando se escuche para este servicio. See Configuration file in GNU Inetutils para una descripción completa de todas las opciones.

name

Una cadena, el nombre debe corresponder con una entrada en /etc/services.

socket-type

Puede ser 'stream, 'dgram, 'raw, 'rdm o 'seqpacket.

protocol

Una cadena, debe corresponder con una entrada en /etc/protocols.

wait? (predeterminado: #t)

Si inetd debe esperar la salida del servidor antes de reiniciar la escucha de nuevas peticiones de servicio.

user

Una cadena que contiene el nombre (y, opcionalmente, el grupo) de la usuaria como la que se deberá ejecutar el servidor. El nombe de grupo se puede especificar en un sufijo, separado por dos puntos o un punto normal, es decir "usuaria", "usuaria:grupo" o "usuaria.grupo".

program (predeterminado: "internal")

El programa servidor que recibirá las peticiones, o "internal" si inetd debería usar un servicio implementado internamente.

arguments (predeterminados: '())

Una lista de cadenas u objetos “tipo-archivo”, que serán los parámetros del programa servidor, empezando con el parámetro 0, es decir, el nombre del programa en sí mismo. Para los servicios internos de inetd, esta entrada debe ser '() o '("internal").

See Configuration file in GNU Inetutils, para una información más detallada sobre cada campo de la configuración.

Scheme Variable: opendht-service-type

This is the type of the service running a OpenDHT node, dhtnode. The daemon can be used to host your own proxy service to the distributed hash table (DHT), for example to connect to with Jami, among other applications.

Importante: When using the OpenDHT proxy server, the IP addresses it “sees” from the clients should be addresses reachable from other peers. In practice this means that a publicly reachable address is best suited for a proxy server, outside of your private network. For example, hosting the proxy server on a IPv4 private local network and exposing it via port forwarding could work for external peers, but peers local to the proxy would have their private addresses shared with the external peers, leading to connectivity problems.

The value of this service is a opendht-configuration object, as described below.

Data Type: opendht-configuration

Available opendht-configuration fields are:

opendht (default: opendht) (type: file-like)

The opendht package to use.

peer-discovery? (default: #f) (type: boolean)

Whether to enable the multicast local peer discovery mechanism.

enable-logging? (default: #f) (type: boolean)

Whether to enable logging messages to syslog. It is disabled by default as it is rather verbose.

debug? (default: #f) (type: boolean)

Whether to enable debug-level logging messages. This has no effect if logging is disabled.

bootstrap-host (default: "bootstrap.jami.net:4222") (type: maybe-string)

The node host name that is used to make the first connection to the network. A specific port value can be provided by appending the :PORT suffix. By default, it uses the Jami bootstrap nodes, but any host can be specified here. It’s also possible to disable bootstrapping by explicitly setting this field to the %unset-value value.

port (default: 4222) (type: maybe-number)

The UDP port to bind to. When left unspecified, an available port is automatically selected.

proxy-server-port (type: maybe-number)

Spawn a proxy server listening on the specified port.

proxy-server-port-tls (type: maybe-number)

Spawn a proxy server listening to TLS connections on the specified port.

Variable Scheme: tor-service-type

Este es el tipo para un servicio que ejecuta el daemon de red anónima Tor. El servicio se configura mediante un registro <tor-configuration>. De manera predeterminada, el daemon Tor se ejecuta como la usuaria sin privilegios tor, que es miembro del grupo tor.

Tipo de datos: tor-configuration
tor (predeterminado: tor)

El paquete que proporciona el daemon Tor. Se espera que este paquete proporcione el daemon en bin/tor de manera relativa al directorio de su salida. El paquete predeterminado es la implementación del Proyecto Tor.

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

El archivo de configuración usado. Se agregará al final del archivo de configuración predeterminado, y se proporcionará el archivo de configuración resultante a tor a través de su opción -f. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”). Véase man tor para detalles sobre la sintaxis del archivo de configuración.

hidden-services (predeterminados: '())

La lista de registros de servicios ocultos <hidden-service> usados. Para cada servicio oculto que añada en esta lista, se activará la configuración apropiada para su activación en el archivo de configuración predeterminado. Puede crear registros <hidden-service> de manera conveniente mediante el uso del procedimiento tor-hidden-service descrito a continuación.

socks-socket-type (predeterminado: 'tcp)

El tipo socket predeterminado que Tor debe usar para su socket SOCKS. Debe ser 'tcp i 'unix. Si es 'tcp, Tor escuchará en el puerto TCP 9050 de la interfaz local (es decir, localhost) de manera predeterminada. Si es 'unix, tor escuchará en el socket de dominio de UNIX /var/run/tor/socks-sock, que tendrá permisos de escritura para miembros del grupo tor.

Si desea personalizar el socket SOCKS de manera más detallada, mantenga socks-socket-type con su valor predeterminado de 'tcp y use config-file para modificar el valor predeterminado proporcionando su propia opción SocksPort.

control-socket? (default: #f)

Whether or not to provide a “control socket” by which Tor can be controlled to, for instance, dynamically instantiate tor onion services. If #t, Tor will listen for control commands on the UNIX domain socket /var/run/tor/control-sock, which will be made writable by members of the tor group.

Procedimiento Scheme: tor-hidden-service nombre relación

Define un servicio oculto Tor llamado nombre y que implementa la relación. relación es una lista de tuplas puerto/máquina, como:

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

En este ejemplo, el puerto 22 del servicio oculto se asocia con el puerto 22 local, y el puerto 80 se asocia con el puerto 8080 local.

Esto crea un directorio /var/lib/tor/hidden-services/nombre, donde el archivo hostname contiene el nombre de máquina .onion para el servicio oculto.

Véase la documentación del proyecto Tor para más información.

El módulo (gnu services rsync) proporciona los siguientes servicios:

Puede ser que desee un daemon rsync si tiene archivos que desee tener disponibles de modo que cualquiera (o simplemente usted) pueda descargar archivos existentes o subir nuevos archivos.

Variable Scheme: rsync-service-type

Este es el tipo de servicio para el daemon rsync. El valor tipo de servicio es un registro rsync-configuration como en este ejemplo.

;; Export two directories over rsync.  By default rsync listens on
;; all the network interfaces.
(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"))))))

Véase a continuación para detalles sobre rsync-configuration.

Tipo de datos: rsync-configuration

Tipo de datos que representa la configuración para rsync-service.

package (predeterminado: rsync)

Paquete rsync usado.

address (predeterminada: #f)

IP address on which rsync listens for incoming connections. If unspecified, it defaults to listening on all available addresses.

port-number (predeterminado: 873)

Puerto TCP en el que rsync escucha conexiones entrantes. Si el puerto es menor a 1024, rsync necesita iniciarse como root, tanto usuaria como grupo.

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

Nombre del archivo donde rsync escribe su PID.

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

Nombre del archivo donde rsync escribe su archivo de bloqueo.

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

Nombre del archivo donde rsync escribe su archivo de registros.

user (predeterminada: "root")

Propietaria del proceso rsync.

group (default: "root")

Grupo del proceso rsync.

uid (default: "rsyncd")

Nombre o ID de usuaria bajo la cual se efectúan las transferencias desde y hacia el módulo cuando el daemon se ejecuta como root.

gid (default: "rsyncd")

Nombre o ID de grupo que se usa cuando se accede al módulo.

modules (predeterminados: %default-modules)

List of “modules”—i.e., directories exported over rsync. Each element must be a rsync-module record, as described below.

Data Type: rsync-module

This is the data type for rsync “modules”. A module is a directory exported over the rsync protocol. The available fields are as follows:

name

The module name. This is the name that shows up in URLs. For example, if the module is called music, the corresponding URL will be rsync://host.example.org/music.

file-name

Name of the directory being exported.

comment (predeterminado: "")

Comment associated with the module. Client user interfaces may display it when they obtain the list of available modules.

read-only? (default: #t)

Whether or not client will be able to upload files. If this is false, the uploads will be authorized if permissions on the daemon side permit it.

chroot? (default: #t)

When this is true, the rsync daemon changes root to the module’s directory before starting file transfers with the client. This improves security, but requires rsync to run as root.

timeout (predeterminado: 300)

Idle time in seconds after which the daemon closes a connection with the client.

The (gnu services syncthing) module provides the following services:

You might want a syncthing daemon if you have files between two or more computers and want to sync them in real time, safely protected from prying eyes.

Scheme Variable: syncthing-service-type

This is the service type for the syncthing daemon, The value for this service type is a syncthing-configuration record as in this example:

See below for details about syncthing-configuration.

Data Type: syncthing-configuration

Data type representing the configuration for syncthing-service-type.

syncthing (default: syncthing)

syncthing package to use.

arguments (default: ’())

List of command-line arguments passing to syncthing binary.

logflags (default: 0)

Sum of logging flags, see Syncthing documentation logflags.

user (default: #f)

The user as which the Syncthing service is to be run. This assumes that the specified user exists.

group (default: "users")

The group as which the Syncthing service is to be run. This assumes that the specified group exists.

home (default: #f)

Common configuration and data directory. The default configuration directory is $HOME of the specified Syncthing user.

Es más, (gnu services ssh) proporciona los siguientes servicios.

Procedimiento Scheme: 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]

Ejecuta el programa lshd de lsh para escuchar en el puerto port-number. host-key debe designar a un archivo que contiene la clave de la máquina, y que sea legible únicamente por root.

Cuando daemonic? es verdadero, lshd se desligará del terminal de control y registrará su salida con syslogd, a menos que se establezca syslog-output? a falso. Obviamente, esto hace que lsh-dependa de la existencia de un servicio syslogd. Cuando pid-file? es verdadero, lshd escribe su PID al archivo llamado pid-file.

Cuando initialize? es verdadero, crea automáticamente una semilla una clave de máquina una vez se active el servicio si no existen todavía. Puede tomar un tiempo prolongado y necesita interacción.

Cuando initialize? es falso, es cuestión de la usuaria la inicialización del generador aleatorio (see lsh-make-seed in LSH Manual), la creación de un par de claves y el almacenamiento de la clave privada en el archivo host-key (see lshd basics in LSH Manual).

Cuando interfaces está vacío, lshd escucha conexiones en todas las interfaces de red; en otro caso, interfaces debe ser una lista de nombres de máquina o direcciones.

allow-empty-passwords? especifica si se aceptará el ingreso al sistema con una contraseña vacía y root-login? especifica si se acepta el ingreso al sistema como root.

El resto de opciones deberían ser autodescriptivas.

Variable Scheme: openssh-service-type

Este es el tipo para el daemon de shell seguro OpenSSH, sshd. Su valor debe ser un registro openssh-configuration como en este ejemplo:

(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"))))))

Véase a continuación detalles sobre openssh-configuration.

Este servicio se puede extender con claves autorizadas adicionales, como en este ejemplo:

(service-extension openssh-service-type
                   (const `(("carlos"
                             ,(local-file "carlos.pub")))))
Tipo de datos: openssh-configuration

Este es el registro de configuración para sshd de OpenSSH.

openssh (predeterminado: openssh)

The OpenSSH package to use.

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

Nombre del archivo donde sshd escribe su PID.

port-number (predeterminado: 22)

Puerto TCP en el que sshd espera conexiones entrantes.

max-connections (default: 200)

Hard limit on the maximum number of simultaneous client connections, enforced by the inetd-style Shepherd service (see make-inetd-constructor in The GNU Shepherd Manual).

permit-root-login (predeterminado: #f)

This field determines whether and when to allow logins as root. If #f, root logins are disallowed; if #t, they are allowed. If it’s the symbol 'prohibit-password, then root logins are permitted but not with password-based authentication.

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

Cuando es verdadero, las usuarias con contraseñas vacías pueden ingresar en el sistema. Cuando es falso, no pueden.

password-authentication? (predeterminado: #t)

Cuando es verdadero, las usuarias pueden ingresar al sistema con su contraseña. En caso falso, tienen otros métodos de identificación.

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

Cuando es verdadero, las usuarias pueden ingresar en el sistema mediante el uso de clave publica para su identificación. Cuando es falso, las usuarias tienen que usar otros métodos de identificación.

Las claves públicas autorizadas se almacenan en ~/.ssh/authorized_keys. Se usa únicamente por la versión 2 del protocolo.

x11-forwarding? (predeterminado: #f)

Cuando verdadero, la retransmisión de conexiones del cliente gráfico X11 está desactivada—en otras palabras, las opciones -X y -Y de ssh funcionarán.

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

Si se permite la retransmisión del agente de claves.

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

Si se permite la retransmisión TCP.

gateway-ports? (predeterminado: #f)

Si se permiten los puertos pasarela.

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

Especifica si la identificación mediante respuesta de desafío está permitida (por ejemplo, a través de PAM).

use-pam? (predeterminado: #t)

Permite el uso de la interfaz de módulos de identificación conectables (PAM). Si es #t se activará la identificación PAM mediante el uso de challenge-response-authentication? y password-authentication?, además del procesado de los módulos de cuenta usuaria y de sesión de PAM en todos los tipos de identificación.

Debido a que la identificación mediante respuesta de desafío de PAM tiene un rol equivalente a la identificación por contraseña habitualmente, debería desactivar challenge-response-authentication? o password-authentication?.

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

Especifica si sshd debe imprimir la fecha y hora del último ingreso al sistema de la usuaria cuando una usuaria ingresa interactivamente.

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

Configura subsistemas externos (por ejemplo, el daemon de transmisión de archivos).

Esta es una lista de listas de dos elementos, cada una de las cuales que contienen el nombre del subsistema y una orden (con parámetros opcionales) para ejecutar tras petición del subsistema.

La orden internal-sftp implementa un servidor SFTP dentro del mismo proceso. De manera alternativa, se puede especificar la orden sftp-server:

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

Una lista de cadenas que describe qué variables de entorno pueden ser exportadas.

Cada cadena obtiene su propia línea. Véase la opción AcceptEnv en man sshd_config.

Este ejemplo permite a clientes ssh exportar la variable COLORTERM. La establecen emuladores de terminal que implementan colores. Puede usarla en su archivo de recursos del shell para permitir colores en la línea de órdenes y las propias ordenes si esta variable está definida.

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

Esta es la lista de claves autorizadas. Cada elemento de la lista es un nombre de usuaria seguido de uno o más objetos “tipo-archivo” que representan claves públicas SSH. Por ejemplo:

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

registra las claves públicas especificadas para las cuentas rekado, chris y root.

Se pueden especificar claves autorizadas adicionales a través de service-extension.

Tenga en cuenta que esto no interfiere con el uso de ~/.ssh/authorized_keys.

generate-host-keys? (default: #t)

Whether to generate host key pairs with ssh-keygen -A under /etc/ssh if there are none.

Generating key pairs takes a few seconds when enough entropy is available and is only done once. You might want to turn it off for instance in a virtual machine that does not need it because host keys are provided in some other way, and where the extra boot time is a problem.

log-level (predeterminado: 'info)

Es un símbolo que especifica el nivel de detalle en los registros: quiet, fatal, error, info, verbose, debug, etc. Véase la página del manual de sshd_config para la lista completa de los nombres de nivel.

extra-content (predeterminado: "")

Este campo puede usarse para agregar un texto arbitrario al archivo de configuración. Es especialmente útil para configuraciones elaboradas que no se puedan expresar de otro modo. Esta configuración, por ejemplo, generalmente desactivaría el ingreso al sistema como root, pero lo permite para una dirección IP específica:

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

Ejecuta el daemon Dropbear SSH con la configuración proporcionada, un objeto <dropbear-configuration>.

Por ejemplo, para especificar un servicio Dropbear que escuche en el puerto 1234, añada esta llama al campo services de su sistema operativo:

(dropbear-service (dropbear-configuration
                    (port-number 1234)))
Tipo de datos: dropbear-configuration

Este tipo de datos representa la configuración del daemon Dropbear SSH.

dropbear (predeterminado: dropbear)

El paquete de Dropbear usado.

port-number (predeterminado: 22)

Puerto TCP donde el daemon espera conexiones entrantes.

syslog-output? (predeterminado: #t)

Determina si se envía la salida a syslog.

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

El nombre de archivo del archivo de PID del daemon.

root-login? (predeterminado: #f)

Si se permite el ingreso al sistema como root.

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

Si se permiten las contraseñas vacías.

password-authentication? (predeterminado: #t)

Determina si se usará identificación basada en contraseña.

Variable Scheme: autossh-service-type

Tipo del servicio para el programa AutoSSH que ejecuta una copia de ssh y la monitoriza, reiniciando la conexión en caso de que se rompa la conexión o deje de transmitir datos. AutoSSH puede ejecutarse manualmente en la línea de órdenes proporcionando los parámetros al binario autossh del paquete autossh, pero también se puede ejecutar como un servicio de Guix. Este último caso de uso se encuentra documentado aquí.

AutoSSH se puede usar para retransmitir tráfico local a una máquina remota usando un túnel SSH, y respeta el archivo de configuración ~/.ssh/config de la cuenta bajo la que se ejecute.

Por ejemplo, para especificar un servicio que ejecute autossh con la cuenta pino y retransmita todas las conexiones locales al puerto 8081 hacia remote:8081 usando un túnel SSH, añada esta llamada al campo services del sistema operativo:

(service autossh-service-type
         (autossh-configuration
          (user "pino")
          (ssh-options (list "-T" "-N" "-L" "8081:localhost:8081" "remote.net"))))
Tipo de datos: autossh-configuration

Este tipo de datos representa la configuración del servicio AutoSSH.

user (predeterminado: "autossh")

La cuenta de usuaria con la cual se ejecuta el servicio AutoSSH. Se asume que existe dicha cuenta.

poll (predeterminado: 600)

Especifica el tiempo de comprobación de la conexión en segundos.

first-poll (predeterminado: #f)

Especifica cuantos segundos espera AutoSSH antes de la primera prueba de conexión. Tras esta primera prueba las comprobaciones se realizan con la frecuencia definida en poll. Cuando se proporciona el valor #f la primera comprobación no se trata de manera especial y también usará el valor especificado en poll.

gate-time (predeterminado: 30)

Especifica cuantos segundos debe estar activa una conexión SSH antes de que se considere satisfactoria.

log-level (predeterminado: 1)

El nivel de registro, corresponde con los niveles usados por—por lo que 0 es el más silencioso y 7 el que contiene más información.

max-start (predeterminado: #f)

El número de veces máximo que puede lanzarse (o reiniciarse) SSH antes de que AutoSSH termine. Cuando se proporciona #f, no existe un máximo por lo que AutoSSH puede reiniciar la conexión indefinidamente.

message (predeterminado: "")

El mensaje que se añade al mensaje de eco que se envía cuando se prueban las conexiones.

port (predeterminado: "0")

Los puertos usados para la monitorización de la conexión. Cuando se proporciona "0", se desactiva la monitorización. Cuando se proporciona "n" donde n es un entero positivo, los puertos n y n+1 se usan para monitorizar la conexión, de tal modo que el puerto n es el puerto base de monitorización y n+1 es el puerto de eco. Cuando se proporciona "n:m" donde n y m son enteros positivos, los puertos n y m se usan para monitorizar la conexión, de tal modo que n es el puerto base de monitorización y m es el puerto de eco.

ssh-options (predeterminados: '())

Lista de parámetros de línea de órdenes proporcionados a ssh cuando se ejecuta. Las opciones -f y -M están reservadas para AutoSSH y pueden causar un comportamiento indefinido.

Variable Scheme: webssh-service-type

Tipo para el programa WebSSH que ejecuta un cliente SSH web. WebSSH puede ejecutarse manualmente en la línea de órdenes proporcionando los parámetros al binario wssh del paquete webssh, pero también se puede ejecutar como un servicio de Guix. Este último caso de uso se encuentra documentado aquí.

Por ejemplo, para especificar un servicio que ejecute WebSSH en la interfaz de red local sobre el puerto 8888 con una política de rechazo predeterminado con una lista de máquinas a las que se les permite explícitamente la conexión, y NGINX como pasarela inversa de este servicio a la escucha de conexiones HTTPS, añada esta llamada al campo services de su declaración de sistema operativo:

(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))))))))
Tipo de datos: webssh-configuration

Tipo de datos que representa la configuración para webssh-service.

package (predeterminado: webssh)

Paquete webssh usado.

user-name (predeterminado: "webssh")

Nombre o ID de usuaria bajo la cual se efectúan las transferencias desde y hacia el módulo.

group-name (predeterminado: "webssh")

Nombre o ID de grupo que se usa cuando se accede al módulo.

address (predeterminada: #f)

Dirección IP en la que webssh espera conexiones entrantes.

port (predeterminado: 8888)

Puerto TCP en el que webssh espera conexiones entrantes.

policy (predeterminada: #f)

Política de conexión. La política reject necesita que se especifique un valor en known-hosts.

known-hosts (predeterminada: ’())

Lista de máquinas a las que se permite realizar conexiones SSH desde webssh.

log-file (predeterminado: "/var/log/webssh.log")

Name of the file where webssh writes its log file.

log-level (predeterminado: #f)

Nivel de registro.

Variable Scheme: %facebook-host-aliases

Esta variable contiene una cadena para su uso en /etc/hosts (see Host Names in The GNU C Library Reference Manual). Cada línea contiene una entrada que asocia un nombre de servidor conocido del servicio en línea Facebook—por ejemplo, www.facebook.com—a la máquina local—127.0.0.1 o su equivalente IPv6, ::1.

Esta variable habitualmente se usa en el campo hosts-file de una declaración operating-system (see /etc/hosts):

(use-modules (gnu) (guix))

(operating-system
  (host-name "micompu")
  ;; ...
  (hosts-file
    ;; Crea un archivo /etc/hosts file con alias para "localhost"
    ;; y "micompu", así como los servidores de facebook.
    (plain-file "hosts"
                (string-append (local-host-aliases host-name)
                               %facebook-host-aliases))))

Este mecanismo puede impedir a los programas que se ejecutan localmente, como navegadores Web, el acceso a Facebook.

El módulo (gnu services avahi) proporciona la siguiente definición.

Variable Scheme: avahi-service-type

Es el servicio que ejecuta avahi-daemon, un servidor mDNS/DNS-SD a nivel del sistema que permite el descubrimiento de servicios y la búsqueda de nombres de máquina “sin configuración” (“zero-configuration”, véase https://avahi.org/). Su valor debe ser un registro avahi-configuration—véase a continuación.

Este servicio extiende el daemon de la caché del servicio de nombres (nscd) de manera que pueda resolver nombres de máquina .local mediante el uso de nss-mds. See Selector de servicios de nombres, para información sobre la resolución de nombres de máquina.

De manera adicional, añade el paquete avahi al perfil del sistema de manera que ordenes como avahi-browse estén disponibles de manera directa.

Tipo de datos: avahi-configuration

Tipo de datos que representa la configuración de Avahi.

host-name (predeterminado: #f)

Si es diferente de #f, se usa como el nombre de máquina a publicar para esta máquina; en otro caso, usa el nombre actual de la máquina.

publish? (predeterminado: #t)

Cuando es verdadero, permite la publicación (retransmisión) de nombres de máquina y servicios a través de la red.

publish-workstation? (predeterminado: #t)

Cuando es verdadero, avahi-daemon publica el nombre de máquina y la dirección IP a través de mDNS en la red local. Para ver los nombres de máquina publicados en su red local, puede ejecutar:

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

Cuando es verdadero, se permite DNS-SD sobre DNS unicast.

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

Estos campos determinan si usar sockets IPv4/IPv6.

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

Esta es la lista de dominios a explorar.

Variable Scheme: openvswitch-service-type

Este es el tipo del servicio Open vSwitch, cuyo valor debe ser un objeto openvswitch-configuration.

Tipo de datos: openvswitch-configuration

Tipo de datos que representa la configuración de Open vSwitch, un switch virtual multicapa que está diseñado para permitir una automatización masiva en la red a través de extensión programática.

package (predeterminado: openvswitch)

El objeto paquete de Open vSwitch.

Variable Scheme: pagekite-service-type

El tipo de servicio para el servicio PageKite, una solución de encaminado para hacer servidores de la red local visibles públicamente, incluso detrás de cortafuegos restrictivos o NAT sin redirección de puertos. El valor para este servicio es un registro pagekite-configuration.

Este es un ejemplo que expone los daemon HTTP y SSH locales:

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

Tipo de datos que representa la configuración de PageKite.

package (predeterminado: pagekite)

El objeto paquete de PageKite.

kitename (predeterminado: #f)

Nombre de PageKite para la identificación con el servidor de fachada.

kitesecret (predeterminado: #f)

Secreto compartido para la comunicación con el servidor. Probablemente debería almacenarlo dentro extra-file en vez de aquí.

frontend (predeterminado: #f)

Conecta al servidor de fachada de PageKite con este nombre en vez de al servicio de pagekite.net.

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

List of service kites to use. Exposes HTTP on port 80 by default. The format is proto:kitename:host:port:secret.

extra-file (predeterminado: #f)

Archivo adicional de configuración que debe leerse, el cual se espera que sea creado de forma manual. Úselo para añadir opciones adicionales y gestionar secretos compartidos fuera de banda.

Scheme Variable: yggdrasil-service-type

The service type for connecting to the Yggdrasil network, an early-stage implementation of a fully end-to-end encrypted IPv6 network.

Yggdrasil provides name-independent routing with cryptographically generated addresses. Static addressing means you can keep the same address as long as you want, even if you move to a new location, or generate a new address (by generating new keys) whenever you want. https://yggdrasil-network.github.io/2018/07/28/addressing.html

Pass it a value of yggdrasil-configuration to connect it to public peers and/or local peers.

Here is an example using public peers and a static address. The static signing and encryption keys are defined in /etc/yggdrasil-private.conf (the default value for config-file).

;; part of the operating-system declaration
(service yggdrasil-service-type
              (yggdrasil-configuration
               (autoconf? #f) ;; use only the public peers
               (json-config
               ;; choose one from
               ;; https://github.com/yggdrasil-network/public-peers
                '((peers . #("tcp://1.2.3.4:1337"))))
               ;; /etc/yggdrasil-private.conf is the default value for config-file
               ))
# sample content for /etc/yggdrasil-private.conf
{
  # Your public key. Your peers may ask you for this to put
  # into their AllowedPublicKeys configuration.
  PublicKey: 64277...

  # Your private key. DO NOT share this with anyone!
  PrivateKey: 5c750...
}
Data Type: yggdrasil-configuration

Data type representing the configuration of Yggdrasil.

package (default: yggdrasil)

Package object of Yggdrasil.

json-config (default: '())

Contents of /etc/yggdrasil.conf. Will be merged with /etc/yggdrasil-private.conf. Note that these settings are stored in the Guix store, which is readable to all users. Do not store your private keys in it. See the output of yggdrasil -genconf for a quick overview of valid keys and their default values.

autoconf? (default: #f)

Whether to use automatic mode. Enabling it makes Yggdrasil use adynamic IP and peer with IPv6 neighbors.

log-level (predeterminado: 'info)

How much detail to include in logs. Use 'debug for more detail.

log-to (default: 'stdout)

Where to send logs. By default, the service logs standard output to /var/log/yggdrasil.log. The alternative is 'syslog, which sends output to the running syslog service.

config-file (default: "/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 these options:

  • EncryptionPublicKey
  • EncryptionPrivateKey
  • SigningPublicKey
  • SigningPrivateKey
Scheme Variable: ipfs-service-type

The service type for connecting to the IPFS network, a global, versioned, peer-to-peer file system. Pass it a ipfs-configuration to change the ports used for the gateway and API.

Here’s an example configuration, using some non-standard ports:

(service ipfs-service-type
         (ipfs-configuration
          (gateway "/ip4/127.0.0.1/tcp/8880")
          (api "/ip4/127.0.0.1/tcp/8881")))
Data Type: ipfs-configuration

Data type representing the configuration of IPFS.

package (default: go-ipfs)

Package object of IPFS.

gateway (default: "/ip4/127.0.0.1/tcp/8082")

Address of the gateway, in ‘multiaddress’ format.

api (default: "/ip4/127.0.0.1/tcp/5001")

Address of the API endpoint, in ‘multiaddress’ format.

Scheme Variable: keepalived-service-type

This is the type for the Keepalived routing software, keepalived. Its value must be an keepalived-configuration record as in this example for master machine:

(service keepalived-service-type
         (keepalived-configuration
           (config-file (local-file "keepalived-master.conf"))))

where 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
  }
}

and for backup machine:

(service keepalived-service-type
         (keepalived-configuration
          (config-file (local-file "keepalived-backup.conf"))))

where 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
  }
}

Next: Actualizaciones no-atendidas, Previous: Networking Setup, Up: Servicios   [Contents][Index]