GNU/Linux >> Znalost Linux >  >> Linux

Linux – Rozdíl mezi „all“, „default“ a „eth*“ V /proc/sys/net/ipv[46]/conf/?

V sysctl, /proc/sys/net/ipv[46]/conf/ klíče mají následující podklíče:all , default a klíč pro každé síťové rozhraní. Například na počítači s jediným síťovým rozhraním eth0 to bude vypadat takto:

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/

Všechna příslušná nastavení existují v každé klávese samostatně. Pokud například chci zakázat reklamy směrovače IPv6 pomocí accept_ra hodnota, tato hodnota existuje čtyřikrát:

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

Moje otázka nyní zní:kterou z těchto hodnot musím změnit? Myslel jsem, že all (pro změnu všech existujících rozhraní) a default (chcete-li změnit všechna nová rozhraní, která se mohou objevit později), ale změna těchto rozhraní stále ponechává hodnotu 1 pro lo a 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

Bude nyní stroj přijímat reklamy směrovače na eth0, nebo ne?

Přijatá odpověď:

Odpověď jsem našel při psaní otázky. Rozhodl jsem se to přesto zveřejnit, protože to ostatní mohou považovat za poučné a pak na to odpovím sám; Doufám, že to nebude odsuzováno 🙂

Uživatel Philipp Matthias Hahn z mailing listu linux-kernel na to alespoň částečně přišel:

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.

Nezahrnuje accept_ra ale aspoň je teď jasné, jak all a default fungují, nebo spíše, jak nefungují tak, jak bych očekával.

Související:Zachycovat vstup a výstup z konkrétního spustitelného souboru?
Linux
  1. Jaký je rozdíl mezi #!/usr/bin/env bash a #!/usr/bin/bash?

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. Rozdíl mezi /bin a /usr/bin

  1. Linux:Rozdíl mezi /dev/console , /dev/tty a /dev/tty0

  2. Jaký je rozdíl mezi all, default a eth* v /proc/sys/net/ipv[46]/conf/?

  3. Proč se na některých systémech Linux kořenový souborový systém zobrazuje jako /dev/root místo /dev/<uzel skutečného zařízení>v mtab?

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  3. Rozdíl mezi /opt a /usr/local?