GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Der Unterschied zwischen „all“, „default“ und „eth*“ In /proc/sys/net/ipv[46]/conf/?

In sysctl die Datei /proc/sys/net/ipv[46]/conf/ Schlüssel haben die folgenden Unterschlüssel:all , default , und einen Schlüssel für jede Netzwerkschnittstelle. Auf einer Maschine mit einer einzigen Netzwerkschnittstelle eth0 sieht es beispielsweise so aus:

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/

Alle entsprechenden Einstellungen sind in jedem Schlüssel separat vorhanden. Zum Beispiel, wenn ich IPv6 Router Advertisements mit dem accept_ra deaktivieren möchte Wert, dieser Wert existiert viermal:

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

Meine Frage ist nun:Welche dieser Werte muss ich ändern? Ich dachte mir all (um alle bestehenden Schnittstellen zu ändern) und default (um alle neuen Schnittstellen zu ändern, die später erscheinen könnten), aber das Ändern dieser lässt den Wert immer noch auf 1 für lo und 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

Wird die Maschine nun Router Advertisements auf eth0 akzeptieren oder nicht?

Akzeptierte Antwort:

Ich habe die Antwort gefunden, während ich noch die Frage geschrieben habe. Ich habe mich entschieden, es trotzdem zu posten, weil andere das vielleicht aufschlussreich finden, und es dann selbst zu beantworten; Ich hoffe das ist nicht verpönt 🙂

Der Benutzer Philipp Matthias Hahn auf der Linux-Kernel-Mailingliste hat es zumindest teilweise herausgefunden:

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.

Er deckt accept_ra nicht ab aber zumindest ist jetzt klar, wie all und default funktionieren, oder besser gesagt, wie sie nicht so funktionieren, wie ich es erwartet hätte.

Verwandte:Ein- und Ausgabe von einer bestimmten ausführbaren Datei abfangen?
Linux
  1. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  2. Was ist der Unterschied zwischen /sbin/nologin und /bin/false?

  3. Der Unterschied zwischen /opt und /usr/local?

  4. Linux – /proc/mnt mit /proc/mounts verknüpfen?

  5. Linux – Der Unterschied zwischen /sys/block/sda1/stat und /sys/block/xvda1/stat?

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

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

Unterschied zwischen /bin und /usr/bin

Was ist der Unterschied zwischen /tmp und /run?

Unterschied zwischen /etc/hosts und /etc/resolv.conf