wgengine/router: add auto selection heuristic for iptables/nftables

This commit replaces the TS_DEBUG_USE_NETLINK_NFTABLES envknob with
a TS_DEBUG_FIREWALL_MODE that should be set to either 'iptables' or
'nftables' to select firewall mode manually, other wise tailscaled
will automatically choose between iptables and nftables depending on
environment and system availability.

updates: #319
Signed-off-by: KevinLiang10 <kevinliang@tailscale.com>
This commit is contained in:
KevinLiang10
2023-08-01 02:43:13 +00:00
committed by KevinLiang10
parent 17ed2da94d
commit ae63c51ff1
5 changed files with 217 additions and 14 deletions

View File

@@ -107,12 +107,18 @@ func DebugNetfilter(logf logger.Logf) error {
func DetectNetfilter() (int, error) {
conn, err := nftables.New()
if err != nil {
return 0, err
return 0, ErrorFWModeNotSupported{
Mode: FirewallModeNfTables,
Err: err,
}
}
chains, err := conn.ListChains()
if err != nil {
return 0, fmt.Errorf("cannot list chains: %w", err)
return 0, ErrorFWModeNotSupported{
Mode: FirewallModeNfTables,
Err: fmt.Errorf("cannot list chains: %w", err),
}
}
var validRules int