Suivant: , Précédent: , Monter: Services   [Table des matières][Index]


11.10.4 Configuration du réseau

Le module (gnu services networking) fournit des services pour configurer les interfaces réseau et paramétrer le réseau sur votre machine. Ces services fournissent différentes manière pour paramétrer votre machine : en déclarant une configuration réseau statique, en lançant un client DHCP (Dynamic Host Configuration Protocol) ou en lançant des démon comme NetworkManager et Connman qui automatisent le processus complet, en s’adaptant automatiquement aux changements de connectivité et en fournissant une interface utilisateur de haut niveau.

Sur un portable, NetworkManager et Connman sont de loin les options les plus pratiques, ce qui explique que les services de bureau par défaut incluent NetworkManager voir %desktop-services). Pour un serveur, une machine virtuelle ou un conteneur, la configuration réseau statique ou un simple client DHCP sont plus souvent mieux appropriés.

Cette section décrit les divers services de paramétrage réseau existants, en commençant par le configuration réseau statique.

Variable :static-networking-service-type

C’est le type pour les interfaces réseaux configurées statiquement. Sa valeur doit être une liste d’enregistrements static-networking. Chacun déclare un ensemble d’adresses, de routes et de liens, comme indiqué plus bas.

Voici la plus simple des configurations, avec un seul contrôleur d’interface réseau (NIC) et une seule connectivité IPv4 :

