[systemd-devel] ip forwarding
johannes.ernst at gmail.com
Thu Nov 5 16:08:26 PST 2015
TL;DR: I propose to have IPForward default to “no change”, rather than 0, as 0 has unexpected consequences for non-expert users.
Details: A few months ago there where some threads about ip_forwarding needing a toggle from 1 to 0 and back to 1 before it would work. 
It appears I found the reason for this. With "net.ipv4.ip_forward = 1” in sysctl.d, after a fresh boot:
> for i in /proc/sys/net/ipv4/ip_forward /proc/sys/net/ipv4/conf/*/forwarding; do echo -n $i: ; cat $i; done
/proc/sys/net/ipv4/conf/enp0s3/forwarding:0 <= Why?
If I then do the toggle dance:
> sysctl net.ipv4.ip_forward=0
> sysctl net.ipv4.ip_forward=1
I get what I expected in the first place:
Adding net.ipv4.conf.enp0s3.forwarding = 1 to sysctl.d does not have the desired effect.
Turns out my innocent-looking .network file is the culprit:
Without that file, after boot the enp0s3 flag remains 1 as expected.
The problem: I thought I created that file to say “get an IP address via DHCP” because that’s all it talks about. But due to the IPForward default, I also specified “and turn off ip forwarding”, which is non-obvious (e.g. I just found out, and I originally ran into this in June). So I suggest the default should be “don’t touch this setting” instead of 0.
More information about the systemd-devel