DN42 全称 Decentralized Network 42(42 号去中心网络),它的目标是模拟现实中的BGP互联网,目前它使用了许许多多在互联网上的技术。

在这里你需要像在真实的互联网中一样扮演ISP,申请ASN和IP段,使用BGP广播它们,与其他用户建立连接

需要注意的是你得准备一个Linux设备,如果你像我一样PGP签名用的是yubikey,那么这个Linux设备就必须在本地;如果使用的是软件加解密就可以直接用服务器了

这里需要Linux的原因是Windows文件名不能有冒号,而IPv6的地址中间有冒号,所以必须得用Linux(MacOS大概也可以?)

0x00 准备阶段

  • 然后得去 https://git.dn42.dev/ 注册一个账号,然后 fork 一下 这个 仓库
  • 接下来创建一个名为 你的用户名-日期/register 的分支,例如 theresa-20220522/register

0x01 开始注册

mntner

data/mntner 文件夹中创建 用户名-mnt,内容大致如下

1
2
3
4
5
6
7
mntner:             用户名(记得大写)-MNT
admin-c: 用户名(记得大写)-DN42
tech-c: 用户名(记得大写)-DN42
mnt-by: 用户名(记得大写)-MNT
source: DN42
auth: pgp-fingerprint PGP指纹
auth: ssh-rsa SSH公钥

person

data/person 文件夹中创建 用户名-DN42,内容大致如下

1
2
3
4
5
6
person:             昵称
e-mail: 邮箱
contact: 其他联系方式,可以选,也可以写多个
nic-hdl: 用户名-DN42
mnt-by: 用户名-MNT
source: DN42

ASN

data/aut-num 文件夹中创建一个文件名为ASN的文件

然后你可以在 这里 找到可用的ASN

文件内容大致如下

1
2
3
4
5
6
7
aut-num:            你的ASN
as-name: ASN的名字,只能数字、字母和"-", "_"
descr: ASN的介绍
admin-c: 用户名-DN42
tech-c: 用户名-DN42
mnt-by: 用户名-MNT
source: DN42

IP

data/inet6num 中选择IPv6,data/inetnum 中选择IPv4

和上面一样,也可以在 这里 看到空闲的IPv4,在 这里 看到空闲的IPv6

大致格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
inet6num:           IP段
cidr: CIDR
netname: 网络的名字
descr: 介绍
country: 国家(好像也是可选的?)
admin-c: 用户名-DN42
tech-c: 用户名-DN42
mnt-by: 用户名-MNT
nserver: IP 地址反向解析的服务器
nserver: IP 地址反向解析的服务器
status: ASSIGNED
source: DN42

route

现在需要创建一个route,授权AS使用这个地址

data/route 文件夹中创建一个文件,名字写你的CIDR

格式大致如下:

1
2
3
4
5
route:              172.xxx.xxx.xxx/27
descr: 介绍
origin: ASN
mnt-by: 用户名-MNT
source: DN42

IPv6也是同理,在route6中创建文件即可

0x02 提交

现在你已经完成了所有的文件编辑工作,下一步就是带上PGP签名commit你的更改,然后去创建一个pr

需要注意的是文件必须是LF,不能是CRLF,否则无法通过ci的检查,后续也会有人工复查一遍(我就是这里踩坑了呜呜呜,提交了十几次才过)

提交全部完成后就可以等待合并了,合并之后就可以玩起来了ww

0x03 写在最后