GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:la differenza tra "all", "default" ed "eth*" in /proc/sys/net/ipv[46]/conf/?

In sysctl, il /proc/sys/net/ipv[46]/conf/ keys hanno le seguenti sottochiavi:all , default e una chiave per ciascuna interfaccia di rete. Ad esempio, su una macchina con una singola interfaccia di rete eth0, apparirà così:

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/

Tutte le rispettive impostazioni esistono in ogni chiave separatamente. Ad esempio, se voglio disabilitare gli annunci del router IPv6 con accept_ra value, questo valore esiste quattro volte:

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

La mia domanda ora è:quale di questi valori devo cambiare? Ho calcolato all (per modificare tutte le interfacce esistenti) e default (per modificare tutte le nuove interfacce che potrebbero apparire in seguito), ma la modifica di queste lascia comunque il valore a 1 per lo ed 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 macchina ora accetterà annunci router su eth0 o no?

Risposta accettata:

Ho trovato la risposta mentre scrivevo ancora la domanda. Ho deciso di pubblicarlo comunque perché altri potrebbero trovarlo perspicace e quindi rispondere da solo; Spero che questo non sia disapprovato 🙂

L'utente Philipp Matthias Hahn sulla mailing list del kernel linux l'ha capito almeno in parte:

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.

Non copre accept_ra ma almeno ora è chiaro come all e default funzionano, o meglio, come non funzionano come mi sarei aspettato.

Correlati:Intercetta input e output da un eseguibile specifico?
Linux
  1. Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

  2. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  3. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

  4. Qual è la differenza tra all, default e eth* in /proc/sys/net/ipv[46]/conf/?

  5. Perché su alcuni sistemi Linux, il filesystem di root appare come /dev/root invece di /dev/<real device node>in mtab?

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

/proc/[pid]/pagemaps e /proc/[pid]/maps | Linux

Differenza tra /bin e /usr/bin

Qual è la differenza tra /tmp e /run?

Differenza tra /etc/hosts e /etc/resolv.conf