Configuration du réseau

Ubuntu est fournie avec de nombreux utilitaires graphiques pour la configuration des périphériques réseau. Ce document s'adresse aux administrateurs de serveurs et se focalisera sur la gestion de votre réseau en ligne de commande.

Interfaces Ethernet

Le système identifie les interfaces Ethernet à l'aide de la convention ethX, la valeur X étant un chiffre. La première interface Ethernet porte le nom eth0, la deuxième porte le nom eth1, et ainsi de suite.

Repérer les interfaces Ethernet

Pour repérer rapidement toutes les interfaces Ethernet disponibles, vous pouvez utilisez la commande ifconfig comme indiqué ci-après.

ifconfig -a | grep eth
eth0      Link encap:Ethernet  HWaddr 00:15:c5:4a:16:5a

Une autre application capable d'identifier toutes les interfaces réseau disponibles sur votre système est la commande lshw. Dans l'exemple ci-dessous, lshw affiche une seule interface Ethernet avec le nom logique eth0 suivi de plusieurs détails sur le bus, le pilote et les fonctionnalités prises en charge.

sudo lshw -class network
  *-network
       description: Ethernet interface
       product: BCM4401-B0 100Base-TX
       vendor: Broadcom Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: eth0
       version: 02
       serial: 00:15:c5:4a:16:5a
       size: 10MB/s
       capacity: 100MB/s
       width: 32 bits
       clock: 33MHz
       capabilities: (snipped for brevity)
       configuration: (snipped for brevity)
       resources: irq:17 memory:ef9fe000-ef9fffff

Noms logiques de l'interface Ethernet

La configuration des noms logiques des interfaces s'effectue à l'aide du fichier /etc/udev/rules.d/70-persistent-net.rules. Si vous voulez attribuer un nom logique particulier à une certaine interface, trouvez la ligne correspondant à son adresse MAC physique et modifiez la valeur de NAME=ethX afin de lui donner le nom logique désiré. Redémarrez le système pour appliquer les changements.

Paramètres de l'interface Ethernet

ethtool est une application qui permet d'afficher et de changer les paramètres de la carte Ethernet comme l'auto-négociation, la vitesse des ports, le mode duplex et le « Wake-on-LAN ». Elle n'est pas installée par défaut, mais elle est disponible à l'installation dans les dépôts.

sudo apt install ethtool

Ce qui suit est un exemple de la façon de voir les fonctions prises en charge et les paramètres configurés d'une interface Ethernet.

sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000000ff (255)
        Link detected: yes

Les modifications effectuées avec la commande ethtool sont temporaires et seront perdues au prochain redémarrage. Si vous souhaitez conserver ces paramètres, ajoutez simplement la commande ethtool sur une ligne pre-up du fichier de configuration de l'interface /etc/network/interfaces.

Vous trouverez ci-après la manière dont l'interface, identifiée comme eth0, peut être configurée de manière permanente avec une vitesse de port égale à 1000Mb/s en mode full duplex.

auto eth0
iface eth0 inet static
pre-up /sbin/ethtool -s eth0 speed 1000 duplex full

Bien que l'exemple ci-dessus montre l’interface configurée utilisant la méthode statique, cela fonctionne également avec les autres méthodes, comme DHCP. L'exemple a uniquement pour but de démontrer le placement approprié de l'élément pre-up en relation avec le reste de la configuration d'interface.

Adressage IP

La section qui suit décrit le processus de configuration de l'adresse IP et de la passerelle par défaut de votre système afin de le connecter à un réseau local et à Internet.

Assignation d'une adresse IP temporaire

Pour les configurations réseau temporaires, vous pouvez utiliser les commandes standard telles que ip, ifconfig et route, qui sont également présentes sur la plupart des systèmes d'exploitation GNU/Linux. Elles vous permettront de configurer les paramètres de façon à ce que les changements s'appliquent immédiatement, mais ces derniers seront perdus après un redémarrage.

Pour configurer temporairement une adresse IP, vous pouvez utiliser la commande ifconfig de la manière suivante. Modifiez simplement l'adresse IP et le masque de sous-réseau en fonction des besoins de votre réseau.

sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0

Afin de vérifier la configuration d'adresse IP de eth0, vous pouvez utiliser la commande ifconfig de la manière suivante.

ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:15:c5:4a:16:5a  
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0
          TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2574778386 (2.5 GB)  TX bytes:1618367329 (1.6 GB)
          Interrupt:16 

Afin de configurer une passerelle par défaut, vous pouvez utiliser la commande route. Modifiez l'adresse de la passerelle par défaut en fonction de vos pré-requis réseau.

sudo route add default gw 10.0.0.1 eth0

Afin de vérifier la configuration de votre passerelle par défaut, vous pouvez utiliser la commande route de la manière suivante.

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

