首先你需要:

  1. 一家可以让你跑 BGP 的服务商,这边推荐这两家 VultrMisaka
  2. 一段有RPKI+IRR的 IPv4 , IPv6我建议你别跑Anycast了,调起来头大
  3. 一个自己的ASN

安装bird:

系统我推荐使用debian 10,安装bird 只需要

apt install bird -y

设置开机自启动

systemctl enable bird

修改bird 配置

这边贴一个配置文件供参考

#定义 router ID
router id 100.127.70.25; 
#定义自有网络,这是filter policy
function is_own_network() {
  return net ~ [
    10.0.0.0/22{22,24}     # Anycast DNS
  ];
}

# The Kernel protocol is not a real routing protocol. Instead of communicating
# with other routers in the network, it performs synchronization of BIRD's
# routing tables with the OS kernel.
protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

# The Device protocol is not a real routing protocol. It doesn't generate any
# routes and it only serves as a module for getting information about network
# interfaces from the kernel. 
protocol device {
        scan time 60;
}

protocol static static4 {
  route 10.0.0.0/24 reject;
}

protocol bgp vultr
{
    # substitute with your AS or Vultr's private AS
    local as xxxx;
    import all;
    export filter {
    if is_own_network() && source ~ [RTS_STATIC, RTS_BGP] then {
      accept;
    }
    reject;
    };
    graceful restart on;
    multihop 2;
    neighbor 169.254.169.254 as 64515;
    password "";
}

上面的配置文件我简单讲一下几个点,Vultr官方给出的配置文件是export all,其实这种对于网络架构来说非常不负责任,你这样100%会导致路由侧漏从而引起BGP Session被掐断。所以我写了一个定义来确保不会漏别人的路由给上游。

如果你想要使用一些community(其实在Anycast中是必须要的)来修改路径的话,你可以在 protocol static static4 下改,可以参考下图:

route 10.0.0.0/24 reject {
    bgp_community.add((48024,666));
    bgp_community.add((48024,6666));

注意一下,一行一个,并且和cisco不一样的地方是他是用,而不是:的。

community也可以定义,可以自己去研究下


南ことり の 小窝原创文章,转载请注明来自:Bird 构建自己的 Anycast 网络