ipn/ipnlocal: ignore NetfilterMode pref on Synology

On clean installs we didn't set use iptables, but during upgrades it
looks like we could use old prefs that directed us to go into the iptables
paths that might fail on Synology.

Updates #1995
Fixes tailscale/tailscale-synology#57 (I think)

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
(cherry picked from commit a04801e037)
This commit is contained in:
Brad Fitzpatrick 2021-05-27 10:07:17 -07:00
parent 36db80e57d
commit cd8b434ccd

View File

@ -44,11 +44,13 @@
"tailscale.com/types/logger" "tailscale.com/types/logger"
"tailscale.com/types/netmap" "tailscale.com/types/netmap"
"tailscale.com/types/persist" "tailscale.com/types/persist"
"tailscale.com/types/preftype"
"tailscale.com/types/wgkey" "tailscale.com/types/wgkey"
"tailscale.com/util/dnsname" "tailscale.com/util/dnsname"
"tailscale.com/util/osshare" "tailscale.com/util/osshare"
"tailscale.com/util/systemd" "tailscale.com/util/systemd"
"tailscale.com/version" "tailscale.com/version"
"tailscale.com/version/distro"
"tailscale.com/wgengine" "tailscale.com/wgengine"
"tailscale.com/wgengine/filter" "tailscale.com/wgengine/filter"
"tailscale.com/wgengine/router" "tailscale.com/wgengine/router"
@ -2043,6 +2045,11 @@ func (b *LocalBackend) routerConfig(cfg *wgcfg.Config, prefs *ipn.Prefs) *router
Routes: peerRoutes(cfg.Peers, 10_000), Routes: peerRoutes(cfg.Peers, 10_000),
} }
if distro.Get() == distro.Synology {
// Issue 1995: we don't use iptables on Synology.
rs.NetfilterMode = preftype.NetfilterOff
}
// Sanity check: we expect the control server to program both a v4 // Sanity check: we expect the control server to program both a v4
// and a v6 default route, if default routing is on. Fill in // and a v6 default route, if default routing is on. Fill in
// blackhole routes appropriately if we're missing some. This is // blackhole routes appropriately if we're missing some. This is