package netutil import "net" var privateNets []*net.IPNet func init() { for _, cidr := range []string{ "127.0.0.0/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "::1/128", "fe80::/10", "fc00::/7", } { _, network, _ := net.ParseCIDR(cidr) privateNets = append(privateNets, network) } } func IsPrivate(host string) bool { if host == "localhost" { return true } return IsPrivateIP(net.ParseIP(host)) } func IsPrivateIP(ip net.IP) bool { if ip == nil { return false } for _, privateNet := range privateNets { if privateNet.Contains(ip) { return true } } return false }