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
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 :
-
server1.exemple.com
-
server1.ventes.exemple.com
-
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
-
La page réseau du wiki Ubuntu contient des liens vers des articles traitant de la configuration avancée de réseaux.
-
La page de manuel pour resolvconf contient plus d'informations sur resolvconf.
-
La page de manuel sur la configuration des interfaces réseau contient des détails sur d'autres options pour /etc/network/interfaces.
-
La page de manuel dhclient contient des détails sur d'autres options pour configurer les clients DHCP.
-
Pour plus d'informations sur la configuration des clients DNS voir la page de manuel resolver. En outre, le chapitre 6 du guide d'administration des réseaux Linux de O'Reilly est une bonne source d'informations sur la configuration de resolver et du nom des services.
-
Pour plus d'informations sur le pontage, voir la page de manuel brctl et la page Pontage-réseau du site de la fondation Linux.