GNU/Linux >> Tutoriels Linux >  >> Linux

Linux – La différence entre « all », « default » et « eth* » dans /proc/sys/net/ipv[46]/conf/?

Dans sysctl, le /proc/sys/net/ipv[46]/conf/ les clés ont les sous-clés suivantes :all , default , et une clé pour chaque interface réseau. Par exemple, sur une machine avec une seule interface réseau eth0, cela ressemblera à ceci :

iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/

/proc/sys/net/ipv6/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/

Tous les paramètres respectifs existent dans chaque touche séparément. Par exemple, si je veux désactiver les annonces de routeur IPv6 avec le accept_ra valeur, cette valeur existe quatre fois :

iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1

Ma question est maintenant :laquelle de ces valeurs dois-je modifier ? J'ai compris all (pour changer toutes les interfaces existantes) et default (pour changer toutes les nouvelles interfaces qui peuvent apparaître plus tard), mais les changer laisse toujours la valeur à 1 pour lo et eth0 :

iserv ~ # sysctl -w net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_ra = 0
iserv ~ # sysctl -w net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.accept_ra = 0
iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "  
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1

La machine acceptera-t-elle désormais les annonces de routeur sur eth0, ou non ?

Réponse acceptée :

J'ai trouvé la réponse tout en écrivant la question. J'ai décidé de le publier quand même parce que d'autres peuvent trouver cela perspicace, puis y répondre moi-même; J'espère que ce n'est pas mal vu 🙂

L'utilisateur Philipp Matthias Hahn de la liste de diffusion linux-kernel l'a compris au moins partiellement :

As far as I researched for IPv4 some time ago, the "default" value gets
copied to newly created interfaces only once.
"all" on the other hand allways gets applied in addition to the current
setting, but it depends on the exact setting, if its ORed, ANDed, or
whatevered:
    log_martians         OR
    accept_redirects     AND
    forwarding           ?
    mc_forwarding        AND
    medium_id
    proxy_arp            OR
    shared_media         OR
    secure_redirects     OR
    send_redirects       OR
    bootp_relay          AND
    accept_source_route  AND
    rp_filter            AND
    arp_filter           OR
    arp_announce         MAX
    arp_ignore           MAX
    arp_accept
    app_solicit
    disable_policy
    disable_xfrm
    tag
(see include/linux/inetdevice.h:83 for IN_DEV_{AND,OR,MAX}CONF)

Putting a new value in "all" doesn't change the value you read from
"$interface", but it only gets computed and used internally.

Il ne couvre pas accept_ra mais au moins, il est clair maintenant comment all et default fonctionnent, ou plutôt, comment ils ne fonctionnent pas comme je m'y attendais.

Connexe :Intercepter l'entrée et la sortie d'un exécutable spécifique ?
Linux
  1. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

  2. Quelle est la différence entre #!/usr/bin/env bash et #!/usr/bin/bash ?

  3. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  4. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

  5. Quelle est la différence entre /tmp et /run ?

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Différence entre /bin et /usr/bin

Quelle est la différence entre all, default et eth* dans /proc/sys/net/ipv[46]/conf/?

Pourquoi sur certains systèmes Linux, le système de fichiers racine apparaît-il comme /dev/root au lieu de /dev/<real device node> dans mtab ?

Différence entre /etc/hosts et /etc/resolv.conf