VirgilClyne / GetSomeFries

个人独立作品或公共组件库
GNU General Public License v3.0
1.24k stars 90 forks source link

auto-update分支下的ASN规则会匹配Akamai流量,建议排除 #32

Open im-Kalix opened 1 year ago

im-Kalix commented 1 year ago

流量截图 考虑到连www.akamai.com的解析IP都是国内本地ASN的IP,我认为可以把来自Akamai的ASN完全排除出此列表。 拨测解析结果

im-Kalix commented 1 year ago

根据IPIP的查询结果,甚至没有来自中国IP的记录,这是BUG吧?(那个中国国旗是台湾) image

Yuiinars commented 1 year ago

首先,感谢您能帮助发现问题和建议问题,这是好的。

但我并没有错,下面是我的详细说明:

不绝对可信的 WHOIS

但是,我们首先要清楚一点,那就是 WHOIS信息 并不绝对可信

公网BGP全球路由表每秒都在更新路由信息,而WHOIS的信息通常是由资源所有方自行修改的,并不能及时准确地反映实时的路由信息

你可能会被我说得有点晕,但是我可以举一个例子:

你可以在 WHOIS 或者 IP库 中查询这段IP前缀,会发现他们都会把这段IP指向 Antarctica (AQ) 这个地区,也就是南极洲。 但是很显然,截止目前,南极洲上并没有任何机房网络资源,这很奇怪对吧?

答案是 我用自己的 ASN 广播了这个整蛊性质的IP前缀。 而让这段IP的归属地变成“南极洲”的方法很简单,就是去WHOIS服务器中将这段IP前缀的地区代码 自行修改 成了 AQ

解开 IP-ASN.China 规则之谜

让我们把话题回到 Akamai (AS20940) 为什么会被加到 IP-ASN.China 列表:

首先,我们引入几个概念:

IP Prefix (IP前缀): 指一段IP范围,通常带有 CIDR。 例如: 1.0.0.0/24 2a09::/48 AS PATH (AS路径): 顾名思义,就是一个AS自治域到另一个AS自治域所需要经过的AS自治域列表,一个例子: 4809 4134 4837 9808 就是表示 起点 AS4809 到 终点 AS9808 需要经过 AS4134AS4837

我先来大概描述一下 IP-ASN.China 的筛选机制

如果 AS PATH 中包含有 4134(电信) 4837(联通) 9808(移动) ... 
则提取 AS PATH 终点 ASN 至 IP-ASN.China 列表

而下列IP段则是 Akamai (AS20940) 命中规则的关键因素

184.50.92.0/23
184.50.87.0/24
184.50.90.0/23
69.192.8.0/21
23.77.214.0/23
23.13.184.0/21
23.42.176.0/20

这些IP段的 AS PATH 都包含着 AS4837, 则中国联通在境内使用的AS自治域,所以根据上列规则,将会被纳入 IP-ASN.China 列表。

拓展理解

cherinyy commented 1 year ago
这些IP段的 AS PATH 都包含着 AS4837, 则中国联通在境内使用的AS自治域,所以根据上列规则,将会被纳入 IP-ASN.China 列表。

那么既然我们知道这个 ASN 实际上没有接入中国内地网络,甚至知道只有特定的 IP 段可能购买了“中国联通的境内路由优化服务”,能否对其进行细化而将大部分 IP 段排除出列表呢?

Yuiinars commented 1 year ago

@wordlesswind 那么既然我们知道这个 ASN 实际上没有接入中国内地网络,甚至知道只有特定的 IP 段可能购买了“中国联通的境内路由优化服务”,能否对其进行细化而将大部分 IP 段排除出列表呢?

您的想法确实是对的,但是这并不符合 IP-ASN.China 的创建初衷,如果您想要得到一份完全没有任何位于中国大陆外设施的中国境内优化服务的IP范围,您可以前往 https://github.com/misakaio/chnroutes2 获取,他们拥有更多的网络资源和精力维护一个实时地IP范围列表。