修复CMIN2识别的问题

This commit is contained in:
spiritlhl 2024-05-21 16:15:44 +00:00
parent 36d4abf98b
commit 7bc4772536
3 changed files with 10 additions and 45 deletions

View File

@ -2,9 +2,10 @@ package backtrace
import ( import (
"fmt" "fmt"
. "github.com/oneclickvirt/backtrace/defaultset"
"net" "net"
"strings" "strings"
. "github.com/oneclickvirt/backtrace/defaultset"
) )
type Result struct { type Result struct {
@ -14,7 +15,7 @@ type Result struct {
var ( var (
ips = []string{ ips = []string{
// "219.141.136.12", "202.106.50.1", // "219.141.136.12", "202.106.50.1",
"219.141.140.10", "202.106.195.68", "221.179.155.161", "219.141.140.10", "202.106.195.68", "221.179.155.161",
"202.96.209.133", "210.22.97.1", "211.136.112.200", "202.96.209.133", "210.22.97.1", "211.136.112.200",
"58.60.188.222", "210.21.196.6", "120.196.165.24", "58.60.188.222", "210.21.196.6", "120.196.165.24",
@ -53,7 +54,7 @@ func removeDuplicates(elements []string) []string {
return result // 返回去重后的结果切片 return result // 返回去重后的结果切片
} }
func trace(ch chan Result, i int, cmin2 []string) { func trace(ch chan Result, i int) {
hops, err := Trace(net.ParseIP(ips[i])) hops, err := Trace(net.ParseIP(ips[i]))
if err != nil { if err != nil {
s := fmt.Sprintf("%v %-15s %v", names[i], ips[i], err) s := fmt.Sprintf("%v %-15s %v", names[i], ips[i], err)
@ -63,7 +64,7 @@ func trace(ch chan Result, i int, cmin2 []string) {
var asns []string var asns []string
for _, h := range hops { for _, h := range hops {
for _, n := range h.Nodes { for _, n := range h.Nodes {
asn := ipAsn(n.IP.String(), cmin2) asn := ipAsn(n.IP.String())
if asn != "" { if asn != "" {
asns = append(asns, asn) asns = append(asns, asn)
} }
@ -132,7 +133,7 @@ func trace(ch chan Result, i int, cmin2 []string) {
} }
} }
func ipAsn(ip string, cmin2 []string) string { func ipAsn(ip string) string {
switch { switch {
case strings.HasPrefix(ip, "59.43"): case strings.HasPrefix(ip, "59.43"):
return "AS4809" return "AS4809"
@ -142,16 +143,9 @@ func ipAsn(ip string, cmin2 []string) string {
return "AS9929" return "AS9929"
case strings.HasPrefix(ip, "219.158"): case strings.HasPrefix(ip, "219.158"):
return "AS4837" return "AS4837"
case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || case strings.HasPrefix(ip, "223.120.19") || strings.HasPrefix(ip, "223.120.17") || strings.HasPrefix(ip, "223.120.16"):
strings.HasPrefix(ip, "223.120"): return "AS58807"
for _, prefix := range cmin2 { case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || strings.HasPrefix(ip, "223.120") || strings.HasPrefix(ip, "223.121"):
if strings.HasPrefix(ip, prefix) {
return "AS58807"
}
}
return "AS58453"
case strings.HasPrefix(ip, "103.11.109") || strings.HasPrefix(ip, "45.204.69") ||
strings.HasPrefix(ip, "223.121"):
return "AS58453" return "AS58453"
default: default:
return "" return ""

View File

@ -22,36 +22,7 @@ func BackTrace() {
s [12]string // 对应 ips 目标地址数量 s [12]string // 对应 ips 目标地址数量
c = make(chan Result) c = make(chan Result)
t = time.After(time.Second * 10) t = time.After(time.Second * 10)
cmin2 = []string{
// 以下均为 /24 地址
"223.118.32",
"223.119.32", "223.119.34", "223.119.35", "223.119.36", "223.119.37", "223.119.100", "223.119.253",
"223.120.165"}
// 其他区间的地址
prefixes = []string{
"223.119.8.0/21",
"223.120.128.0/17",
"223.120.134/23",
"223.120.136/23",
"223.120.138/23",
"223.120.154/23",
"223.120.158/23",
"223.120.164/22",
"223.120.168/22",
"223.120.172/22",
"223.120.174/23",
"223.120.184/22",
"223.120.188/22",
"223.120.192/23",
"223.120.200/23",
"223.120.210/23",
"223.120.212/23",
}
) )
// 生成CMIN2的IPV4前缀地址
for _, prefix := range prefixes {
cmin2 = append(cmin2, GeneratePrefixList(prefix)...)
}
rsp, err := http.Get("http://ipinfo.io") rsp, err := http.Get("http://ipinfo.io")
if err != nil { if err != nil {
fmt.Errorf("Get ip info err %v \n", err.Error()) fmt.Errorf("Get ip info err %v \n", err.Error())
@ -66,7 +37,7 @@ func BackTrace() {
} }
} }
for i := range ips { for i := range ips {
go trace(c, i, cmin2) go trace(c, i)
} }
loop: loop:
for range s { for range s {