From 7212110ddee89864cb87e453381d17a120a3f249 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Thu, 23 Sep 2021 19:16:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20IPv6=20=E6=B5=8B=E9=80=9F?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=88=E6=94=AF=E6=8C=81=20/128=20?= =?UTF-8?q?=E5=AD=90=E7=BD=91=E6=8E=A9=E7=A0=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IPRangeLoader.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/IPRangeLoader.go b/IPRangeLoader.go index 36500dc..1d6899e 100644 --- a/IPRangeLoader.go +++ b/IPRangeLoader.go @@ -64,8 +64,12 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { scanner.Split(bufio.ScanLines) for scanner.Scan() { IPString := scanner.Text() - if !strings.Contains(IPString, "/") { // 如果不含有 / 则代表不是 IP 段,而是一个单独的 IP,因此需要加上 /32 子网掩码 - IPString += "/32" + if !strings.Contains(IPString, "/") { // 如果不含有 / 则代表不是 IP 段,而是一个单独的 IP,因此需要加上 /32 /128 子网掩码 + if ipv6Mode { + IPString += "/128" + } else { + IPString += "/32" + } } firstIP, IPRange, err := net.ParseCIDR(IPString) //fmt.Println(firstIP) @@ -104,8 +108,10 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { for IPRange.Contains(firstIP) { //fmt.Println(firstIP) //fmt.Println(firstIP[0], firstIP[1], firstIP[2], firstIP[3], firstIP[4], firstIP[5], firstIP[6], firstIP[7], firstIP[8], firstIP[9], firstIP[10], firstIP[11], firstIP[12], firstIP[13], firstIP[14], firstIP[15]) - firstIP[15] = randipEndWith(255) // 随机 IP 的最后一段 - firstIP[14] = randipEndWith(255) // 随机 IP 的最后一段 + if !strings.Contains(IPString, "/128") { + firstIP[15] = randipEndWith(255) // 随机 IP 的最后一段 + firstIP[14] = randipEndWith(255) // 随机 IP 的最后一段 + } firstIPCopy := make([]byte, len(firstIP)) copy(firstIPCopy, firstIP) firstIPs = append(firstIPs, net.IPAddr{IP: firstIPCopy})