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.