Normalize AllocatedIPs/ExtraAllowedIPs to network address before ip route replace
A client CIDR with nonzero host bits (e.g. 10.66.120.1/30 instead of the network 10.66.120.0/30) is tolerated by wg's own AllowedIPs/setconf, which just warns, but plain iproute2 rejects it with "Invalid prefix for given prefix length" and aborts the whole PostUp chain, taking the interface down on start. Added a routeNet template func that clears host bits via net.ParseCIDR before generating each PostUp route line. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATVUwTa4Pqwq26orW5BcDW
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
3e57de1b44
commit
1539c589a1
+1
-1
@@ -17,7 +17,7 @@ PreUp = {{ .serverConfig.Interface.PreUp }}
|
||||
# "RTNETLINK: File exists" the moment two servers claim the same route,
|
||||
# which used to take down every server started after the first. `replace`
|
||||
# is idempotent and never fails on a pre-existing route.
|
||||
PostUp = {{ .serverConfig.Interface.PostUp }}{{range .clientDataList}}{{if eq .Client.Enabled true}}{{range .Client.AllocatedIPs}}ip route replace {{.}} dev %i; {{end}}{{range .Client.ExtraAllowedIPs}}ip route replace {{.}} dev %i; {{end}}{{end}}{{end}}
|
||||
PostUp = {{ .serverConfig.Interface.PostUp }}{{range .clientDataList}}{{if eq .Client.Enabled true}}{{range .Client.AllocatedIPs}}ip route replace {{routeNet .}} dev %i; {{end}}{{range .Client.ExtraAllowedIPs}}ip route replace {{routeNet .}} dev %i; {{end}}{{end}}{{end}}
|
||||
PreDown = {{ .serverConfig.Interface.PreDown }}
|
||||
PostDown = {{ .serverConfig.Interface.PostDown }}
|
||||
Table = off
|
||||
|
||||
Reference in New Issue
Block a user