带 AS 号的 BGP 表可不可以通过 IPIP/APNIC 用脚本收集然后用 bird 广播?可以自己在内网广播实现 ISP 分流吗?

2024 年 10 月 17 日
 creepersssss
现在可以通过 nchnroutes 与 OSPF 实现分流,但想不出如何实现国内 ISP 的分流,因为打开了 OSPF 的 ip tables 里的网关都是指向提供 OSPF 的机器而不是各个以太网口,这也不是 OSPF 功能的初衷

题主有些问题想请教下,
1.带 AS 号的 BGP 表可不可以通过 IPIP/APNIC 用脚本收集? IPIP/APNIC 网站上都是贴出来的,虽然有延迟,但是应该能够用 python 收集(吧)?已知 OSPF 分流可以通过单纯收集 IP 段实现。

2.bird 可以导入自己收集的 BGP 表实现 IP 、ASN 一一对应并广播出去吗,亦即实现自己人造只包含国内 ISP 的 BGP 表? OSPF 可以导入并广播 IP 段,但只能令 IP 段指向 distance 距离最短的机器(例如,OSPF 宣告机)而不是指定网口,没办法直接进行 ISP 分流出口。
3498 次点击
所在节点    宽带症候群
17 条回复
exiaohao
2024 年 10 月 17 日
逻辑可行
但 既然都这样了,为什么不直接开一台 vultr 去直接收当前的全表呢
creepersssss
2024 年 10 月 17 日
@exiaohao 要钱,且收全球表多此一举,国内的就好了目的是 ISP 分流不是全球分流
yyzh
2024 年 10 月 17 日
as 表啊...要小心别被教育网那堪称恐怖的 asn 数量塞炸内存...
creepersssss
2024 年 10 月 17 日
@yyzh 可以只收三大运营商的主要 AS ,毕竟是手动的,现在的问题是如何收( python 应该可以的),如何发( bird 怎么发研究不到)
Yien
2024 年 10 月 17 日
GitHub 上有国内的表
dalaoshu25
2024 年 10 月 17 日
第一,能不能实际举个例子说说你到底要干啥?
第二,为了这个目的你都做了些什么前期工作?
第三,既然已经在用 nchnroutes 脚本和 OSPF 了,那么你有没有亲自动手看一下 nchnroutes 输出的 routes4.conf 文件,了解一下他的格式,和修改什么地方能达到你的需求?
chengran630
2024 年 10 月 17 日
国内分类 ip cidr 不就行了么
https://ispip.clang.cn/
terrancesiu
2024 年 10 月 17 日
既要又要的情况,又不想花钱去收个全表,那就去找个人白嫖下全表把。反正都是 rr 给你
tywtyw2002
2024 年 10 月 17 日
gobgp
julyclyde
2024 年 10 月 17 日
@yyzh 教育网?很多 asn 吗?他们的规划是怎样的?
yyzh
2024 年 10 月 17 日
TonyLab
2024 年 10 月 17 日
@creepersssss 先建立 bgp 链接,利用 python 筛选出来中国 asn 列表,拉去 asn 列表参考: https://bgp.he.net/
ipip.net ,里面有中国 ASN 大全,这一步利用 bird + python ,就完成了中国 asn 列表的获取,下游从这个 bird 里面拉到的都是中国的 IP ,下游可以用 ros bgp 建立 session, bgp filter 再筛选下三大运营商的 asn ,指定各自的网口,分流就好了。做完以后,你会发现根据 isp 分流,没有鸡儿用,除了装逼,没任何鸟用。思路大概如此,脚本就别想了,自己写吧。伸手党并不好!
creepersssss
2024 年 10 月 18 日
@jmxct520 首先,这里是讨论,并非伸手党

其次,你的说法和我说的一致,你只是重复了我说的话

再次,我会编程会写 python ,编程不会成为我的弱项

最后,我们讨论的是 bird 广播自定义 ASN 的问题,我怀疑你是机器人
creepersssss
2024 年 10 月 18 日
@dalaoshu25 1.实现 ISP 多线分流
2.学习 bird 但似乎没有发现自行广播自定义 BGP 的方法
3.routes4.conf 只有 IP-CIDR 和 OSPF 宣告机自己的网关,了解过,可能是我不会


@lcy630409 路由协议感觉维护端点机更可靠,机器挂掉也只是走默认路由


@tywtyw2002 是的,目前正在了解学习这个东西,还有 cn-routefeed 等
wm5d8b
2024 年 10 月 22 日
op 能简单讲讲思路吗,我也想这么玩。
另外 dns 解析怎么处理?如果解析都走电信,那么解析出的 ip 都是电信 ip ,几乎没有流量走联通。如果解析都走联通同理,只不过少部分站点只有电信 ip 没有联通,还是会走电信
creepersssss
2024 年 10 月 23 日
@wm5d8b GoBGP 广播+bgpq4 生成带 AS 信息的 IP-CIDR+RouterOSv7 BGP 分流,太忙了具体还没空整理,不过是这个思路,先复制几个用过的命令行参考一下,ros 的私有 AS:65535 ,BGP 广播机私有的 AS:65534
sudo ./gobgpd
bgpq4 -F "./gobgp global rib add -a ipv4 %n/%l community 65535:4134\n" as4134 > shell.sh && ./shell.sh

/routing bgp connection set gobgp address-families=ip as=65534 disabled=no input.filter=bgp-speaker-export local.address=192.168.x.1 .role=ebgp multihop=yes name=gobgp remote.address=192.168.2.x/32 .as=65535 router-id=192.168.x.1 routing-table=main

然后建立 65535:4134 等的 community set ,配合 ros 的路由过滤器 bgp-speaker-export:
if (dst-len == 0) {
reject
}

set distance 50;

if (bgp-communities equal-list ASN-CU) {
set gw %pppoe-cu;
} else {
if (bgp-communities equal-list ASN-CT) {
set gw %pppoe-ct;
} else {
if (bgp-communities equal-list ASN-CMCC) {
set gw %pppoe-ct;
} else {
set gw %pppoe-cu;
}
}
}

accept;



DNS 解析确实是一个难题,用公共 DNS 也难保证能连到哪个 ISP ,想连到 ISP 的劫持 CDN 还要将 DNS 设置为 ISP 的,建议不要拉大于两条的线路,再加域名分流处理视频网站等措施
scsb
2024 年 11 月 12 日
“带 AS 号的 BGP 表” 你应该说的是 full table 可以试试从一些 route collector 上拿下来 然后也可以分表处理也可以分 community 处理 接下来就是买更多的 RAM…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1080998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX