package modules import ( "fmt" "net" ) type IPInformation struct { IP string IsPrivate bool PrivateCIDR string } func GetIPInformation(ip string) IPInformation { ipInfo := IPInformation{ IP: ip, IsPrivate: false, PrivateCIDR: "", } cidrs := []*net.IPNet{ parseCIDR("10.0.0.0/8"), parseCIDR("172.16.0.0/12"), parseCIDR("192.168.0.0/16"), parseCIDR("127.0.0.1/16"), } ipAddr := net.ParseIP(ip) if ipAddr == nil { fmt.Println("无效的IP地址") return ipInfo } for _, cidr := range cidrs { if cidr.Contains(ipAddr) { ipInfo.IsPrivate = true ipInfo.PrivateCIDR = cidr.String() break } } return ipInfo } func parseCIDR(cidr string) *net.IPNet { _, ipNet, err := net.ParseCIDR(cidr) if err != nil { panic(err) } return ipNet }