本文最后更新于 874 天前,其中的信息可能已经有所发展或是发生改变。
大家好,好久不见呀。
我很久没有更新博文了,这主要是一直不知道写什么,最近我打算配置BGP社区,就突然想起发博文来记录一下。
我的打算是现在只上一个黑洞社区,如果看到路由有这个社区标记,就对这条路由黑洞。对于黑洞的信息可以参见RFC7999
大家玩服务器的时候遭到DDOS通常就会被黑洞,通常这个是全自动的(但是我太菜了只能手写个社区规则这样子)。
我们继续用bird1.6举例
我们首先需要添加一个社区路由
// bird6.conf bird6 main config file
protocol static {
route 2001:db8:ffff:ffff::/48 then blackhole;
}
....
// export.conf export filter config file
if net = 2001:db8:ffff:ffff::/48 {
bgp.community.add ((4242,666));
.....
}
现在有一个添加了黑洞规则的路由,在上游端只需要对这个社区规则进行匹配处理即可。
// export.conf Export Filter
if bgp_community = (4242,666) then reject;
// upstream.conf Upstream export Filter
if bgp_community = (4242,666) then reject;
这样好像看起来是没问题了,但是如果你是上游,同时你是4byte ASN的情况下它会报错,因为塞不下,这时可以使用bgp_large_community,但写法稍有不同。
直接上配置
bgp_large_community.add ((42424242,0,666));
那么上游匹配同理
// import.conf import filter
if bgp_large_community ~ [(42424242,0,666)] then reject;
我感觉还是比较简单的?
留个记录避免踩坑吧,之前想的特别麻烦,结果实际操作下来发现我想的太复杂了。
PS:至于为啥是reject不是blackhole,你自己试试就知道了,blackhole是在static协议里用的。过滤器里只有accept和reject。
实际是差不多的。