Keep IPv6 router announcements working with forwarding on
With net.ipv6.conf.all.forwarding=1, Linux ignores router announcements unless accept_ra is 2, so a server that gets its IPv6 route by SLAAC (e.g. a Raspberry Pi at home) lost IPv6 once the route expired. The sysctl file now also sets accept_ra=2 for the default and for every network card and the IPv6 default-route interface, except where accept_ra is 0. "update" rewrites the file, which fixes existing installs. A new health check warns while the uplink still has accept_ra=1.
This commit is contained in:
@@ -3,6 +3,8 @@ package main
|
||||
import (
|
||||
"log/slog"
|
||||
"net/netip"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
@@ -38,6 +40,15 @@ type Kernel interface {
|
||||
Close() error
|
||||
}
|
||||
|
||||
// readSysctl returns the trimmed content of a /proc/sys file, or "".
|
||||
func readSysctl(path string) string {
|
||||
b, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return strings.TrimSpace(string(b))
|
||||
}
|
||||
|
||||
// Reconciler applies the config to the kernel whenever it is triggered and
|
||||
// remembers the outcome for the health report.
|
||||
type Reconciler struct {
|
||||
|
||||
Reference in New Issue
Block a user