大型的去中心化网络 - DN42
去中心化网络 42(decentralized network 42,简称为dn42),是一个去中心化、端到端加密的网络,它通过使用 VPN 和软件/硬件的边界网关协议进行构建。
欢迎大家和我 PYPeer ~ 详情请访问 https://dn42.blw.moe
简介
简单来说,DN42 就是一个大型的 VPN 网络,通过各种隧道以及 BGP 协议将世界各地的用户连接在一起。在这个网络中,你可以尽情的使用 BGP,Anycast 等技术,而不会对公共互联网造成损失。
为了能将DN42与公共互联网区分开来,DN42 内部使用的资源均为保留资源,分别为:
IPv4: 172.20.0.0/14 IPv6: fd00::/8 ASN: AS4242420000-AS4242423999
加入 DN42 网络
注册 DN42 对象
想要加入 DN42 网络,必须要注册自己的 ASN 和 IP。因为 DN42 修改了注册方式,全部改由 Git 注册,所以需要有少量的 Git 知识才能继续。
Git 仓库地址: https://git.dn42.us/dn42/registry
先使用 git clone 指令将仓库 Clone 到本地,之后按照以下步骤操作:
1. 创建 Maintainer
在 /data/mntner 目录下创建 MNT 对象,文件名为 你想起的名字-MNT,例如 /data/mntner/BLING-MNT (所有字母均需要大写),文件内容如下:
1 | mntner: BLING-MNT |
其中,mntner 和 mnt-by 两个字段填写你在目录中创建的对象名,admin-c 和 tech-c 分别是管理员和维护者的对象,两者可以统一,将在下文中创建,格式是 你想起的名字-DN42 。descr 字段为 Maintainer 的简介,auth 字段为 PGP 密钥指纹,用于验证未来可能需要的各种操作,强烈推荐加入。
2. 创建 Person
在 /data/person 目录下创建 Person 对象,文件名为 你想起的名字-DN42,例如/data/person/PAIZI-DN42 ,文件内容如下:
1 | person: BlingWang |
其中,person 字段填写你的姓名或昵称,contact 字段填写你的联系方式,可以使用多行,每行填入一个 Email 或其他社交媒体等联系方式。nic-hdl 字段与你设置的文件名应保持一致, mnt-by 字段填写上文所创建的 MNT 对象。
3. 创建Organisation(可选)
提示: Organisation 为组织信息,如果你想以个人身份加入 DN42,则不需要进行这一步。
在 /data/organisation 目录下创建 Organisation 对象,文件名为 ORG-你想起的名字,例如/data/organisation/ORG-BLINGNETWORK ,文件内容如下:
1 | organisation: ORG-BLINGNETWORK |
其中,organisation 字段填写创建的文件名,org-name 字段填写你的组织名称,email 字段填写组织的 Email, www 字段填写组织的网站,admin-c 和 tech-c 分别是管理员和维护者的对象,可以统一填写上文创建的 Person 对象, mnt-by 字段填写上文所创建的 MNT 对象。
4. 创建 ASN
在 /data/aut-num 目录下创建文件,文件名是你的 ASN 号码,例如 AS4242420233
ASN 可能会出现重复的情况,可以在 http://ix.ucis.nl/dn42/as.php 查询已注册的号码,防止撞车。文件内容如下:
1 | aut-num: AS4242420212 |
其中,aut-num 字段填写你文件名所填写的 ASN,as-name 字段填写 AS 的名称, descr 字段填写 AS 的描述,admin-c 和 tech-c 分别是管理员和维护者的对象,可以统一填写上文创建的 Person 对象, mnt-by 字段填写上文所创建的 MNT 对象。
5. 申请 IPv4 地址
DN42 默认分配/27的 IPv4,对一般用户来说/28已经非常够用,建议不要申请太多不需要的IP,避免浪费。
可以在 https://dn42.us/peers/free 中找到可用的 IPv4 地址段。
在 /data/inetnum 目录下创建文件,文件名是你找到的 IP 段,例如 172.20.20.0_27,内容如下:
1 | inetnum: 172.20.20.0 - 172.20.20.31 |
其中,inetnum 字段为你的IP段展开后的IP区间,netname 为IP段的名称,descr 字段为IP段的简介,country 字段为 ISO 3166-1 国家代号,admin-c 和 tech-c 分别是管理员和维护者的对象,可以统一填写上文创建的 Person 对象, mnt-by 字段填写上文所创建的 MNT 对象,cidr 字段填写IP段的CIDR写法,如 172.20.20.0_27 写作 172.20.20.0/27。
然后在 /data/route 目录下创建文件,文件名仍然是你找到的 IP 段,例如 172.20.20.0_27 内容如下
1 | route: 172.20.20.0/27 |
其中,route 字段填写 IP 段的 CIDR 写法,如 172.20.20.0/27,origin 字段填写上文中申请的 ASN,mnt-by 字段填写上文所创建的 MNT 对象。
6. 申请 IPv6 地址
申请IPv6地址的方法和IPv4十分相似,只是IPv6的地址需要完全随机生成,而不是自己选择。
访问 https://simpledns.com/private-ipv6 ,可以生成一个随机的IPv6 IP段。
在 /data/inet6num 目录下创建文件,文件名是你找到的 IP 段,例如 fd0c:775d:80f5::_48,内容如下:
1 | inet6num: fd0c:775d:80f5:0000:0000:0000:0000:0000 - fd0c:775d:80f5:ffff:ffff:ffff:ffff:ffff |
其中,inet6num 字段为你的IP段展开后的IP区间,netname 为IP段的名称,descr 字段为IP段的简介,country 字段为 ISO 3166-1 国家代号,admin-c 和 tech-c 分别是管理员和维护者的对象,可以统一填写上文创建的 Person 对象, mnt-by 字段填写上文所创建的 MNT 对象,cidr 字段填写IP段的CIDR写法,如 fd0c:775d:80f5::_48 写作 fd0c:775d:80f5::/48。
然后在 /data/route6 目录下创建文件,文件名仍然是你找到的 IP 段,例如 fd0c:775d:80f5::_48 内容如下
1 | route: fd0c:775d:80f5::/48 |
其中,route 字段填写 IP 段的 CIDR 写法,如 fd0c:775d:80f5::/48,origin 字段填写上文中申请的 ASN,mnt-by 字段填写上文所创建的 MNT 对象。
创建完所有的文件后便可以进行 Commit 操作,注意 Commit 的时候要使用上文所填写的PGP密钥进行签名
1 | git commit -S -m 'Example Commit' |
成功 Push 之后提交 Pull Request,DN42 管理员将在 24h 内将你的信息加入数据库,届时你就可以和其他用户 Peer 了。
通过隧道与其他用户连接
TODO
这步应该没啥可以讲的吧,通过 OpenVPN,Wireguard,IPsec 等工具和其他用户建立隧道,成功互联即可。
使用 Bird 创建 BGP 宣告
TODO
大型的去中心化网络 - DN42
