前言
最近在网上看到个很神奇的东西,叫做DN42,这是个实验性的网络,各个玩家通过VPN隧道在世界各地之间的节点建立链接,并通过BGP协议将各个玩家的网络连接到一起,模拟真实的互联网的环境。然后各个玩家可以在这个网络里面部署自己的服务,测试各种技术,实施各种一般情况下需要不少花费(比如说注册ASN,申请IP地址块,和其他人进行peer等)才能达成的操作。
这一下子就激起了我的兴趣,于是仔细阅读了官网的说明,并且根据指引,完成了注册,并peer了不少节点,完成了DNS服务的搭建,姑且算是完成了入门。于是在这里写以下文章,供后人参考。
官网的wiki关于开始的页面里面提供了相当详细的描述,这里就简单的用中文描述一下申请的流程,还有一些我踩过的坑。
准备材料
首先,你得有一些最基础的知识和材料,比如说你得知道什么是VPN、BGP等,还有需要支撑你参与到这个游戏里面的最基本的工具——一个能运行BGP的机器,你可以选择的机器有很多,从普通的x86电脑到ARM的单板机到一些家用的路由器(目前据我所知就只有Openwrt和RouterOS满足条件),都可以。主要能7*24的运行即可。
至于说其他企业级路由器就有点不幸了,因为现在网里面大家基本上都是用wireguard作为VPN隧道,而我所知的企业级路由器,绝大部分都不支持这个功能,所以强烈不推荐用企业级路由器和其他人进行互联,当然,用来做你自己的网络的核心是没问题的。
还有最后一个的话就是互联网链接,这个不多叙述,最好是有公网的ipv4和ipv6地址。
材料都准备好之后,就可以着手开搞了。
订阅消息
参考链接:https://dn42.dev/contact#contact_mailing-list
订阅的方法很简单,往dn42+subscribe /at/ groups.io发一封邮件就行,然后会有一封自动回复的邮件,让你确认是否要订阅。这时候再随便回复点什么就可以完成订阅了。
完成订阅之后就可以进行下一步,也就是正式开始申请资源了。
注册git.dn42.dev
dn42的整个registry信息都是gitea来存储的,所有人都可以pull来获取全部内容,如果想要申请点什么资源,添加点什么记录,方法就是通过PR(pull-request)来向管理员申请。在管理员审核之后,会将你的申请合并进去,就可以让大家都查看到你的信息了。一般来说,管理员每天做一次审核。
大神burble做了一个在线的浏览工具可以查看现在registry里面的内容
registry里面的结构是这样的,不同的文件夹里面以纯文本的方式记录着不同的内容。
.
├── data
│ ├── as-block
│ ├── as-set
│ ├── aut-num
│ ├── dns
│ ├── inet6num
│ ├── inetnum
│ ├── key-cert
│ ├── mntner
│ ├── organisation
│ ├── person
│ ├── registry
│ ├── role
│ ├── route
│ ├── route-set
│ ├── route6
│ ├── schema
│ └── tinc-key
└── utils
└── schema-check
了解到大概的流程之后,就可以着手开干了。
首先,打开https://git.dn42.dev/dn42/registry,会提示登录,这时候注册一个账号,注册完成之后重新打开链接,就能看到默认的readme了。
这时候先去创建一个PGPkey,因为你必须对你提交的内容进行一个签名,于此同时,PGPkey也可以用来证明你的身份,所以要好好保存,不要泄露。
我使用的密钥管理工具是kleopatra,如果你之前没有PGPkey的话,可以用这个工具创建一个新的PGP密钥对。注意,创建的时候需要保证密钥对里面的邮箱地址是你用来注册git.dn42.dev的那个。
在创建完密钥对之后,右键选择对应的key,选择导出,可以导出对应的公钥。
导出来的文件可以直接用文本编辑器打开,就是公钥的内容了。
然后全选,复制。再打开刚完成注册的gitea,进去个人设置,找到SSH/GPG密钥,然后将复制出来的内容填到内容框里面,然后点击“增加密钥”。
保存好之后,再点击增加的密钥旁边的“验证”
系统会生成一段随机的文字,复制出来,粘贴到klepatra的记事本标签页。然后点击“签名记事本”,会找你输入生成GPG密钥对的时候的密码。
输入正确之后,会对记事本的内容进行签名。
再将记事本里面的全部内容复制出来,粘贴到网页上的GPG增强签名文本框里面,点击验证。即可完成验证,之后你就能用这个GPG密钥来对git push进行签名了。
又或者直接复制页面上那段,直接在终端里面运行。会得到一样的签名信息。
echo "911ebb86da4234f38cb65f3d670798422a03205a5cbaba25fb8e6e82da5ab468" | gpg -a --default-key A67CBCEB66739B68 --detach-sig
到此就完成了前期的准备工作,下一步就是fork整个registry,修改本地内容,然后重新push并请求PR,这个下一篇再说。