poettering · GitHub

This switches the RFC3704 Reverse Path filtering from Strict mode to Loose
mode. The Strict mode breaks some pretty common and reasonable use cases,
such as keeping connections via one default route alive after another one
appears (e.g. plugging an Ethernet cable when connected via Wi-Fi).
The strict filter also makes it impossible for NetworkManager to do
connectivity check on a newly arriving default route (it starts with a
higher metric and is bumped lower if there's connectivity).
Kernel's default is 0 (no filter), but a Loose filter is good enough. The
few use cases where a Strict mode could make sense can easily override
this.
The distributions that don't care about the client use cases and prefer a
strict filter could just ship a custom configuration in
/usr/lib/sysctl.d/ to override this.

@poettering

@lucab lucab mentioned this pull request

Jul 18, 2019

Closed

Closed

Closed

Open

13 tasks

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 7, 2026
The current default strict is neither the default of the linux kernel nor the default of systemd. Furthermore strict can break valid setups involving split DNS where the DNS resolver is not in the same broadcast domain as the client.
Systemd changed the default value in November 2018 from strict to loose so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0 (see https://sysctl-explorer.net/net/ipv4/rp_filter/). Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 10, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 10, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 13, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 23, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 23, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

BerriJ added a commit to BerriJ/nixpkgs that referenced this pull request

Aug 26, 2026
The current default strict is neither the default of the linux kernel
nor the default of systemd. Furthermore strict can break valid setups
involving split DNS where the DNS resolver is not in the same broadcast
domain as the client.
Systemd changed the default value in November 2018 from strict to loose
so this PR aligns the module with upstream (see systemd/systemd#10971).
The Kernel default is 0:
https://sysctl-explorer.net/net/ipv4/rp_filter/
Note that such an option does not exist for IPV6.

Read the original on github.com ↗