10. Lire et configurer les fonctions réseau du noyau Linux

Un grand nombre de paramètres sont actifs par défaut sur les interfaces réseau. Sur un système GNU/Linux, ces paramètres sont placés dans les systèmes de fichiers virtuels /proc et /sys.

Comment visualiser les paramètres du noyau Linux pour une interface Ethernet ?

Tous les réglages possibles pour une interface pilotée par le sous-système réseau du noyau Linux sont accessibles depuis l'espace utilisateur via deux systèmes de fichiers virtuels appelés procfs et sysfs. L'outil qui permet de lire et configurer ces réglages s'appelle sysctl.

La description de tous les paramètres relatifs à l'interface Ethernet sort du cadre de ce document. Le but ici est de montrer que ces paramètres existent, qu'ils sont accessibles et que l'on sait où les trouver dans l'arborescence système.

Dans notre contexte, nous savons que le nom de l'interface Ethernet est eth0. On peut faire une recherche des paramètres relatifs à ce nom d'interface pour les protocoles IPv4 et IPv6.

$ sudo sysctl -a --pattern 'net.ipv(4|6).conf.eth0'

Comment changer la valeur d'un paramètre ?

Pour changer les valeurs attribuées par défaut lors de l'initialisation du système, on utilise à nouveau la commande sysctl. Le répertoire /etc/sysctl.d contient les fichiers de modification ou d'application de nouveaux paramètres. Historiquement, c'est le fichier /etc/sysctl.conf qui contenait la liste de ces modifications. Aujourd'hui, ce fichier est fourni par la distribution et il est préférable d'ajouter un fichier dédié dans le répertoire /etc/sysctl.d.

Pour ce qui est de la liste des paramètres d'une interface réseau, on peut prendre l'exemple du routage par l'adresse source comme axe de modification des valeurs par défaut. Le source routing est un mécanisme qui permet à un paquet IP d'indiquer au routeur le chemin que doit suivre le paquet retour. Il existe également une option pour enregistrer les sauts tout au long du chemin. La liste des sauts effectués ou l'enregistrement de route fournit à la destination un chemin de retour vers la source. Cela permet à la source (l'hôte émetteur) de spécifier la route, de manière lâche ou stricte, en ignorant les tables de routage de tout ou partie des routeurs. Il peut permettre à un utilisateur de rediriger le trafic réseau à des fins malveillantes. Par conséquent, le routage basé sur la source doit être désactivé.

Avant modification des paramètres, la situation est la suivante.

$ sudo sysctl -a --pattern 'net.ipv(4|6).conf.eth0.*source'
net.ipv4.conf.eth0.accept_source_route = 1
net.ipv6.conf.eth0.accept_source_route = 0
  1. Dans un premier temps, il est possible de modifier le paramètre voulu individuellement.

    $ sudo sysctl -w net.ipv4.conf.eth0.accept_source_route=0
    net.ipv4.conf.eth0.accept_source_route = 0
  2. Dans un second temps, il est possible de rendre cette modification permanente au niveau système en éditant le fichier historique /etc/sysctl.conf. Il faut décommenter la ligne relative au paramètre sur le routage basé sur la source pour IPv4.

    $ sudo sed -ie '/#net.ipv4.conf.all.accept_source_route = 0/ s/^#//' /etc/sysctl.conf
    $ sudo sysctl --system
    * Applying /etc/sysctl.d/99-sysctl.conf ...
    net.ipv4.conf.all.accept_source_route = 0
    * Applying /etc/sysctl.d/protect-links.conf ...
    fs.protected_hardlinks = 1
    fs.protected_symlinks = 1
    * Applying /etc/sysctl.conf ...
    net.ipv4.conf.all.accept_source_route = 0

Comme le fichier /etc/sysctl.conf est conservé, les paramètres seront à nouveau appliqués lors de l'initialisation du système.