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

12.9.4 Networking Setup

The (gnu services networking) module provides services to configure network interfaces and set up networking on your machine. Those services provide different ways for you to set up your machine: by declaring a static network configuration, by running a Dynamic Host Configuration Protocol (DHCP) client, or by running daemons such as NetworkManager and Connman that automate the whole process, automatically adapt to connectivity changes, and provide a high-level user interface.

On a laptop, NetworkManager and Connman are by far the most convenient options, which is why the default desktop services include NetworkManager (see %desktop-services). For a server, or for a virtual machine or a container, static network configuration or a simple DHCP client are often more appropriate.

This section describes the various network setup services available, starting with static network configuration.

Variable Scheme: static-networking-service-type

This is the type for statically-configured network interfaces. Its value must be a list of static-networking records. Each of them declares a set of addresses, routes, and links, as shown below.

Here is the simplest configuration, with only one network interface controller (NIC) and only IPv4 connectivity:

;; Static networking for one NIC, IPv4-only.
(service static-networking-service-type
         (list (static-networking
                 (list (network-address
                        (device "eno1")
                        (value ""))))
                 (list (network-route
                        (destination "default")
                        (gateway ""))))
                (name-servers '("")))))

The snippet above can be added to the services field of your operating system configuration (see Uso de la configuración del sistema). It will configure your machine to have as its IP address, with a 24-bit netmask for the local network—meaning that any 10.0.2.x address is on the local area network (LAN). Traffic to addresses outside the local network is routed via Host names are resolved by sending domain name system (DNS) queries to

Data Type: static-networking

This is the data type representing a static network configuration.

As an example, here is how you would declare the configuration of a machine with a single network interface controller (NIC) available as eno1, and with one IPv4 and one IPv6 address:

;; Network configuration for one NIC, IPv4 + IPv6.
 (addresses (list (network-address
                   (device "eno1")
                   (value ""))
                   (device "eno1")
                   (value "2001:123:4567:101::1/64"))))
 (routes (list (network-route
                (destination "default")
                (gateway ""))
                (destination "default")
                (gateway "2020:321:4567:42::1"))))
 (name-servers '("")))

If you are familiar with the ip command of the iproute2 package found on Linux-based systems, the declaration above is equivalent to typing:

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

Run man 8 ip for more info. Venerable GNU/Linux users will certainly know how to do it with ifconfig and route, but we’ll spare you that.

The available fields of this data type are as follows:

links (default: '())
routes (default: '())

The list of network-address, network-link, and network-route records for this network (see below).

name-servers (default: '())

The list of IP addresses (strings) of domain name servers. These IP addresses go to /etc/resolv.conf.

provision (default: '(networking))

If true, this should be a list of symbols for the Shepherd service corresponding to this network configuration.

requirement (default '())

The list of Shepherd services depended on.

Data Type: network-address

This is the data type representing the IP address of a network interface.


The name of the network interface for this address—e.g., "eno1".


The actual IP address and network mask, in CIDR (Classless Inter-Domain Routing) notation, as a string.

For example, "" denotes IPv4 address on a 24-bit sub-network—all 10.0.2.x addresses are on the same local network.


Whether value denotes an IPv6 address. By default this is automatically determined.

Data Type: network-route

This is the data type representing a network route.


The route destination (a string), either an IP address and network mask or "default" to denote the default route.

source (default: #f)

The route source.

device (predeterminado: #f)

The device used for this route—e.g., "eno2".

ipv6? (default: auto)

Whether this is an IPv6 route. By default this is automatically determined based on destination or gateway.

gateway (default: #f)

IP address (a string) through which traffic is routed.

Data type for a network link (see Link in Guile-Netlink Manual).


The name of the link—e.g., "v0p0".


A symbol denoting the type of the link—e.g., 'veth.


List of arguments for this type of link.

Scheme Variable: %loopback-static-networking

This is the static-networking record representing the “loopback device”, lo, for IP addresses and ::1, and providing the loopback Shepherd service.

Scheme Variable: %qemu-static-networking

This is the static-networking record representing network setup when using QEMU’s user-mode network stack on eth0 (see Using the user mode network stack in QEMU Documentation).

Variable Scheme: dhcp-client-service-type

This is the type of services that run dhcp, a Dynamic Host Configuration Protocol (DHCP) client.

Data Type: dhcp-client-configuration

Data type representing the configuration of the DHCP client service.

package (predeterminado: isc-dhcp)

DHCP client package to use.

interfaces (default: 'all)

Either 'all or the list of interface names that the DHCP client should listen on—e.g., '("eno1").

When set to 'all, the DHCP client listens on all the available non-loopback interfaces that can be activated. Otherwise the DHCP client listens only on the specified interfaces.

Variable Scheme: network-manager-service-type

Este es el tipo de servicio para el servicio NetworkManager. El valor para este tipo de servicio es un registro network-manager-configuration.

Este servicio es parte de %desktop-services (see Servicios de escritorio).

Tipo de datos: network-manager-configuration

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

network-manager (predeterminado: network-manager)

El paquete de NetworkManager usado.

dns (predeterminado: "default")

Modo de procesamiento para DNS, que afecta la manera en la que NetworkManager usa el archivo de configuración resolv.conf.


NetworkManager actualizará resolv.conf para reflejar los servidores de nombres proporcionados por las conexiones activas actualmente.


NetworkManager ejecutará dnsmasq como una caché local del servicio de nombres, mediante un reenvío condicional si se encuentra conectada a una VPN, y actualiza posteriormente resolv.conf para apuntar al servidor de nombres local.

Con esta configuración puede compartir su conexión de red. Por ejemplo, cuando desee compartir su conexión de red a otro equipo a través de un cable Ethernet, puede abrir nm-connection-editor y configurar el método de la conexión cableada para IPv4 y IPv6 “Compartida con otros equipos” y restablecer la conexión (o reiniciar).

También puede configurar una conexión anfitrión-invitado a las máquinas virtuales de QEMU (see Instalación de Guix en una máquina virtual). Con una conexión anfitrión-invitado puede, por ejemplo, acceder a un servidor web que se ejecute en la máquina virtual (see Servicios Web) desde un navegador web en su sistema anfitrión, o conectarse a la máquina virtual a través de SSH (see openssh-service-type). Para configurar una conexión anfitrión-invitado, ejecute esta orden una única vez:

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

Cada vez que arranque su máquina virtual de QEMU (see Ejecución de Guix en una máquina virtual), proporcione -nic tap,ifname=tap0,script=no,downscript=no a qemu-system-....


NetworkManager no modificará resolv.conf.

vpn-plugins (predeterminados: '())

Esta es la lista de módulos disponibles para redes privadas virtuales (VPN). Un ejemplo es el paquete network-manager-openvpn, que permite a NetworkManager la gestión de redes VPN a través de OpenVPN.

Variable Scheme: connman-service-type

Este es el tipo de servicio para la ejecución de Connman, un gestor de conexiones de red.

Su valor debe ser un registro connman-configuration como en este ejemplo:

Véase a continuación más detalles sobre connman-configuration.

Tipo de datos: connman-configuration

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

connman (predeterminado: connman)

El paquete connman usado.

disable-vpn? (predeterminado: #f)

Cuando es verdadero, desactiva el módulo vpn de connman.

Variable Scheme: wpa-supplicant-service-type

Este es el tipo de servicio para la ejecución de WPA supplicant, un daemon de identificación necesario para la identificación en redes WiFi o ethernet cifradas.

Tipo de datos: wpa-supplicant-configuration

Tipo de datos que representa la configuración de WPA Supplicant.

Toma los siguientes parámetros:

wpa-supplicant (predeterminado: wpa-supplicant)

El paquete de WPA Supplicant usado.

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

Lista de servicios que deben iniciarse antes del arranque de WPA Supplicant.

dbus? (predeterminado: #t)

Si se escuchan o no peticiones en D-Bus.

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

Dónde se almacena el archivo con el PID.

interface (predeterminado: #f)

En caso de proporcionarse un valor, debe especificar el nombre de la interfaz de red que WPA supplicant controlará.

config-file (predeterminado: #f)

Archivo de configuración opcional usado.

extra-options (predeterminadas: '())

Lista de parámetros adicionales a pasar al daemon en la línea de órdenes.

Some networking devices such as modems require special care, and this is what the services below focus on.

Variable Scheme: modem-manager-service-type

This is the service type for the ModemManager service. The value for this service type is a modem-manager-configuration record.

Este servicio es parte de %desktop-services (see Servicios de escritorio).

Tipo de datos: modem-manager-configuration

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

modem-manager (predeterminado: modem-manager)

El paquete de ModemManager usado.

Variable Scheme: usb-modeswitch-service-type

This is the service type for the USB_ModeSwitch service. The value for this service type is a usb-modeswitch-configuration record.

Cuando se conectan, algunos modem USB (y otros dispositivos USB) se presentan inicialmente como medios de almacenamiento de sólo-lectura y no como un modem. Deben cambiar de modo antes de poder usarse. El tipo de servicio USB_ModeSwitch instala reglas de udev para cambiar automáticamente de modo cuando se conecten estos dispositivos.

Este servicio es parte de %desktop-services (see Servicios de escritorio).

Tipo de datos: usb-modeswitch-configuration

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

usb-modeswitch (predeterminado: usb-modeswitch)

El paquete USB_ModeSwitch que proporciona los binarios para el cambio de modo.

usb-modeswitch-data (predeterminado: usb-modeswitch-data)

El paquete que proporciona los datos de dispositivos y las reglas de udev usadas por USB_ModeSwitch.

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

Archivo de configuración usado para el gestor de eventos (dispatcher) de USB_ModeSwitch. De manera predeterminada se usa el archivo que viene con USB_ModeSwitch, que deshabilita el registro en /var/log junto a otras configuraciones. Si se proporciona #f no se usa ningún archivo de configuración.

Next: Servicios de red, Previous: Rotación del registro de mensajes, Up: Servicios   [Contents][Index]