Skip to content

Commit

Permalink
sysctl: set ipv4 settings in a race-free way
Browse files Browse the repository at this point in the history
Fixes systemd#6282.

This solution is a bit busy, but we close the race without setting *.all.*, so
it is still possible to set a different setting for particular interfaces.
Setting just "default" is not very useful because any interfaces present before
systemd-sysctl is invoked are not affected. Setting "all" is too harsh, because
the kernel takes the stronger of the device-specific setting and the "all" value,
so effectively having a weaker setting for specific interfaces is not possible.
  • Loading branch information
keszybz committed Jan 30, 2020
1 parent 6b46028 commit 415e807
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions sysctl.d/50-default.conf
Expand Up @@ -23,12 +23,18 @@ kernel.core_uses_pid = 1

# Source route verification
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.*.rp_filter = 2
-net.ipv4.conf.all.rp_filter

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.*.accept_source_route = 0
-net.ipv4.conf.all.accept_source_route

# Promote secondary addresses when the primary address is removed
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.*.promote_secondaries = 1
-net.ipv4.conf.all.promote_secondaries

# ping(8) without CAP_NET_ADMIN and CAP_NET_RAW
# The upper limit is set to 2^31-1. Values greater than that get rejected by
Expand Down

0 comments on commit 415e807

Please sign in to comment.