应一位朋友的要求写下此文(详情请点这)
本文以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。官方教程在这里)
看上去步骤似乎很简单
对。