您的位置:首页 > 编程语言 > Go语言

过滤内网IP—IPv4

2018-05-22 14:59 239 查看
检测输入的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)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Go IP