V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
creepersssss
V2EX  ›  宽带症候群

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

  •  
  •   creepersssss · 34 天前 · 1394 次点击
    这是一个创建于 34 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在可以通过 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 分流出口。
    第 1 条附言  ·  30 天前
    已经实现使用 GoBGP+bgpq4+RouterOSv7 BGP 实现国内 ISP 多线分流,电信走电信,联通走......电信走移动也是可行,有空整理一下
    17 条回复    2024-11-12 16:52:50 +08:00
    exiaohao
        1
    exiaohao  
       34 天前   ❤️ 2
    逻辑可行
    但 既然都这样了,为什么不直接开一台 vultr 去直接收当前的全表呢
    creepersssss
        2
    creepersssss  
    OP
       33 天前 via Android
    @exiaohao 要钱,且收全球表多此一举,国内的就好了目的是 ISP 分流不是全球分流
    yyzh
        3
    yyzh  
       33 天前 via Android
    as 表啊...要小心别被教育网那堪称恐怖的 asn 数量塞炸内存...
    creepersssss
        4
    creepersssss  
    OP
       33 天前
    @yyzh 可以只收三大运营商的主要 AS ,毕竟是手动的,现在的问题是如何收( python 应该可以的),如何发( bird 怎么发研究不到)
    Yien
        5
    Yien  
       33 天前 via Android
    GitHub 上有国内的表
    dalaoshu25
        6
    dalaoshu25  
       33 天前
    第一,能不能实际举个例子说说你到底要干啥?
    第二,为了这个目的你都做了些什么前期工作?
    第三,既然已经在用 nchnroutes 脚本和 OSPF 了,那么你有没有亲自动手看一下 nchnroutes 输出的 routes4.conf 文件,了解一下他的格式,和修改什么地方能达到你的需求?
    lcy630409
        7
    lcy630409  
       33 天前
    国内分类 ip cidr 不就行了么
    https://ispip.clang.cn/
    terrancesiu
        8
    terrancesiu  
       33 天前
    既要又要的情况,又不想花钱去收个全表,那就去找个人白嫖下全表把。反正都是 rr 给你
    tywtyw2002
        9
    tywtyw2002  
       33 天前
    gobgp
    julyclyde
        10
    julyclyde  
       33 天前
    @yyzh 教育网?很多 asn 吗?他们的规划是怎样的?
    yyzh
        11
    yyzh  
       33 天前 via Android   ❤️ 1
    jmxct520
        12
    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
        13
    creepersssss  
    OP
       33 天前 via Android
    @jmxct520 首先,这里是讨论,并非伸手党

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

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

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


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


    @tywtyw2002 是的,目前正在了解学习这个东西,还有 cn-routefeed 等
    wm5d8b
        15
    wm5d8b  
       28 天前 via Android
    op 能简单讲讲思路吗,我也想这么玩。
    另外 dns 解析怎么处理?如果解析都走电信,那么解析出的 ip 都是电信 ip ,几乎没有流量走联通。如果解析都走联通同理,只不过少部分站点只有电信 ip 没有联通,还是会走电信
    creepersssss
        16
    creepersssss  
    OP
       28 天前   ❤️ 1
    @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
        17
    leschans  
       7 天前
    “带 AS 号的 BGP 表” 你应该说的是 full table 可以试试从一些 route collector 上拿下来 然后也可以分表处理也可以分 community 处理 接下来就是买更多的 RAM…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1367 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.