- Introduction
- Configuration DEBIAN
- Configuration CentOS & RedHat
- Configuration sur Suse Linux
- Configuration sur Mageia
Linux est un produit de base, disponible dans des « distributions », mais chaque distributions proposent de configurer les interfaces réseau de manière complètement différente… Petit tour du propriétaire ou plutôt des propriétaires.
Cet article va expliquer comment paramétrer une interface réseau en DHCP ou avec une adresse IP, surtout depuis la disparition des « Net-Tools » au profit de « iproute2« . Il ne couvre pas par contre, la configuration d’interface spécifique tel que les BOND, VLAN, PPP, Wireless, etc… ainsi que le routage et les configuration de pare-feu.
Le paquet « iproute2 » remplace les commandes standard que l’on connaît tous (ifconfig, iwconfig, route, …) au profit de nouvelles commandes; voici un rappel des correspondances :
NET-TOOLS | IPROUTE2 | |
---|---|---|
Voir toutes les interfaces réseau | ifconfig -a | ip link show |
Activer l'interface réseau | ifconfig eth1 up | ip link set up eth1 |
Désactiver l'interface réseau | ifconfig eth1 down | ip link set down eth1 |
Définir le masque IP / réseau | ifconfig eth1 192.168.0.1/24 | ip addr add 192.168.0.1/24 dev eth1 |
Supprimer la définition IP / Masque du réseau | ifconfig eth1 0 | ip addr del 192.168.0.1/24 dev eth1 |
Informations spécifiques à une interface | ifconfig eth1 | ip addr show dev eth1 |
Modification de MAC-ADDRESS | ifconfig eth1 hw ether 00:52:bc:33:25:a1 | ip link set dev eth1 address 00:52:bc:33:25:a1 |
Afficher la table de routage | route -n ou netstat -rn | ip route show |
Ajout de l'itinéraire par défaut | route add -net 192.168.0.1 | ip route add default via 192.168.0.1 |
Ajouter une route statique | route add -net 192.168.0.1/24 gw eth1 | ip route add 192.168.0.1/24 dev eth1 |
Manipulation de réseau et requête | mii-tool | ethtool |
Affichage des informations WLAN | iwconfig | iw |
(FIXME : indiquer comment définir une interface réseau : eth0 ? enp0s3 ? etc…)
[tds_council]
Le service DNS est normalement proposé par votre opérateur, soit au travers sa BOX, soit en pointant directement sur les serveurs de son infrastructure.
Google, Cloudflare et bien d’autres, proposent un service gratuit de DNS qu’il vous est possible de configurer dans vos machines.
Cloudflare est le petit dernier et semble être plus rapide que tous ses concurrents : il propose également des fonctionnalités intéressantes permettant de limiter l’accès à certains sites (adulte et site « vérolé » ou avec des malwares); de plus, il certifie qu’il n’utilisera pas vos données… chose que Google ne semble pas faire.
Cloudflare, on choisira un seul type de DNS parmi les 3 proposés ci-dessous :
-
Les DNS « normaux«
- DNS primaire : 1.1.1.1
- DNS secondaire : 1.0.0.1
-
Les DNS pour bloquer uniquement les malwares
- DNS primaire : 1.1.1.2
- DNS secondaire : 1.0.0.2
-
Les DNS pour bloquer les malwares et les contenus pour adultes
- DNS primaire : 1.1.1.3
- DNS secondaire : 1.0.0.3
Google :
- DNS primaire : 8.8.8.8
- DNS secondaire : 8.8.4.4
[/tds_council]
Debian : une certaine stabilité…
Sur Debian, la configuration réseau reste identique quelque soit la version de la distribution et cela, depuis déjà quelques années.
Depuis Stretch, les nouveaux systèmes n’utilisent désormais plus par défaut les anciens noms d’interface tels que eth0, eth1, wlan0, wlan1. Le nouveau système utilise des noms basés sur les emplacements du matériel tels que no0, enp0s31f6, wlp1s7 (ou dans le cas des dongles USB, l’adresse MAC : enx2c56ac39ec0d).
[tds_note]Si vous avez besoin de recharger la configuration réseau sans redémarrer, vous pouvez relancer le service :
systemctl restart networking.service [/tds_note]
Concernant la configuration, tout se passe dans le fichier /etc/network/interfaces :
-
- Mode DHCP :
allow-hotplug enp0s3 # On autorise la monté de l’interface lors du branchement du câble réseau
iface enp0s3 inet dhcp # On défini sur l’interface enp0s3 une interface réseau qui sera paramétré en DHCP
iface eth0 inet6 dhcp # Réception d’une adresse IPv6 en mode DHCP
iface eth0 inet6 auto # Réception d’une adresse IPv6 en mode auto en utilisant l’auto-configuration sans état (StateLess Address AutoConfiguration ou SLAAC) - Mode IP Fixe :
auto eth0 #
iface eth0 inet static # On défini l’interface eth0 possédant une adresse IPv4 statique
address 192.0.2.7/24 # On défini l’adresse IPv4 et le masque (/24); possible de le définir à part en indiquant sur une autre ligne : netmask 255.255.255.0
gateway 192.0.2.254 # On défini la passerelle
dns-nameservers 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 # On défini les serveurs DNS : ici ceux de Cloudfare et de Google
iface eth0 inet6 static # On défini l’interface eth0 possédant une adresse IPv6 statique
address 2001:db8::c0ca:1eaf/64 # On défini l’adresse IPv6 et le masque (/64)
gateway 2001:db8::1ead:ed:beef # On défini la passerelle
dns-nameservers 2606:4700:4700::1111 2606:4700:4700::1001 # On défini les serveurs DNSv6 : « 2606:4700:4700::1111 » / « 2606:4700:4700::1001 »
- Mode DHCP :
Il est aussi possible de définir la vitesse de l’interface; pour cela, installez le paquet « ethtool » ou « mii-tool » (en fonction du soutien du pilote de votre carte par l’n de ces paquets) et indiquez dans le paragraphe « iface » de la carte du fichier « interfaces » :
up sleep 5; ethtool -s eth0 autoneg off speed 100 duplex full
ou
mii-tool -F 100baseTx-FD eth0
La configuration des différentes cartes se fait au travers de « blocs » dans le fichier /etc/network/interfaces; voici un exemple avec 2 interfaces ethernet :
1 2 3 4 5 6 7 8 |
auto eth0 iface eth0 inet static address 192.0.2.7/24 gateway 192.0.2.254 iface eth1 inet6 static address 2001:db8::c0ca:1eaf/64 gateway 2001:db8::1ead:ed:beef |
[tds_note]
Configuration DNS:
On vient de parler des DNS, de ceux de Google et de CloudFlare, mais ou doit-on les indiquer sur un système Debian ?
La réponse est simple : dans le fichier « /etc/resolv.conf »
Il est a noter que sous Debian, un programme nommé « resolvconf » est peut être installé : dans ce cas, n’éditez pas le fichier « /etc/resolv.conf » à la main car ce programme va le gérer.
D’autres programmes peuvent également modifier votre fichier « /etc/resolv.conf » :
- Le programme resolvconf
- Le démon network-manager
- les clients (graphique) DHCP
[tds_council]
Le programme resolvconf garde la trace des informations du système sur les serveurs de noms de domaine actuellement disponibles. Il ne faut pas le confondre avec le fichier de configuration resolv.conf qui porte malencontreusement presque le même nom. Le programme resolvconf est optionnel sur les systèmes Debian.
Le fichier de configuration resolv.conf contient des informations sur les serveurs de noms de domaine que le système doit utiliser. Néanmoins, quand plusieurs programmes doivent modifer dynamiquement le fichier de configuration resolv.conf, ils peuvent se chevaucher et le fichier peut ne plus être synchronisé. Le programme resolvconf s’occupe de ce problème. Il agit comme un intermédiaire entre les programmes qui fournissent des informations sur les serveurs de noms de domaine (par exemple les clients dhcp) et les programmes qui les utilisent (par exemple resolver).
Quand resolvconf est correctement installé, le fichier de configuration resolv.conf du répertoire /etc/resolv.conf est remplacé par un lien symbolique pointant vers le fichier /etc/resolvconf/run/resolv.conf et le résolveur utilise plutôt le fichier de configuration qui est généré dynamiquement par resolvconf à cet emplacement /etc/resolvconf/run/resolv.conf. Le programme resolvconf est en général seulement nécessaire quand un système a plusieurs programmes qui ont besoin de modifier de façon dynamique les informations sur les serveurs de noms de domaine.
Sur un système simple où les serveurs de noms de domaine ne changent pas souvent ou bien ne sont modifiés que par un programme, le fichier de configuration resolv.conf est suffisant. [/tds_council]
[/tds_note]
[tds_info]
Avec l’arrivé d’IPv6 sur nos BOX opérateur, vos interfaces réseau peuvent récupérer une adresse en IPv6 en plus de celle en IPv4 que vous avez peut être fixé. Le problème, en fonction de la BOX opérateur ou du routeur entre vous et Internet, c’est que cette adresse IPv6 donne un accès complet à votre machine – sauf si bien sur, vous avez mis des règles de firewall sur cette adresse IPv6. Pour désactiver IPv6 dans Debian ou une autre distribution, il faut passer par le fichier « sysctl.conf« . Voici les différentes options que vous pouvez prendre en compte :
On désactive ipv6 pour toutes les interfaces :
1 |
net.ipv6.conf.all.disable_ipv6=1 |
On désactive l’auto configuration pour toutes les interfaces :
1 |
net.ipv6.conf.all.autoconf=0 |
On désactive ipv6 de la configuration par défaut :
1 |
net.ipv6.conf.default.disable_ipv6=1 |
On désactive l’auto configuration par défaut :
1 |
net.ipv6.conf.default.autoconf=0 |
Vous pouvez tester chacune de ces lignes en utilisant la commande « sysctl -w <ligne de conf>« .
Une fois votre fichier « sysctl.conf » défini, lancer la commande « sysctl -p » pour prendre en compte cette nouvelle configuration dans reboot de la machine.
[/tds_info]
CentOS & RedHat : L’évolution à tout prix…
La configuration réseau sous CentOS ou RedHat se fait de différente manière, selon la version de la distribution, mais également en fonction si vous utilisez ou pas « NetworkManager« .
[tds_warning]
ATTENTION :
A partir de la version 8 de CentOS, les « Network-Scripts » permettant de configurer les interfaces réseau au travers de fichiers de configuration comme sur Debian, ne sont plus installés par défaut et donc plus soutenu. La commande « systemctl status|start|stop network » ne fonctionne donc plus :
Failed to restart network.service: Unit network.service not found
De plus, les commandes ifup et ifdown sont maintenant apportés par le paquet NetworkManager.
Il reste toutefois une possibilité de ré-implémenter cette méthode de fonctionnement sur CentOS8 & RH8 en installatnt le paquet « network-scripts » :
1 |
yum install network-scripts |
[/tds_warning]
CentOS & RH utilisent différents fichiers pour configurer le réseau lorsque les Network-scripts sont utilisés :
/etc/hosts
Le but principal de ce fichier est de résoudre le nom d’un hôte qui ne pourrait pas être résolu autrement. Il peut être utilisé pour résoudre des noms d’hôte sur un petit réseau sans serveur DNS. Au regard du type de réseau sur lequel la machine se situe, ce fichier devrait contenir une ligne pour définir le device « loopback » (127.0.0.1) comme localhost.localdomain. Pour plus d’information, regarder la page MAN de host(5).
/etc/resolv.conf
Ce fichier spécifie les adresses IP des serveurs de DNS et le domaine à rechercher.
This file specifies the IP addresses of DNS servers and the search domain. Sauf configuration particulière, ce sont les scripts réseau qui vont remplir ce fichier. Pour plus d’information, voir la page MAN de resolv.conf(5).
/etc/sysconfig/network
Ce fichier spécifie le routage et une information sur toutes les interfaces de la machine. Il est utilisé pour contenir des directives qui vont avoir un effet global et pas seulement sur une seule interface.
/etc/sysconfig/network-scripts/<NomDeLaCarte>
Pour chaque interface réseau, il y a un fichier de configiration spécifique. Chacun de ces fichiers produit une information spécifique pour une interface réseau particulier.
On pourra revoir les notes qui expliques des différentes options et directives que peut contenir ce fichier.
CentOS & RH en utilisant les Network-Scripts
Comme indiqué plus haut, ceci ne fonctionnera que sur les versions <= 7 de CentOS ou RedHat.
Se rendre dans le dossier /etc/sysconfig/network-scripts
Dans ce dossier, on trouvera plusieurs fichiers : celui qui va nous intéresser est celui qui se nomme « ifcfg-<NomDeLaCarte> (Ex : ifcfg-eth0)
-
- Activer un mode DHCP :
DEVICE=eth0 # Le nom de l’interface
BOOTPROTO=dhcp # Le protocole utilisé au boot de la machine
ONBOOT=yes # Doit on activer cette interface au boot de la machine ?
-
- Activer un mode IP Fixe
DEVICE=eth0 # Le nom de l’interface
BOOTPROTO=none # Le protocole utilisé au boot de la machine
IPADDR=192.168.2.10 # L’adresse IP que l’on souhaite donner à l’interface
NETMASK=255.255.255.0 # Le masque réseau donné à l’interface
GATEWAY=192.168.2.254 # La passerelle que pourra utiliser l’interface pour communiquer vers l’exterieur
USERCTL=no # On donne ou pas la possibilité aux utilisateur autre que root de pouvoir administrer cette interface
ONBOOT=yes # Doit on activer cette interface au boot de la machine ?
[tds_info]
Il existe d’autres options pouvant être ajouté au fichier de configuration de la carte réseau :
BOOTPROTO=protocol
ou l’un des protocols est l’un de ces possibilités :
none — Aucun protocol de boot ne devrait être utilisé
bootp — Le protocol BOOTP sera utilisé.
dhcp — Le protocol DHCP sera utilisé.
USERCTL=réponse
ou la réponse peut être un de ces choix :
yes — Les utilisateur non-root peuvent controler cette interface.
no — Seul root peut controler cette interface.
ONBOOT=réponse
ou la réponse peut être un de ces choix :
yes — Ce périphérique devrait être activé lors du boot de la machine.
no — Ce périphérique ne sera pas activé lors du boot de la machine.
DEVICE=nom
ou le nom est le nom dupériphérique physique (à l’exeption des périphérique PPP dynamiquement alloué ou le nom devient le nom logique).
DHCP_HOSTNAME=nom
ou le nom est un nom court qui sera envoyé au serveur DHCP. Utiliser cette option seulement si le serveur DHCP demande au client de spécifier un nom d’hôte avant de recevoir une adresse IP.
BROADCAST=adresse
ou l’adresse est l’adresse de broadcast. Cette directive n’a plus lieu d’être, la valeur est calculé automatiquement avec ipcalc.
DNS{1,2}=adresse
ou adresse est une adresse de serveur de nom qui sera placé dans /etc/resolv.conf produit par la directive PEERDNS si elle n’est pas mis sur « no ».
Exemple : DNS1=1.1.1.1
ETHTOOL_OPTS=options
ou « options » prend les options supportés par ethtool. Par exemple, si vous souhaitez forcer l’interface à 100 Mb et en full duplex :
ETHTOOL_OPTS= »autoneg off speed 100 duplex full »
HOTPLUG=réponse
Ou « réponse » correspond à l’un de ces choix :
yes — Ce périphérique sera activé quand il sera connecté sur la machine.
no — Ce périphérique ne sera pas activé quand il sera connecté sur la machine.
HWADDR=MAC-adresse
ou la « MAC-adresse » est l’adresse physique du périphérique Ethernet dans un format tel que AA:BB:CC:DD:EE:FF. Cette directive doit être utilisé sur les machines contenant plus d’une carte réseau afin de s’assurer que les interfaces sont correctement configurés au regard de l’ordre de chargement de chaque module d’interface réseau. Cette directive devrait être utilisé en conjonction avec la directive MACADDR.
Note :
La persistance des noms d’interface est maintenant maintenu par /etc/udev/rules.d/70-persistent-net.rules.
LINKDELAY=temps
ou « temps » est un nombre de seconde que l’on attend pour réaliser la négociation du lien sur le périphérique. Par défaut, ce temps est de 5 secondes. Le délais de la négociation du lien, causé par STP par exemple, peut entrainer une augmentation de cette valeur.
MACADDR=MAC-adresse
ou MAC-adresse est l’adresse physique du périphérique Ethernet dans une forme tel que AA:BB:CC:DD:EE:FF.
Cette directive est utilisé pour assigner une adresse MAC à une interface, supplentant l’adresse physique possédé par la carte réseau. Cette directive ne devrait pas être utilisé en confonction avec la directive HWADDR.
NETMASKn=masque
ou « masque » est la velur du maque réseau et « n »est un nombre entier, consécutif et démarrant à 0 (par exemple : NETMASK0).
Il est utilisé quand la configuration de la carte doit supporter plusieurs adresse IP sur son interface. Il peut être omis quand il n’y a qu’une seule adresse à configurer.
NETWORK=adresse
ou « adresse » est l’adresse réseau. Cette directive n’est plus utilisé car elle est calculé automatiquement par ipcalc.
NM_CONTROLLED=réponse
ou « réponse » est l’une de ces valeurs :
yes — NetworkManager est autorisé à configurer ce périphérique. C’est par défaut le cas… et peu donc être omis dans la configiration.
no — NetworkManager n’est pas autorisé à configurer ce périphérique.
PEERDNS=réponse
ou « réponse » est l’une de ces valeurs :
yes — Modifie le fichier /etc/resolv.conf si la directive DNS est activé, que l’on utilise la méthode DHCP ou que l’on utilise la RFC 1877 de Microsoft’s sur les connexions PPP. Dans tous les cas, « yes » est par défaut.
no — Ne modifie rien dans /etc/resolv.conf.
IPADDRn=adresse
ou « adresse » est l’adresse IPv4 et « n » un nombre entier consécutif positif démarrant à 0 (par exemple : IPADDR0). Cela est utilisé pour des configuration avec de multiple adresse IP rattachées à cette interface. Il peut être omis s’il n’y a qu’une seule adresse de configuré.
[/tds_info]
[tds_note]
DHCPV6C=réponse
ou « réponse » est l’une de ces valeur :
yes — Utilise DHCP pour obtenir une adresse IPv6 pour cette interface.
no — N’utilise pas DHCP pour obtenir une adresse IPv6 pour cette interface. C’est la valeur par défaut.
Une adresse IPv6 locale sera assigné tout de même par défaut. L’adresse locale sera basé sur l’adresse MAC de l’interface comme défini dans la RFC 4862.
DHCPV6C_OPTIONS=réponse
ou « réponse » contient l’une de ces valeurs :
-P — Active la délégation du prefix IPv6.
-S — Utilise DHCP pour obtenir une configuration unique déclarée, sans adresse, pour cette interface.
-N — Restaure les otions normales après utilisation des options -T ou -P.
-T — Utilise DHCP pour obtenir une adresse IPv6 temporaire pour cette interface.
-D — Surcharge les valeurs par défaut quand on sélectionne le type d’identifiant unique en DHCP à utiliser (DHCP Unique Identifier : DUID).
Par défaut, le client DHCP (dhclient) crée un identifiant unique DHCP (DHCP Unique Identifier [DUID]) basé sur l’adresse du lien réseau (DUID-LL) s’il fonctionne dans un mode déclarré (avec l’option -S, sans demander une adresse), ou s’il crée un identifiant basé sur l’adresse du lien réseau ajouté à un timestamp (DUID-LLT) si il fonctionne dans un mode déclaré (sans l’option -S, demandant une adresse). L’option -D surcharge ce mode par defaut, avec une valeur pour LL ou LLT.
IPV6ADDR=adresse
ou « adresse » est la premiere adresse IPv6 statique, ou primaire, sur l’interface.
Le format est sous forme « adresse / longueur du préfix ». Si la longueur du prefix n’est pas spécifié, /64 est défini par défaut.
Notez que cette définition dépend de la valeur donnée à IPV6INIT devant être activé.
IPV6ADDR_SECONDARIES=adresse
ou « adresse » contient une ou plusieurs adresses IPv6, séparés par un espace, sur cette interface.
Le format est sous forme « adresse/longueur du prefix ». Si la longueur du prefix n’est pas spécifié, /64 est défini par défaut.
Notez que cette définition dépend de la valeur donnée à IPV6INIT devant être activé.
IPV6INIT=réponse
ou « réponse » contient l’une de ces valeurs :
yes — Initialise cette interface pour un adressage IPv6.
no — N’initialise pas cette interface pour un adressage IPv6. C’est la valeur par défaut.
Cette configuration est requise pour le paramétrage IPv6 statique ou par DHCP. Cela n’affecte pas la configuration IPv6 « Stateless Address Autoconfiguration » (SLAAC) comme défini dans la RFC 4862.
Voir la remarque sur “/etc/sysconfig/network” concernant la désactivation de IPv6.
IPV6_AUTOCONF=réponse
ou « réponse » contient l’une de ces valeurs :
yes — Active l’auto-configuration IPv6 pour cette interface.
no — Désactive l’auto-configuration IPv6 pour cette interface.
Si activé, une adresse IPv6 sera demandé en utilisant le système « Neighbor Discovery » (ND) d’un routeur utilisant un démon « radvd« .
Notez que la valeur par défaut de la directive IPV6_AUTOCONF dépendra de IPV6FORWARDING suivant ces paramètres :
IPV6FORWARDING=yes, alors IPV6_AUTOCONF sera par défaut sur « no« .
IPV6FORWARDING=no, alors IPV6_AUTOCONF sera par défaut sur « yes » et la directive IPV6_ROUTER aura aucun effet.
IPV6_MTU=valeur
ou « valeur » est une valeur optionnelle de la MTU sur cette interface.
IPV6_PRIVACY=rfc3041
ou « rfc3041 » est une valeur optionnelle pour définir cette interface à supporter la RFC 3041 « Privacy Extensions for Stateless Address Autoconfiguration in IPv6« . Notez que ce paramètre dépend de la directive IPV6INIT devant être activé.
Le mode supporté de la RFC 3041 est désactivé par défaut. « Stateless Autoconfiguration » sera défini par l’adresse MAC, et quand elle est disponible, en utilisant la méthode EUI-64. L’adresse est défini avec un préfixe bien que l’adresse est normalement dérivé de la MAC adresse, elle est donc globalement unique même quand le préfixe change. Dans le cas ou le lien est local l’adresse du préfixe est fe80::/64 tel que défini dans la RFC 2462 « IPv6 Stateless Address Autoconfiguration« .
[/tds_note]
CentOS en utilisant NetworkManager (CentOS & RH >= 7)
Sur ces version de CentOS & RH, la configuration peut se faire également en utilisant « NetworkManager« . La particularité des outils NetworkManager est qu’ils sont partiellement graphique : en ligne de commande dans un terminal, on se retrouvera avec une interface dans laquelle il faudra jouer de la tabulation pour passer d’un champs à l’autre, de la barre d’espace pour activer ou pas un composant et de la touche Entré/Return de votre clavier pour valider la configuration.
La commande principale est : nmui
Cette commande peut également prendre des arguments afin de pouvor être utilisé par des scripts qui viendraient à (re)configurer le réseau.
Exemple de configuration d’une interface avec nmui :
[tds_note]Parler des martians[/tds_note]
Suse :
Mageia :
[tds_council]
BONUS
Comment configurer le nom d’une machine sur celle-ci ?Avec son FQDN ?
DEBIAN :
CENTOS <=6 :
Éditer le fichier /etc/sysconfig/network et ajouter le nom de votre serveur sur la ligne contenant « HOSTNAME= »
Pas besoin de redémarrer normalement…
CENTOS >=7 :
On utilisera la commande « hostnamectl » pour paramétrer le nom de la machine; lancer la commande « hostnamectl –static set-hostname <NomMachine> » avec <NomMachine> étant le nom de la machine. Cela aura pour conséquence de changer le contenu du fichier « /etc/hostname »
SUSE :
MAGEIA :
On vérifiera que le nom et le FQDN si vous en avez spécifié un, est bien compris par le système : on exécute la commande « hostname -s » pour avoir le nom de la machine et « hostname -d » pour connaitre son FQDN.
[/tds_council]