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

34 天前
 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 分流出口。
1395 次点击
所在节点    宽带症候群
17 条回复
exiaohao
34 天前
逻辑可行
但 既然都这样了,为什么不直接开一台 vultr 去直接收当前的全表呢
creepersssss
34 天前
@exiaohao 要钱,且收全球表多此一举,国内的就好了目的是 ISP 分流不是全球分流
yyzh
34 天前
as 表啊...要小心别被教育网那堪称恐怖的 asn 数量塞炸内存...
creepersssss
34 天前
@yyzh 可以只收三大运营商的主要 AS ,毕竟是手动的,现在的问题是如何收( python 应该可以的),如何发( bird 怎么发研究不到)
Yien
33 天前
GitHub 上有国内的表
dalaoshu25
33 天前
第一,能不能实际举个例子说说你到底要干啥?
第二,为了这个目的你都做了些什么前期工作?
第三,既然已经在用 nchnroutes 脚本和 OSPF 了,那么你有没有亲自动手看一下 nchnroutes 输出的 routes4.conf 文件,了解一下他的格式,和修改什么地方能达到你的需求?
lcy630409
33 天前
国内分类 ip cidr 不就行了么
https://ispip.clang.cn/
terrancesiu
33 天前
既要又要的情况,又不想花钱去收个全表,那就去找个人白嫖下全表把。反正都是 rr 给你
tywtyw2002
33 天前
gobgp
julyclyde
33 天前
@yyzh 教育网?很多 asn 吗?他们的规划是怎样的?
yyzh
33 天前
jmxct520
33 天前
@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
33 天前
@jmxct520 首先,这里是讨论,并非伸手党

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

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

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


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


@tywtyw2002 是的,目前正在了解学习这个东西,还有 cn-routefeed 等
wm5d8b
28 天前
op 能简单讲讲思路吗,我也想这么玩。
另外 dns 解析怎么处理?如果解析都走电信,那么解析出的 ip 都是电信 ip ,几乎没有流量走联通。如果解析都走联通同理,只不过少部分站点只有电信 ip 没有联通,还是会走电信
creepersssss
28 天前
@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 的,建议不要拉大于两条的线路,再加域名分流处理视频网站等措施
leschans
7 天前
“带 AS 号的 BGP 表” 你应该说的是 full table 可以试试从一些 route collector 上拿下来 然后也可以分表处理也可以分 community 处理 接下来就是买更多的 RAM…

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

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

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

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

© 2021 V2EX