如何成为一个ONE MAN ISP (3)

教程 BGP

本章是尝试在Vultr上从0开始搭建单点BGP网络

BIRD的操作手册在BIRD2用户指南查看,请自备一定耐心和英语阅读能力

前置假设:

  • 你有一台Vultr的机器,IPv6是2001:19f0:4401:bb0:5400:1234:1234:1234,IPv4是31.41.59.26,你的AS为AS114514
  • 你自己的IP段为2001:470:eb80::/44

Bird配置编写

首先BIRD需要一个router ID,通常是这台机器的IP地址,你也可以自定义这个ID,但是不能和你网内的其他机器重复

router id 31.41.59.26;

然后我们需要三个必备协议:direct,device,kernel

protocol device {
        scan time 10;
}

通常情况下这种device协议配置可以满足所有要求

protocol direct {
        ipv6;
        interface "lo","RTR*";
}

direct协议能让bird获取网卡上的IP,因为你不是真正的运营商,会有像eth0这样物理网卡上不是你IP的网卡,所以你不能写interface "*";这样会获取所有网卡上的IP,从而导致你漏油

protocol kernel {
        scan time 10;
        ipv6 {
                import none;
                export filter {
                    krt_prefsrc = 2001:470:eb80::1;
                    accept;
                };
        };
        metric 2000;
}

kernel协议能让bird向内核导出路由,通常是import none export all,你也可以根据bgp_community来进行filter,文中krt_prefsrc是定义了bird向内核导出时设置的源IP,如果没有这一句,在通过你自己网络访问互联网的时候,可能会使用隧道两端的IP,这是我们不想看到的

然后我们还需要一个static协议,像这样

protocol static{
    ipv6;
}

static协议不仅定义了某个段的IP的静态路由,还可以用来广播你自己的前缀

protocol static announce6{
    ipv6;
    route 2001:470:eb80::/44 reject; #通过创造一个unreachable的前缀来广播你的IP段
    route 2001:470:eb80::/48 reject; #广播/44下面的/48
    route 2001:19f0:ffff::1/128 via fe80::fc00:3ff:fe06:93cc%eth0; 
    #将Vultr的BGP网关默认路由到你eth0的本地IP上
}

做完这些后就可以准备与Vultr连接了,通常Vultr给V6的对端是一个私有AS,所以在导入的时候要删掉并prepend vultr真正的as

protocol bgp VULTR_V6
{

local 2001:19f0:4401:bb0:5400:1234:1234:1234 as 114514;
ipv6{
    import filter{
            bgp_path.delete([64512..131071, 4200000000..4294967295]); #删掉私有AS
            bgp_path.prepend(20473); #Prepend上Vultr真正的AS
            if (net.len > 48) then reject; #大于/48的前缀拒绝
            accept; #剩下的接收
        };
    export filter{
            if (net.len > 48) then reject; #大于/48的前缀拒绝
            if net ~ [2001:470:eb80::/44] then accept; #如果是你自己的前缀就放行
            reject; #剩下的拒绝
        };
next hop self;
};
graceful restart on;
multihop 2;
neighbor 2001:19f0:ffff::1 as 64515;
password "你的密码";
}

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
This work is licensed under a CC BY-SA 4.0 International License .

本文链接:https://blog.bairuo.top/66

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空
隐藏