Skip to content

ROA

什么是 ROA?

路由源授权(Route Origination Authorization)详细说明了哪个 AS 被授权公布哪些起源 IP 前缀。ROA 还可能包括前缀长度信息。

什么是 RPKI?

资源公钥基础设施(Resource Public Key Infrastructure)是一个确保路由基础设施安全的框架。是当前用于保护互联网码号资源分配真实性的技术。

什么是 RTR(RPKI-to-Router)?

在 RPKI 系统中,网络运营商通过生成 ROA(Route Origin Authorization)来声明他们有权宣告某些 IP 地址。RTR 协议的作用是将这些 ROA 信息实时传输给路由器。这样,路由器在处理 BGP(边界网关协议)路由宣告时,可以根据这些信息来验证宣告的合法性。

它为路由器提供有关前缀起源的有效性信息:

VALID 有效:路由通告由 ROA 覆盖,且通告 AS 已通过验证 INVALID 无效:路由公告由 ROA 覆盖,且公告 AS 无效(可能被劫持) UNKNOWN 未知:路由公告没有 ROA

你可以使用 goRTR 来搭建 RTR 服务器,我们采用另外一种方式,直接使用 bird2

配置 ROA

/etc/bird/bgp.conf 中添加以下内容(同时删除原来的 template bgp BGP_peers ):

bird
roa4 table dn11_roa4;
protocol static DN11_ROA4 {
    roa4 { table dn11_roa4; };
    include "/etc/bird/dn11_roa_bird2.conf";
}
template bgp BGP_peers {
    local 172.16.3.254 as 4211112243;
    hold time 60;
    keepalive time 20;
    ipv4 {
        table BGP_table;
        import filter{
            if roa_check(dn11_roa4, net, bgp_path.last) !~ [ROA_VALID, ROA_UNKNOWN] then {
                print "[DN11] ROA check failed for ", net, " ASN ", bgp_path.last;
                reject;
            }
            accept;
        };
        export filter {
            if source ~ [RTS_STATIC, RTS_BGP] then accept;
            reject;
        };
    };
}

然后从 registry 下载 roa 文件:

bash
nano /root/update_roa.sh
bash
#!/bin/sh
FILE_URL="https://metadata.dn11.baimeow.cn/dn11_roa_bird2.conf"
DEST_DIR="/etc/bird"
DEST_FILE="${DEST_DIR}/dn11_roa_bird2.conf"
curl -sS -o "${DEST_FILE}" "${FILE_URL}" || {
    echo "Failed to download dn11_roa_bird2"
    exit 1
}
echo "File downloaded and saved to ${DEST_FILE}"

crontab -e 添加以下内容:

bash
5 3 * * * /root/update_roa.sh

5 3 * * * 是每天凌晨 3 点 5 分执行一次,可以自行修改。

Made with ❤️ by DN11 team