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})