紧接之前的帖子
/t/781573 ( bgp peering 可以收全球 internet 路由表的资源),目的就是为了做精细的目的地访问分流。
在 Vultr 收了全表,用 bird 做的 bgp daemon ,做了三网过滤,策略是按照 ip 地址的始发 ASN 做动态过滤:
filter bgp_in_filter {
if source != RTS_BGP then reject; #Deny Non-BGP Route
# ChinaNet #其他三网的过滤也是一样
if bgp_path.last ~ ct_asn then {
bgp_community = -empty-;
bgp_community.add((1,1));
accept;
}
filter bgp_out_filter {
if source != RTS_BGP then reject; #Deny Non-BGP Route
if bgp_path.last ~ ct_asn || bgp_path.last ~ cu_asn || bgp_path.last ~ cm_asn || bgp_path.last ~ noisp_asn || bgp_path.last ~ zero_asn then {
accept;
}
reject;
}
ASN 信息来源于 IPIP
https://whois.ipip.net/countries/CN ,定期手动更新 ASN 。
经过半年多的运行,对于完全始发于特定 ASN 的 IP 地址,以上策略完全工作正常。
目前的次优路径问题是,对于完全始发 ASN 的 IP 地址,如果被宣告于多个 ASN ,则无法实现精准 ASN 过滤。
在我的边界路由器上,国内 ASN 的目的 IP 地址是走的过滤后的明细地址,非国内地址走的是默认路由。如果 IP 地址不在国内 ASN 的范围内,就会出现次优路径了。
比如:114.114.114.114 这个 DNS 的地址,从地址库查询属于 AS174:
https://tools.ipip.net/as.php在我目前的访问策略下,AS174 的 114.114.114.114 就要走默认路由的次优路径,尽管国内三大运营商 AS 均可查询到地址通告:
AS174 已标注 114.114.112.0/21 COGENT-174 - Cogent Communications, US
AS56046 已标注 114.114.112.0/22 CMNET-Jiangsu-AP - China Mobile Communications Corporation, CN
AS4134 已标注 114.114.112.0/21 CHINANET-BACKBONE - No.31,Jin-rong Street, CN
AS4837 已标注 114.114.112.0/21 CHINA169-Backbone - CHINA UNICOM China169 Backbone, CN
我的问题是,是否有通过 BGP AS-PATH 过滤的方法解决这个问题?
或者是不收全表了,直接用 https://asn.bgp.space/ 静态库写入 bird ,再发送给边界路由器。
或者有好的解决方案?不胜赐教~~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/852319
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.