caddyserver/caddy · error
invalid IP address: '%s': %v
Error message
invalid IP address: '%s': %v
What it means
Error "invalid IP address: '%s': %v" thrown in caddyserver/caddy.
Source
Thrown at modules/caddytls/matchers.go:382
}
return false
}
return (len(m.cidrs) == 0 || m.matches(ipAddr, m.cidrs)) &&
(len(m.notCidrs) == 0 || !m.matches(ipAddr, m.notCidrs))
}
func (MatchRemoteIP) parseIPRange(str string) ([]netip.Prefix, error) {
var cidrs []netip.Prefix
if strings.Contains(str, "/") {
ipNet, err := netip.ParsePrefix(str)
if err != nil {
return nil, fmt.Errorf("parsing CIDR expression: %v", err)
}
cidrs = append(cidrs, ipNet)
} else {
ipAddr, err := netip.ParseAddr(str)
if err != nil {
return nil, fmt.Errorf("invalid IP address: '%s': %v", str, err)
}
ip := netip.PrefixFrom(ipAddr, ipAddr.BitLen())
cidrs = append(cidrs, ip)
}
return cidrs, nil
}
func (MatchRemoteIP) matches(ip netip.Addr, ranges []netip.Prefix) bool {
return slices.ContainsFunc(ranges, func(prefix netip.Prefix) bool {
return prefix.Contains(ip)
})
}
// UnmarshalCaddyfile sets up the MatchRemoteIP from Caddyfile tokens. Syntax:
//
// remote_ip <ranges...>
//
// Note: IPs and CIDRs prefixed with ! symbol are treated as not_rangesView on GitHub (pinned to 50e54ee279)
Solutions
- Correct the IP address in the configuration; it must be a valid IPv4 or IPv6 address.
When it happens
Trigger: Thrown at modules/caddytls/matchers.go:382 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of caddyserver/caddy@50e54ee279 (2026-08-15).
Data as JSON: /api/errors/a7fe6345b5450706.
Report an issue: GitHub.