[CentOS7]使用Bird广播IPv6地址

发布于 2019-03-15  692 次阅读


应一位朋友的要求写下此文(详情请点这

本文以CentOS7,Bird为例进行(如果你使用其他发行版,关于软件包管理的命令和配置文件路径(可能)需要改变,比如你使用Ubuntu时应为:apt-get install bird)(在Ubuntu下安装bird会自动安装bird6)

需要准备

一个支持BGP的主机商(和一个他们的小鸡(注意,必须有IPv4地址才可以),这项视主机商的要求不同而不同,本文以Vultr为例

一段IPv6地址(可以广播的最小的IP段是/48)

一个ASN(如果你和我一样使用Vultr也可以没有,Vultr会给你分配一个私有AS)

 

开始配置:

首先安装Bird。

yum install bird bird6

安装好以后我们编辑配置文件。

路径在: /etc/bird6.conf

推荐删除掉文件内所有的示例内容,不然到时候乱七八糟的你维护起来比较头疼。

下面直接是文件内容


router id [你实例的IPv4地址] protocol bgp vultr { local as 你的asn(开头不带as); source address 实例的ipv6; import none; export all; graceful restart on; multihop 2; neighbor 2001:19f0:ffff::1 as 64515; password "在申请广播的时候设置的bgp密码"; }

然后在protocol device那行的上面添加如下配置

protocol static
{
    route  你要广播的IP段 via 你实例的IPv6地址;
}

然后保存配置文件重启 bird6(我们只广播了 ipv6 所以只需要启动 bird6 即可)

systemctl restart bird6

到这里广播就算完成了, 下面我们要为当前实例创建一个虚拟网卡并设置一个 ip

ip link add dev dummy1 type dummy
ip link set dummy1 up
ip addr add dev dummy1 2001:2333:2333::1/128

然后在 brid6.conf 中加入如下配置

protocol direct
{
    interface "dummy*";
    import all;
}

然后再次重启或直接重载bird6

systemctl reload bird6

这样 bird 将查询所有 dummy 开头的网卡的 ip 并宣告这些 ip

然后可以通过

birdc6 show route

查看广播状况
也可以通过上面为虚拟网卡添加的 ipv6 链接实例了

现在你是不是发现好像少了什么?对,之前说的protocol device 在哪?

那么现在我告诉你,你其实还得在/etc/bird6.conf里加一行

protocol device {
scan time 15;
}

注意,这行要加在protocol bgp vultr 这一段前面。

这个时候你需要再次重启或重载你的bird6,这样就彻底搞好了~

(注意:你如果和我一样选择Vultr,你需要发工单让他们为你开通BGP。官方教程在这里


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。