# 前言
鉴于本文被 DN11 群友评价为“误人子弟”,因此如果你想学习更好的配置流程,请向 DN11 群友请教。本文仅作为个人实践出来的配置方案分享,旨在和好友分享一个快速的配置流程,使其能够快速加入 DN11 而不是把时间花在研读晦涩、残缺的各类文档。
DN11 全称为 “11 号去中心化网络”(Decentralized Network 11),由杭州电子科技大学11号宿舍楼的同学们发起的实验性的、去中心化的 BGP 网络。 来自 https://dn11.top/
本文主要包含 Linux 下快速接入 DN11 情况下 系统、Bird2 与 WireGuard 的配置,下文中的命令默认您以 root 身份执行。
# 信息注册
在加入 DN11 之前,你需要在 注册中心 完成注册,由于本篇重点不在于注册,因此请参照 repo 中文档指示完成注册。
# 系统配置
在 DN11 网络中,没有绝对意义上的客户端,每个人都可能是他人的路由器,经常会出现数据包的来源网卡与回复使用的网卡不一致的情况,因此需要打开 Linux 内核的数据包转发功能。
打开 Linux 内核的数据包转发功能,即 ip_forwarding。 关闭 Linux 内核 rp_filter 的严格模式。
如果有帮助配置 iptables 防火墙的工具如 ufw 等请自行关闭。
# WireGuard 配置
安装 wireguard-tools:
生成 WireGuard 私/公钥:
该命令执行完成后,上面一行是公钥。下面一行是私钥。
然后就是尝试与别人/自己建立对等连接,根据下面的配置模版在 /etc/wireguard/
目录(如文件夹不存在请自行创建)下新建 WireGuard 配置文件,如“atomSh.conf”,使用 <> 包裹的内容均需要自行替换。
注意不要擅自改动配置中的Table = off
,因为配置不当将会导致设备完全断网。
其中的三条 PostUp 命令在 DN11 通常只需要解除注释 # PostUp = /sbin/ip addr add dev %i <LocalIPv4>/32 peer <PeerIPv4>/32
并修改 <LocalIPv4>
和 <PeerIPv4>
。在经过反复配置对等链接后,我推荐使用笔记软件来登记 IP 地址分配。(飞书的多维表格帮了大忙)我个人喜欢给隧道两端单独分配 IP 地址,同时也建议你这么做。
这里我新建的配置文件名为:atomSh.conf
,这样使用 wg-quick 命令启动后,接口名称就是 atomSh
(这样在我的 Bird 的 OSPF 配置中,Bird 就能识别到接口了)
配置完成后执行:
如果你是在组建内网的话,依次同理在另一个设备上进行设置。此外,如果当前设备没有公网IP,请别忘记取消注释 PersistentKeepalive 设置。
配置完成后
# Bird2配置
本文使用 Bird2 进行路由管理,因此先进行 Bird2 的安装
Linux 中 Bird2 配置默认位于 /etc/bird/
文件夹下。bird默认的配置文件很全,但是用不太上,你可以选择删除或者拷贝至其他地方。
然后我们新建一个 variable.conf 用于存储您的 ISP 信息,使用 <> 包裹的内容均需要自行替换。
内容如下:
示例:(这是我的 ISP 信息,请勿直接复制使用)
新建一个 bird.conf
内容如下:
随后建立 include 文件夹(我的个人习惯)
# 内网治理
配置内网 OSPF,使用 <> 包裹的内容均需要自行替换。(如果你只有个节点接入 DN11 同时也不关心内网,可以暂时不配置 OSPF)
areaID 不要和其他人冲,比如我使用我申请的网段 10.28.0.0 作为 areaID。然后我 WireGuard 的接口名称统一使用 atom
作为开头,因此我这里直接设置匹配以 atom 开头的接口作为端到端的 OSPF 接口。
这里我们在回环口 lo 配置了 bcast 是为了将回环口的 ip 广播到 OSPF,不用担心 127.0.0.1 这个 IP 进路由表,bird 自己会过滤掉,也可以手动写 filter 过滤,这样显式一点。
对于这个 bcast,如果你想把这台机器的内网广播到 OSPF 的话,加一个把 lo 改成 br-lan 这种接口的配置就可以了,此时你的路由设备在 OSPF 的 IP 就是你 br-lan 接口上的 IP;如果你是云服务器,下面压根没有子网,这种时候建议手动在 lo 接口配置一个 ip 并通过广播 lo 接口的 ip 的方式把你的设备广播在你的OSPF里。
比如我的:
当然使用命令临时增加 IP 是无法持久化的,不同 Linux 发行版的配置方式不同,下面展示我自己使用的 netplan 的配置文件。
然后配置节点的 iBGP(如果你内网有多个节点想接入 DN11 或想访问 DN11)
模版如下,使用 <> 包裹的内容均需要自行替换。
比如我的配置(我的内网内除了当前配置的节点,还有另外两个节点,因此需要在节点间两两建立iBGP):
# ISP 间 BGP 会话建立
然后配置 ISP 间的 eBGP
模版如下,使用 <> 包裹的内容均需要自行替换。
举个例子:
配置完成刷新配置:
# 参考链接
https://baimeow.cn/posts/dn11/configureibgp/
https://blog.baoshuo.ren/post/dn42-network/
https://miaotony.xyz/2021/03/25/Server_DN42/
https://lantian.pub/article/modify-website/dn42-experimental-network-2020.lantian/