这篇文章算记录向,当然也有教学向用途,请酌情阅读。
本文中所有[]和<>在实际应用到配置文件的时候不需要保留!
本文随时改进。现处版本:3。
1 | define OWNAS = [你的AS号,不带AS前缀]; |
众所周知,咱最近几天沉迷于DN42网络无法自拔,Peer数量也是稳步增加。
但是这里有个问题,我一直没有把内网搞好。
前期一边继续扩展Peer一边尝试RouteReflector
结果RR死也配置不了,还造成了我心态崩掉直接重装所有系统的悲剧:

此条在DN42 Unofficial Telegram有记录,如果有看到的可以评论区说一下看到的感受)
于是乎就和AS4242421817进行了深入的意见交换,

最终选定了babeld+iBGP FullMesh的组合方式
在本文开始之前,我想送给各位几句:
Peer和内网建设一定要并行!一定!一定!
莫相信某些人说的先把自己网路建设好再来!没有别人的路由表怎么设置都是摸瞎!
不要学我!不要学我!不!要!学!我!
我也是刚进入DN42的新人,难免有考虑不周,如有错误请直接指出!
babeld的设置
机器间可以不FullMesh,IGP会帮你的。
在正式跳入这个环节之前,先介绍一下几种IGP

对了如果你要喊“iBGP + eBGP Confederation YES”请立刻滚到下一章节
好了,继续。
在这部分开始之前,请检查好你是否已经在各机器间搭建好了WireGuard,保证各机器间能间接联通。
以下配置文件由刚刚喊过“iBGP + eBGP Confederation YES”的 AS4242423743 写成,至于这位会不会礼貌我另说(
1 | ipv6-subtrees true |
以下内容请酌情结合babeld(8) — babeld — Debian testing — Debian Manpages理解
1 | ipv6-subtrees true |
分别是随机Ronter-ID和原生IPv6转发的设置,其实并不重要。
1 | interface <> type tunnel faraway true max-rtt-penalty 128 |
上面的<>中填入你搭建的WireGuard的端口,如果你忘了的话,赶紧的ip a
type选项用来指定这一条连线的类型,虽然默认自行检测,但是还是建议指定为隧道(tunnel)类型
其他内容现在也并不重要,如果好奇可以继续去Manpage阅读。
1 | in ip <OWNNET> allow |
此段落用于过滤babeld应该使用的路由表。
在本例当中,很明显,我们只需要babeld去处理我们网内的路由,
所以我们用in和redistribute指定babeld管理我们拥有段的路由。
但实际上“管理”只是一个总称,实际上babeld做的事情很多,这个也可以到Manpage阅读。
将这一段内容部署在每一台内网的机器的/etc/babeld.conf里面,然后启动babeld服务。
喝口茶,然后通过ip route get [任何接入这个内网的服务器的DN42 IP],查看babeld是否生效。

这是没有上线的我家里用来登录DN42服务的N4节点,只有和N1的连接,但是也得到了到N2的路由表。
到现在,你应该可以在任何一个节点ping 这个网路上其他节点的DN42 IP/IPv6 了。我们继续。
bird2
上鸟!
我们以 DN42给出的Bird示例文档为基础改动配置文件。
以下配置文件,介绍由 AS4242421817 写成,本人进行了部分整理
增加部分:
1 | protocol direct { |
增删部分
1 | protocol kernel { |
简单来说,这一些增删
定义了
dnnodes这一IGP协议模板将与原来和Kernel打交道的地方加上了
learn;,以将babeld帮我们寻好的路写到master表里面以供IGP使用。
在写出路由表的时候我们滤掉了我们IP段的内容,以避免bird包含内网信息,传到对端时和babeld打架导致babeld实例崩掉。
在没有正确配置的情况下随意开启对Kernel路由表的learn十分危险!
这有可能造成路由劫持!
虽然DN42内ROA已经基本覆盖但是还是小心为上!
一些具体实例可见 《如何引爆 DN42 网络(2020-08-28 更新)》
而配置与各FullMesh时只需要:
1 | protocol bgp [] from dnnodes { |
继承模板,填上远端,用自己AS开IGP,然后就可以birdc c了
再喝一口茶,用birdc s r for [任何一个peer的DN42 IP/IPv6] all

恭喜你!你已经完成了基于babeld和iBGP FullMesh的DN42 内网搭建。
一些下一步建议
日下部 詩, [2022-02-03 6:12 PM]
接下來還有個東西要弄,內網metrics日下部 詩, [2022-02-03 6:12 PM]
假如你同時香港和usa都和我peer日下部 詩, [2022-02-03 6:12 PM]
廣州節點要知道香港比較近,usa比較遠日下部 詩, [2022-02-03 6:13 PM]
加拿大節點則是要知道usa比較近,hk比較遠日下部 詩, [2022-02-03 6:13 PM]
babeld知道距離關係,但是bird不知道日下部 詩, [2022-02-03 6:14 PM]
有幾個方法,直接在bird config裡面寫上cost日下部 詩, [2022-02-03 6:17 PM]
首先babeld好像要打開
reflect-kernel-metric true日下部 詩, [2022-02-03 6:18 PM]
讓babeld把cost寫入kernelkernel路由表有一個metric屬性
kernel import filter補上
igp_metric = krt_metric;
(by AS4242421817)
祝你有一个美好的DN42旅途!
附录:《ufw会挡babeld这件事》
_Eden Johnson, [2022-02-09 3:02 AM]
woc我似乎发现问题可能出现的地方了_Eden Johnson, [2022-02-09 3:02 AM]
我换掉RU依然没有反应日下部 詩, [2022-02-09 3:02 AM]
[ 😮 Sticker ]_Eden Johnson, [2022-02-09 3:02 AM]
然后我一看_Eden Johnson, [2022-02-09 3:02 AM]
好家伙_Eden Johnson, [2022-02-09 3:02 AM]
谢谢你Vultr_Eden Johnson, [2022-02-09 3:02 AM]
你他妈给我开ufw我谢谢你_Eden Johnson, [2022-02-09 3:02 AM]
[ 🌿 Sticker ]

Waline是个好东西,在我看来。
既继承了Valine的操作方式又有后台还能实现通知,所以只留了Waline。