检测输入的ip(适用于IPv4),内网ip返回false,外网ip返回true。
参考: https://en.wikipedia.org/wiki/Reserved_IP_addresses
package main import ( "net" "fmt" ) func IsReservedIP(ip net.IP) bool { if ip == nil { return true } if ip4 := ip.To4(); ip4 != nil { switch ip4[0] { case 10: return true case 100: return ip4[1] >= 64 && ip4[1] <= 127 case 127: return true case 169: return ip4[1] == 254 case 172: return ip4[1] >= 16 && ip4[1] <= 31 case 192: switch ip4[1] { case 0: switch ip4[2] { case 0, 2: return true } case 18, 19: return true case 51: return ip4[2] == 100 case 88: return ip4[2] == 99 case 168: return true } case 203: return ip4[1] == 0 && ip4[2] == 113 case 224: return true case 240: return true } } return false } func main() { ip := "127.0.0.1" result := IsReservedIP(net.ParseIP(ip)) fmt.Println(result) }