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

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

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

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

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

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


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


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