If you require DNS for your temporary network configuration, you can add DNS server IP addresses in the file /etc/resolv.conf. In general, editing /etc/resolv.conf directly is not recommanded, but this is a temporary and non-persistent configuration. The example below shows how to enter two DNS servers to /etc/resolv.conf, which should be changed to servers appropriate for your network. A more lengthy description of the proper persistent way to do DNS client configuration is in a following section.

nameserver 8.8.8.8
nameserver 8.8.4.4

Si vous n'avez plus besoin de cette configuration et que vous souhaitez supprimer toutes les configurations d'IP d'une interface, vous pouvez utiliser la commande ip avec l'option de purge comme indiqué ci-dessous.

ip addr flush eth0

Le nettoyage de la configuration IP en utilisant la commande ip n'efface pas les contenus de /etc/resolv.conf. Vous devez supprimer ou modifier ces entrées manuellement, ou redémarrer, ce qui devrait faire également que /etc/resolv.conf, qui est en fait maintenant un lien symbolique vers /run/resolvconf/resolv.conf, sera réécrit.

Attribution dynamique d'adresse IP (client DHCP)

Afin de configurer votre serveur pour qu'il utilise DHCP pour l’attribution dynamique d'adresse, ajoutez la méthode dhcp à la condition de famille d'adresse inet pour l'interface appropriée dans le fichier /etc/network/interfaces. L'exemple ci-dessous suppose que vous configurez votre première interface Ethernet identifiée comme eth0.

auto eth0
iface eth0 inet dhcp

En ajoutant une configuration d'interface comme démontré ci-dessus, vous pouvez activer manuellement l'interface grâce à la commande ifup qui amorce le processus DHCP via dhclient.

sudo ifup eth0

Afin de désactiver manuellement l'interface, vous pouvez utiliser la commande ifdown, qui vous permettra d'amorcer l'annulation du processus DHCP et l'extinction de l'interface.

sudo ifdown eth0

Attribution statique d'adresse IP

Afin de configurer votre système pour utiliser l'attribution statique d'adresse IP, ajoutez la méthode static à la condition de famille d'adresse inet pour l'interface appropriée dans le fichier /etc/network/interfaces. L'exemple ci-dessous suppose que vous configurez votre première interface Ethernet identifiée comme eth0. Modifiez l'adresse, le masque réseau, et la passerelle en fonction des pré-requis de votre réseau.

auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1

En ajoutant une configuration d'interface comme démontré ci-dessus, vous pouvez activer manuellement une interface grâce à la commande ifup.

sudo ifup eth0

Pour désactiver manuellement l'interface, vous pouvez utiliser la commande ifdown.

sudo ifdown eth0

Interface loopback

L'interface de boucle locale est identifiée par le système par lo, et possède l'adresse IP par défaut « 127.0.0.1 ». Elle est visible via la commande ifconfig.

ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2718 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:183308 (183.3 KB)  TX bytes:183308 (183.3 KB)

Par défaut, il devrait y avoir deux lignes dans /etc/network/interfaces responsables de la configuration automatique de votre interface de boucle locale. Il est recommandé de conserver les paramètres par défaut, sauf si vous avez une raison spécifique de les modifier. un exemple des deux lignes par défaut est montré ci-dessous.

auto lo
iface lo inet loopback

Résolution de noms

La résolution de noms dans le domaine des réseaux IP est le processus de cartographie d'adresses IP en noms d'hôtes, facilitant l’identification des ressources sur un réseau. La section suivante expliquera comment configurer correctement votre système pour la résolution de noms en utilisant les enregistrements de noms d'hôte DNS et statiques.

Configuration de client DNS

Traditionally, the file /etc/resolv.conf was a static configuration file that rarely needed to be changed or automatically changed via DCHP client hooks. Nowadays, a computer can switch from one network to another quite often and the resolvconf framework is now being used to track these changes and update the resolver's configuration automatically. It acts as an intermediary between programs that supply nameserver information and applications that need nameserver information. Resolvconf gets populated with information by a set of hook scripts related to network interface configuration. The most notable difference for the user is that any change manually done to /etc/resolv.conf will be lost as it gets overwritten each time something triggers resolvconf. Instead, resolvconf uses DHCP client hooks, and /etc/network/interfaces to generate a list of nameservers and domains to put in /etc/resolv.conf, which is now a symlink:

/etc/resolv.conf -> ../run/resolvconf/resolv.conf
To configure the resolver, add the IP addresses of the nameservers that are appropriate for your network in the file /etc/network/interfaces. You can also add an optional DNS suffix search-lists to match your network domain names. For each other valid resolv.conf configuration option, you can include, in the stanza, one line beginning with that option name with a dns- prefix. The resulting file might look like the following:

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

L'option de recherche peut également être utilisée avec plusieurs noms de domaine, de cette façon, les requêtes DNS seront ajoutées dans l'ordre dans lequel elles sont saisies. Par exemple, votre réseau peut avoir plusieurs sous-domaines à rechercher ; un domaine parent de example.com, et deux sous-domaines, sales.example.com et dev.example.com.

