網頁

2023/6/20

Golang 檢查IP是否在CIDR block

Go可使用net.IPNet.Contains檢查IP是否存在CIDR block的範圍。


CIDR block簡單說代表一個網段,例如10.0.0.0/16CIDR block代表10.0.0.0 - 10.0.255.255這個區間的所有共65,536個IP。


例如下面先用net.ParseCIDR把CIDR字串10.0.0.0/16轉為net.IPNet物件後,呼叫net.IPNet.Contains傳入要檢查的IP即可確認這些IP是否屬於CIDR block中的IP。

main.go

package main

import (
    "fmt"
    "net"
)

func main() {

    _, ipnet, err := net.ParseCIDR("10.0.0.0/16")
    if err != nil {
        panic(err)
    }

    fmt.Println(ipnet.Contains(net.ParseIP("10.0.0.0")))     // true
    fmt.Println(ipnet.Contains(net.ParseIP("10.0.0.1")))     // true
    fmt.Println(ipnet.Contains(net.ParseIP("10.0.255.255"))) // true
    fmt.Println(ipnet.Contains(net.ParseIP("10.1.0.0")))     // false
}


沒有留言:

張貼留言