;; Réseau statique pour un NIC, IPv4 uniquement.
(service static-networking-service-type
         (list (static-networking
                (addresses
                 (list (network-address
                        (device "eno1")
                        (value "10.0.2.15/24"))))
                (routes
                 (list (network-route
                        (destination "default")
                        (gateway "10.0.2.2"))))
                (name-servers '("10.0.2.3")))))

Le bout de code ci-dessus peut être ajouté au champ services de votre configuration du système d’exploitation (voir Utiliser le système de configuration). Il configurera votre machine pour avoir l’adresse IP 10.0.2.15, avec un masque de sous-réseau de 24 bits pour le réseau local — cela signifie que toutes les adresse 10.0.2.x sont sur le réseau local (LAN). Le trafic à destination d’adresses extérieures au réseau local est routé via 10.0.2.2. Les noms d’hôte sont résolus en envoyant des requêtes au système de nom de domaine (DNS) à 10.0.2.3.

Type de données :static-networking

C’est le type de données représentant la configuration d’un réseau statique.

Voici un exemple de la manière dont vous pouvez déclarer la configuration sur une machine avec un seul contrôleur d’interface réseau (NIC) disponible sous le nom eno1 et avec une adresse IPv4 et une adresse IPv6 :

;; Configuration réseau pour un NIC, IPv4 + IPv6.
(static-networking
 (addresses (list (network-address
                   (device "eno1")
                   (value "10.0.2.15/24"))
                  (network-address
                   (device "eno1")
                   (value "2001:123:4567:101::1/64"))))
 (routes (list (network-route
                (destination "default")
                (gateway "10.0.2.2"))
               (network-route
                (destination "default")
                (gateway "2020:321:4567:42::1"))))
 (name-servers '("10.0.2.3")))

Si vous connaissez la commande ip du paquet iproute2 qui se trouve sur les systèmes Linux, la déclaration ci-dessus est équivalente à exécuter :

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

Exécutez man 8 ip pour plus d’informations. Les utilisateurs et utilisatrices vétérans de GNU/Linux sauront sans doute comment le faire avec ifconfig et route, mais nous vous épargnons cela.

Les champs disponibles pour ce type de données sont les suivants :

addresses
links (par défaut : '())
routes (par défaut : '())

La liste de enregistrements network-address, network-link et network-route pour ce réseau (voir plus bas).

name-servers (par défaut : '())

La liste des adresses IP (chaines) des serveurs de nom de domaine. Ces adresses IP vont dans /etc/resolv.conf.

provision (par défaut : '(networking))

Si la valeur est vraie, cela devrait être une liste de symboles pour le service Shepherd correspondant à cette configuration réseau.

requirement (par défaut : '())

La liste des services Shepherd dont celui-ci dépend.

Type de données :network-address

C’est le type de données représentant l’adresse IP d’une interface réseau.

device

Le nom de l’interface réseau pour cette adresse — p. ex. "eno1".

value

L’adresse IP effective et le masque de sous-réseau en notation CIDR (Classless Inter-Domain Routing), en tant que chaine de caractères.

Par exemple, "10.0.2.15/24" dénote l’adresse IPv4 10 0 2 15 sur un sous-réseau de 24 bits — toutes les adresses 10.0.2.x sont sur le même réseau local.

ipv6?

Indique si value dénote une adresse IPv6. Par défaut cela est déterminé automatiquement.

Type de données :network-route

C’est le type de donnée représentant une route réseau.

destination

La destination de la route (une chaine), soit une adresse IP et un masque de sous-réseau, soit "default" qui dénote la route par défaut.

source (par défaut : #f)

Le source de la route.

device (par défaut : #f)

Le périphérique utilisé pour la route — p. ex. "eno2".

ipv6? (par défaut : auto)

Indique si c’est une route IPv6. Par défaut cela est déterminé automatiquement en fonction de destination ou de gateway.

gateway (par défaut : #f)

Adresse IP (une chaine) à travers laquelle le trafic est routé.

Data type for a network link (voir Link dans Guile-Netlink Manual). During startup, network links are employed to construct or modify existing or virtual ethernet links. These ethernet links can be identified by their name or mac-address. If there is a need to create virtual interface, name and type fields are required.

name

The name of the link—e.g., "v0p0" (default: #f).

type

A symbol denoting the type of the link—e.g., 'veth (default: #f).

mac-address

The mac-address of the link—e.g., "98:11:22:33:44:55" (default: #f).

arguments

La liste des arguments pour ce type de lien.

Consider a scenario where a server equipped with a network interface which has multiple ports. These ports are connected to a switch, which supports link aggregation (also known as bonding or NIC teaming). The switch uses port channels to consolidate multiple physical interfaces into one logical interface to provide higher bandwidth, load balancing, and link redundancy. When a port is added to a LAG (or link aggregation group), it inherits the properties of the port-channel. Some of these properties are VLAN membership, trunk status, and so on.

VLAN (or virtual local area network) is a logical network that is isolated from other VLANs on the same physical network. This can be used to segregate traffic, improve security, and simplify network management.

With all that in mind let’s configure our static network for the server. We will bond two existing interfaces together using 802.3ad schema and on top of it, build a VLAN interface with id 1055. We assign a static ip to our new VLAN interface.

(static-networking
 (links (list (network-link
               (name "bond0")
               (type 'bond)
               (arguments '((mode . "802.3ad")
                            (miimon . 100)
                            (lacp-active . "on")
                            (lacp-rate . "fast"))))

              (network-link
               (mac-address "98:11:22:33:44:55")
               (arguments '((master . "bond0"))))

              (network-link
               (mac-address "98:11:22:33:44:56")
               (arguments '((master . "bond0"))))

              (network-link
               (name "bond0.1055")
               (type 'vlan)
               (arguments '((id . 1055)
                            (link . "bond0"))))))
 (addresses (list (network-address
                   (value "192.168.1.4/24")
                   (device "bond0.1055")))))
Variable :%loopback-static-networking

C’est l’enregistrement static-networking qui représente le « périphérique de rebouclage », lo, pour les adresses IP 127.0.0.1 et ::1, et qui fournit le service Shepherd loopback.

Variable :%qemu-static-networking

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

Variable :dhcp-client-service-type

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

Type de données :dhcp-client-configuration

Data type representing the configuration of the ISC DHCP client service.

package (par défaut : isc-dhcp)

The ISC DHCP client package to use.

interfaces (par défaut : 'all)

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

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

config-file (par défaut : #f)

The configuration file for the ISC DHCP client.

version (par défaut : "4")

The DHCP protocol version to use, as a string. Accepted values are "4" or "6" for DHCPv4 or DHCPv6, respectively, as well as "4o6", for DHCPv4 over DHCPv6 (as specified by RFC 7341).

rshepherd-equirement (par défaut : '())
shepherd-provision (default: '(networking))

This option can be used to provide a list of symbols naming Shepherd services that this service will depend on, such as 'wpa-supplicant or 'iwd if you require authenticated access for encrypted WiFi or Ethernet networks.

Likewise, shepherd-provision is a list of Shepherd service names (symbols) provided by this service. You might want to change the default value if you intend to run several ISC DHCP clients, only one of which provides the networking Shepherd service.

Variable :network-manager-service-type

C’est le type de service pour le service NetworkManager. La valeur pour ce type de service est un enregistrement network-manager-configuration.

Ce service fait partie de %desktop-services (voir Services de bureaux).

Type de données :network-manager-configuration

Type de données représentant la configuration de NetworkManager.

network-manager (par défaut : network-manager)

Le paquet NetworkManager à utiliser.

shepherd-requirement (default: '(wpa-supplicant))

This option can be used to provide a list of symbols naming Shepherd services that this service will depend on, such as 'wpa-supplicant or 'iwd if you require authenticated access for encrypted WiFi or Ethernet networks.

dns (par défaut : "default")

Mode de gestion pour le DNS, qui affecte la manière dont NetworkManager utilise le fichier de configuration resolv.conf.

default

NetworkManager mettra à jour resolv.conf pour refléter les serveurs de noms fournis par les connexions actives.

dnsmasq

NetworkManager exécutera dnsmasq comme un serveur de noms local en cache, en utilisant une configuration transfert conditionnel si vous êtes connecté à un VPN, puis mettra à jour resolv.conf pour pointer vers le serveur de noms local.

Avec ce paramètre, vous pouvez partager votre connexion réseau. Par exemple, lorsque vous souhaitez partager votre connexion réseau avec un autre ordinateur portable via un câble Ethernet, vous pouvez ouvrir nm-connection-editor et configurer la méthode de connexion câblée pour IPv4 et IPv6 de manière à ce qu’elle soit "partagée avec d’autres ordinateurs" et à ce que la connexion soit rétablie (ou redémarrée).

Vous pouvez également établir une connexion hôte-invité aux VM QEMU (voir Installer Guix sur une machine virtuelle). Avec une connexion d’hôte à invité, vous pouvez par exemple  : accéder à un serveur Web fonctionnant sur la VM (voir Services web) à partir d’un navigateur Web sur votre système hôte, ou vous connecter à la VM via SSH (voir openssh-service-type). Pour établir une connexion entre hôtes, exécutez cette commande une fois :

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

Ensuite, chaque fois que vous lancez votre VM QEMU (voir Exécuter Guix sur une machine virtuelle), passez -nic tap,ifname=tap0,script=no,downscript=no à qemu-system-....

none

NetworkManager ne modifiera pas resolv.conf.

vpn-plugins (par défaut : '())

C’est la liste des greffons disponibles pour les VPN (réseaux privés virtuels). Un exemple est le paquet network-manager-openvpn, qui permet à NetworkManager de gérer des VPN via OpenVPN.

Variable :connman-service-type

C’est le type de service pour lancer Connman, un gestionnaire de connexions réseaux.

Sa valeur doit être un enregistrement connman-configuration comme dans cet exemple :

Voir plus bas pour des détails sur connman-configuration.

Type de données :connman-configuration

Type de données représentant la configuration de connman.

connman (par défaut : connman)

Le paquet connman à utiliser.

rshepherd-equirement (par défaut : '())

This option can be used to provide a list of symbols naming Shepherd services that this service will depend on, such as 'wpa-supplicant or 'iwd if you require authenticated access for encrypted WiFi or Ethernet networks.

disable-vpn? (par défaut : #f)

Lorsque la valeur est vraie, désactive le greffon vpn de connman.

general-configuration (default: (connman-general-configuration))

Configuration serialized to main.conf and passed as --config to connmand.

Data Type :connman-general-configuration

Available connman-general-configuration fields are:

input-request-timeout (type: maybe-number)

Set input request timeout. Default is 120 seconds. The request for inputs like passphrase will timeout after certain amount of time. Use this setting to increase the value in case of different user interface designs.

browser-launch-timeout (type: maybe-number)

Set browser launch timeout. Default is 300 seconds. The request for launching a browser for portal pages will timeout after certain amount of time. Use this setting to increase the value in case of different user interface designs.

background-scanning? (type: maybe-boolean)

Enable background scanning. Default is true. If wifi is disconnected, the background scanning will follow a simple back off mechanism from 3s up to 5 minutes. Then, it will stay in 5 minutes unless user specifically asks for scanning through a D-Bus call. If so, the mechanism will start again from 3s. This feature activates also the background scanning while being connected, which is required for roaming on wifi. When background-scanning? is false, ConnMan will not perform any scan regardless of wifi is connected or not, unless it is requested by the user through a D-Bus call.

use-gateways-as-timeservers? (type: maybe-boolean)

Assume that service gateways also function as timeservers. Default is false.

fallback-timeservers (type: maybe-list)

List of Fallback timeservers. These timeservers are used for NTP sync when there are no timeservers set by the user or by the service, and when use-gateways-as-timeservers? is #f. These can contain a mixed combination of fully qualified domain names, IPv4 and IPv6 addresses.

fallback-nameservers (type: maybe-list)

List of fallback nameservers appended to the list of nameservers given by the service. The nameserver entries must be in numeric format, host names are ignored.

default-auto-connect-technologies (type: maybe-list)

List of technologies that are marked autoconnectable by default. The default value for this entry when empty is "ethernet", "wifi", "cellular". Services that are automatically connected must have been set up and saved to storage beforehand.

default-favourite-technologies (type: maybe-list)

List of technologies that are marked favorite by default. The default value for this entry when empty is "ethernet". Connects to services from this technology even if not setup and saved to storage.

always-connected-technologies (type: maybe-list)

List of technologies which are always connected regardless of preferred-technologies setting (auto-connect? #t). The default value is empty and this feature is disabled unless explicitly enabled.

preferred-technologies (type: maybe-list)

List of preferred technologies from the most preferred one to the least preferred one. Services of the listed technology type will be tried one by one in the order given, until one of them gets connected or they are all tried. A service of a preferred technology type in state ’ready’ will get the default route when compared to another preferred type further down the list with state ’ready’ or with a non-preferred type; a service of a preferred technology type in state ’online’ will get the default route when compared to either a non-preferred type or a preferred type further down in the list.

network-interface-blacklist (type: maybe-list)

List of blacklisted network interfaces. Found interfaces will be compared to the list and will not be handled by ConnMan, if their first characters match any of the list entries. Default value is "vmnet", "vboxnet", "virbr", "ifb".

allow-hostname-updates? (type: maybe-boolean)

Allow ConnMan to change the system hostname. This can happen for example if we receive DHCP hostname option. Default value is #t.

allow-domainname-updates? (type: maybe-boolean)

Allow connman to change the system domainname. This can happen for example if we receive DHCP domainname option. Default value is #t.

single-connected-technology? (type: maybe-boolean)

Keep only a single connected technology at any time. When a new service is connected by the user or a better one is found according to preferred-technologies, the new service is kept connected and all the other previously connected services are disconnected. With this setting it does not matter whether the previously connected services are in ’online’ or ’ready’ states, the newly connected service is the only one that will be kept connected. A service connected by the user will be used until going out of network coverage. With this setting enabled applications will notice more network breaks than normal. Note this options can’t be used with VPNs. Default value is #f.

tethering-technologies (type: maybe-list)

List of technologies that are allowed to enable tethering. The default value is "wifi", "bluetooth", "gadget". Only those technologies listed here are used for tethering. If one wants to tether ethernet, then add "ethernet" in the list. Note that if ethernet tethering is enabled, then a DHCP server is started on all ethernet interfaces. Tethered ethernet should never be connected to corporate or home network as it will disrupt normal operation of these networks. Due to this ethernet is not tethered by default. Do not activate ethernet tethering unless you really know what you are doing.

persistent-tethering-mode? (type: maybe-boolean)

Restore earlier tethering status when returning from offline mode, re-enabling a technology, and after restarts and reboots. Default value is #f.

enable-6to4? (type: maybe-boolean)

Automatically enable anycast 6to4 if possible. This is not recommended, as the use of 6to4 will generally lead to a severe degradation of connection quality. See RFC6343. Default value is #f (as recommended by RFC6343 section 4.1).

vendor-class-id (type: maybe-string)

Set DHCP option 60 (Vendor Class ID) to the given string. This option can be used by DHCP servers to identify specific clients without having to rely on MAC address ranges, etc.

enable-online-check? (type: maybe-boolean)

Enable or disable use of HTTP GET as an online status check. When a service is in a READY state, and is selected as default, ConnMan will issue an HTTP GET request to verify that end-to-end connectivity is successful. Only then the service will be transitioned to ONLINE state. If this setting is false, the default service will remain in READY state. Default value is #t.

online-check-ipv4-url (type: maybe-string)

IPv4 URL used during the online status check. Please refer to the README for more detailed information. Default value is http://ipv4.connman.net/online/status.html.

online-check-ipv6-url (type: maybe-string)

IPv6 URL used during the online status check. Please refer to the README for more detailed information. Default value is http://ipv6.connman.net/online/status.html.

online-check-initial-interval (type: maybe-number)

Range of intervals between two online check requests. Please refer to the README for more detailed information. Default value is ‘1’.

online-check-max-interval (type: maybe-number)

Range of intervals between two online check requests. Please refer to the README for more detailed information. Default value is ‘1’.

enable-online-to-ready-transition? (type: maybe-boolean)

WARNING: This is an experimental feature. In addition to enable-online-check setting, enable or disable use of HTTP GET to detect the loss of end-to-end connectivity. If this setting is #f, when the default service transitions to ONLINE state, the HTTP GET request is no more called until next cycle, initiated by a transition of the default service to DISCONNECT state. If this setting is #t, the HTTP GET request keeps being called to guarantee that end-to-end connectivity is still successful. If not, the default service will transition to READY state, enabling another service to become the default one, in replacement. Default value is #f.

auto-connect-roaming-services? (type: maybe-boolean)

Automatically connect roaming services. This is not recommended unless you know you won’t have any billing problem. Default value is #f.

address-conflict-detection? (type: maybe-boolean)

Enable or disable the implementation of IPv4 address conflict detection according to RFC5227. ConnMan will send probe ARP packets to see if an IPv4 address is already in use before assigning the address to an interface. If an address conflict occurs for a statically configured address, an IPv4LL address will be chosen instead (according to RFC3927). If an address conflict occurs for an address offered via DHCP, ConnMan sends a DHCP DECLINE once and for the second conflict resorts to finding an IPv4LL address. Default value is #f.

localtime (type: maybe-string)

Path to localtime file. Defaults to /etc/localtime.

regulatory-domain-follows-timezone? (type: maybe-boolean)

Enable regulatory domain to be changed along timezone changes. With this option set to true each time the timezone changes the first present ISO3166 country code is read from /usr/share/zoneinfo/zone1970.tab and set as regulatory domain value. Default value is #f.

resolv-conf (type: maybe-string)

Path to resolv.conf file. If the file does not exist, but intermediate directories exist, it will be created. If this option is not set, it tries to write into /var/run/connman/resolv.conf if it fails (/var/run/connman does not exist or is not writeable). If you do not want to update resolv.conf, you can set /dev/null.

Variable :wpa-supplicant-service-type

C’est le type du service qui lanceWPA supplicant, un démon d’authentification requis pour s’authentifier sur des WiFi chiffrés ou des réseaux ethernet.

Type de données :wpa-supplicant-configuration

Type données qui représente la configuration de WPA Supplicant.

Il prend les paramètres suivants :

wpa-supplicant (par défaut : wpa-supplicant)

Le paquet WPA Supplicant à utiliser.

requirement (par défaut : '(user-processes loopback syslogd)

Liste des services qui doivent être démarrés avant le début de WPA Supplicant.

dbus? (par défaut : #t)

Indique s’il faut écouter les requêtes sur D-Bus.

pid-file (par défaut : "/var/run/wpa_supplicant.pid")

Où stocker votre fichier de PID.

interface (par défaut : #f)

Si une valeur est indiquée, elle doit spécifier le nom d’une interface réseau que WPA supplicant contrôlera.

config-file (par défaut : #f)

Fichier de configuration facultatif à utiliser.

extra-options (par défaut : '())

Liste d’arguments de la ligne de commande supplémentaires à passer au démon.

Certains périphériques réseau comme les modems ont des besoins spécifiques et c’est ce dont s’occupe les services suivants.

Variable :modem-manager-service-type

C’est le type de service pour le service ModemManager. La valeur de ce type de service est un enregistrement modem-manager-configuration.

Ce service fait partie de %desktop-services (voir Services de bureaux).

Type de données :modem-manager-configuration

Type de donnée représentant la configuration de ModemManager.

modem-manager (par défaut : modem-manager)

Le paquet ModemManager à utiliser.

Variable :usb-modeswitch-service-type

C’est le type de service pour le service USB_ModeSwitch. La valeur pour ce type de service est un enregistrement usb-modeswitch-configuration.

Lorsqu’ils sont branchés, certains modems USB (et autres dispositifs USB) se présentent initialement comme un support de stockage en lecture seule et non comme un modem. Ils doivent être modeswitched avant d’être utilisables. Le service de type USB_ModeSwitch installe des règles udev pour commuter automatiquement les modes de ces dispositifs lorsqu’ils sont branchés.

Ce service fait partie de %desktop-services (voir Services de bureaux).

Type de donnée :openvswitch-configuration

Type de données représentant la configuration du USB_ModeSwitch.

usb-modeswitch (par défaut : usb-modeswitch)

Le paquet USB_ModeSwitch fournit les binaires pour la commutation de modes.

usb-modeswitch-data (par défaut : usb-modeswitch-data)

Le paquet fournissant les données du dispositif et le fichier de règles udev utilisé par USB_ModeSwitch.

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

Le fichier de configuration à utiliser pour le répartiteur USB_ModeSwitch. Par défaut, le fichier de configuration livré avec USB_ModeSwitch est utilisé, ce qui désactive la connexion au /var/log parmi d’autres paramètres par défaut. S’il est défini sur #f, aucun fichier de configuration n’est utilisé.


Suivant: Services réseau, Précédent: Rotation des journaux, Monter: Services   [Table des matières][Index]