Si vous souhaitez rechercher plusieurs domaines, votre configuration pourrait ressembler à ce qui suit :

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com ventes.example.com dev.example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Si vous effectuez un ping sur l'hôte ayant le nom du server1, votre système interrogera automatiquement le DNS afin d'obtenir son nom de domaine complètement qualifié (FQDN) dans l'ordre suivant :

  1. server1.exemple.com

  2. server1.ventes.exemple.com

  3. server1.dev.exemple.com

Si aucun résultat n'est trouvé, le serveur DNS fournira un résultat de notfound, et la requête DNS échouera.

Noms d'hôte statiques

Les noms d'hôte statiques sont des cartographies noms d'hôte-à-IP définies localement et situés dans le fichier /etc/hosts. Les entrées du fichier hosts ont par défaut priorité sur le DNS. Cela signifie que si votre système essaye de résoudre un nom d'hôte et qu'il correspond à une entrée de /etc/hosts, il ne tentera pas de trouver un enregistrement dans le DNS. Dans certaines configurations, particulièrement lorsque l'accès Internet n'est pas requis, les serveurs communiquant avec un nombre limité de ressources peuvent être paramétrés avec commodité afin d'utiliser des noms d'hôtes statiques au lieu du DNS.

Ce qui suit est un exemple de fichier hosts où un nombre de serveurs locaux ont été identifiés par de simples noms d'hôtes, alias et leurs noms de domaine complètement qualifiés équivalents (FQDN).

127.0.0.1	hôte_local
127.0.1.1	serveur-ubuntu
10.0.0.11	serveur1 serveur1.exemple.com vpn
10.0.0.12	serveur2 serveur2.exemple.com mél
10.0.0.13	serveur3 serveur3.exemple.com www
10.0.0.14	serveur4 serveur4.exemple.com fichier

Dans l'exemple ci-dessus, notez que chaque serveur a reçu un alias en complément de son nom propre et FQDN. Le Serveur1 a été défini par vpn, tandis que le serveur2 est défini par mail, le serveur3 par www, et le serveur4 par file.

Configuration du service de changement de nom

L'ordre dans lequel votre système sélectionne la méthode de résolution des noms d'hôtes en adresses IP est contrôlé par le fichier de configuration du service de changement de nom (NSS) /etc/nsswitch.conf. Comme mentionné dans la section précédente, les noms d'hôtes statiques définis dans le fichier système /etc/hosts ont l'ascendant sur les noms résolus par le DNS. Suivant, un exemple de la ligne responsable de cet ordre de recherche de noms d'hôtes dans le fichier /etc/nsswitch.conf.

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
  • files essaie en premier lieu de résoudre les noms d'hôtes statiques situés dans le fichier /etc/hosts.

  • mdns4_minimal tente de résoudre le nom utilisant la multidiffusion DNS.

  • [NOTFOUND=return] signifie que n'importe quelle réponse de notfound par le processus précédent mdns4_minimal devrait être considérée comme autorité et que le système devrait arrêter de chercher une réponse.

  • dns représente une requête legacy monodiffusion DNS.

  • mdns4 représente une requête multidiffusion DNS.

Afin de modifier l'ordre de la méthode de résolution de noms mentionnée ci-dessus, vous pouvez simplement modifier la ligne hosts: par la valeur de votre choix. Par exemple, si vous préférez utiliser la mono-diffusion legacy DNS plutôt que la multidiffusion DNS, vous pouvez modifier /etc/nsswitch.conf comme expliqué ci-dessous.

hosts:          files dns [NOTFOUND=return] mdns4_minimal mdns4

Pont réseau

Ponter plusieurs interfaces est une configuration plus élaborée, mais elle est très utile dans beaucoup de cas. Un premier scénario est de créer un pont avec plusieurs interfaces réseaux, puis d'utiliser un pare-feu pour filtrer le trafic entre les deux segments de réseau. Un autre scénario est d'utiliser un pont sur un système avec une seule interface pour autoriser plusieurs machines virtuelles à accéder au réseau extérieur. L'exemple suivant couvre ce dernier scénario.

Avant de configurer un pont, vous devez installer le paquet bridge-utils. Pour l'installer, tapez dans un terminal :

sudo apt install bridge-utils

Ensuite, configurez le pont en modifiant /etc/network/interfaces :

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

Saisissez les valeurs appropriées pour votre réseau et votre interface physique.

Now bring up the bridge:

sudo ifup br0

La nouvelle interface de pont doit maintenant être active et fonctionnelle. L'application brctl fournit des informations utiles à propos de l'état du pont ; contrôle quelle interface fait partie du pont ; etc. Consultez man brctl pour plus d'informations.

Ressources