DN42全攻略-part2-提交注册信息

接上文DN42全攻略-part1-注册gitea。(刚发现这篇文我咕咕咕了3年……)

另外,可以阅览gitea上的指引(英文)

需要注意的是,因为包含需要执行脚本的步骤,这篇文章里面的内容最好在Linux环境下实施。

创建fork

在gitea的网页上,点击右上角的“派生”(fork),你就可以创建一份属于你的分支。

然后,在终端里面操作,将整个库下载下来到本地。

git clone git@git.dn42.dev:<gitea用户名>/registry.git

克隆到本地之后,就可以进入registry文件夹进行修改文件了。

注册身份

可以阅读英文原文,我在这里简要的用中文进行简单介绍。必要的项目一共有3个

维护人

维护人项目位于data/mntner/,名称格式是<名称>-MNT,参考内容如下:

mntner:             FOO-MNT
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
auth:               pgp-fingerprint 0123456789ABCDEF0123456789ABCDEF01234567
source:             DN42

这里需要特别注意的是auth上一篇文章里面提到过需要创建一个pgp密钥对(什么?已经是3年前了?!咕咕咕),这是用来对以后进行任何变化操作,或者是向其他AS的管理员证明你是你用的。(比如说各种自动peer系统)

FOO-DN42是指某个联系人项目,下一步我们就要创建这个项目。

这个文件有更多的参数,具体可以看看其他人的文档,或者上网搜搜,这东西写法是完全照搬互联网上的。

联系人

联系人项目位于data/person/,名称格式是<名称>-DN42,参考内容如下:

person:             John Doe
e-mail:             john.doe@example.com
nic-hdl:            FOO-DN42
mnt-by:             FOO-MNT
source:             DN42

nic-hdl的内容就是文件名,根据社区要求,必须以-DN42结尾。可以加其他的联系方式,用contact:字段标注就行。也可以独立地加签名的公钥。

组织(可选项)

如果你打算以个人身份玩的话,就不需要创建这个项目。项目位于data/organisation/,名称的格式是ORG-<名称>。参考内容如下:

organisation:       ORG-FOO
org-name:           Foo Organisation
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
source:             DN42

大概看懂了吧?里面的字段可以索引到另外一个项目。一切就连起来了。

申请资源

你可以向社区申请进入网络的资源,包括AS号、ipv4地址块、ipv6地址块、域名等,一共4类。申请规则先阅读资源申请政策,需要特别注意的只有一条,在首次申请资源的时候,只能申请1个ipv4地址块(一般是/27,最多/26)和1个ipv6地址块(只能是/48)。

burble提供了一个简单的服务,可以列出当前空闲的资源,很好使。

AS号

AS号项目位于data/aut-num/,名称格式是AS<AS号>,参考内容如下:

aut-num:            AS4242423999
as-name:            AS-FOO-DN42
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
source:             DN42

aut-num的内容和项目名称一样,as-name可以随意写,不一定要以-DN42结尾。想要加其他内容的时候,可以看看其他人写的酷炫内容。

ipv4地址块

ipv4地址的申请被标注为legacy,不过从目前来看还是没法完全丢掉的,所以还是强烈建议申请一个。在刚才提到的简单的服务里面挑一个/27,然后创建指定对应的项目:

ipv4地址块项目位于data/inetnum/,名称格式是<子网地址>_<掩码长度>(就是cidr里面的斜杠换成下划线),参考内容如下:

inetnum:            172.20.150.0 - 172.20.150.31
cidr:               172.20.150.0/27
netname:            FOO-NETWORK
descr:              Network of FOO
country:            XD
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
status:             ASSIGNED
source:             DN42

ipv4路由目标

在注册ipv4地址块的时候,我们需要同步创建路由目标。这个东西是用来生成ROA记录的,ROA记录可以让其他人通过rpki快速校验一条路由是不是由正确的AS发布。现在各大AS通常会拒绝rpki校验无效的路由,接受有效或者未知的路由,不过也有的只接受rpki校验有效,拒绝校验无效或者未知的路由(比如我)。

ipv4的路由目标项目位于data/route/,名称格式参考ipv4地址块,参考内容如下:

route:              172.20.150.0/27
origin:             AS4242423999
max-length:         27
mnt-by:             FOO-MNT
source:             DN42

注意这里的示例申请了一个172.20.150.0/27的地址块,然后创建了172.20.150.0/27的路由目标,路由目标限定了只通告172.20.150.0/27的路由,如果是更长的长度,可以修改max-length。不过现在才刚开始,先按部就班地写和地址快一样的长度就好。

ipv6地址块

接下来就是ipv6地址快了,在刚才提到的简单的服务里面挑一个/48,然后创建指定对应的项目:

ipv4地址块项目位于data/inet6num/,名称格式是<子网地址>_<掩码长度>(就是cidr里面的斜杠换成下划线),参考内容如下:

inet6num:           fd35:4992:6a6d:0000:0000:0000:0000:0000 - fd35:4992:6a6d:ffff:ffff:ffff:ffff:ffff
cidr:               fd35:4992:6a6d::/48
netname:            FOO-NETWORK
descr:              Network of FOO
country:            XD
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
status:             ASSIGNED
source:             DN42

ipv6路由目标

ipv6同样需要路由目标,项目位于data/route6/,名称格式参考ipv6地址块,参考内容如下:

route6:             fd35:4992:6a6d::/48
origin:             AS4242423999
max-length:         48
mnt-by:             FOO-MNT
source:             DN42

注意这里的示例申请了一个fd35:4992:6a6d::/48的地址块,然后创建了fd35:4992:6a6d::/48的路由目标,路由目标限定了只通告fd35:4992:6a6d::/48的路由。

域名

下一步是域名,这也是一个网络的基础设施之一,因为大家都不想记住一串没什么特点的字符串,特别是ipv6的长度已经来到32个字符,所以大家都想要个好记的域名。

域名项目位于data/dns/,必须以dn42结尾,名称需要符合域名规范,参考内容如下:

domain:             foo.dn42
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
nserver:            ns1.foo.dn42 172.20.150.1
nserver:            ns1.foo.dn42 fd35:4992:6a6d:53::1
nserver:            ns2.foo.dn42 172.20.150.2
nserver:            ns2.foo.dn42 fd35:4992:6a6d:53::2
source:             DN42

然后,你就留意到了,里面有一个参数是nserver,意味着你需要搭建一个dns授权服务器来处理其他dns递归服务器的查询请求,参考里面写了2个授权服务器,这通常是为了冗余设计。晚点我们就来做这个,现在先把茅坑占着。

RDNS

或许你知道,或许你没接触过,有了DNS服务器之后,我们就可以做反向地址解析(PTR),可以将ip地址解析成域名。于是……我们就来修改一下之前的inetnuminet6num项目。

inetnum:            172.20.150.0 - 172.20.150.31
cidr:               172.20.150.0/27
netname:            FOO-NETWORK
descr:              Network of FOO
country:            XD
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
nserver:            ns1.foo.dn42 172.20.150.1
nserver:            ns1.foo.dn42 fd35:4992:6a6d:53::1
nserver:            ns2.foo.dn42 172.20.150.2
nserver:            ns2.foo.dn42 fd35:4992:6a6d:53::2
status:             ASSIGNED
source:             DN42
inet6num:           fd35:4992:6a6d:0000:0000:0000:0000:0000 - fd35:4992:6a6d:ffff:ffff:ffff:ffff:ffff
cidr:               fd35:4992:6a6d::/48
netname:            FOO-NETWORK
descr:              Network of FOO
country:            XD
admin-c:            FOO-DN42
tech-c:             FOO-DN42
mnt-by:             FOO-MNT
nserver:            ns1.foo.dn42 172.20.150.1
nserver:            ns1.foo.dn42 fd35:4992:6a6d:53::1
nserver:            ns2.foo.dn42 172.20.150.2
nserver:            ns2.foo.dn42 fd35:4992:6a6d:53::2
status:             ASSIGNED
source:             DN42

加入了nserver的记录。

提交

在执行提交前,执行一下仓库里面的脚本:

  • fmt-my-stuff <FOO>-MNT: 检查和修复一些格式错误
  • check-my-stuff <FOO>-MNT: 检查你的内容是否符合表单数据
  • check-pol origin/master <FOO>-MNT: 检查是否违反了规范
  • squash-my-commits: 将之前的所有commit合并成一份来提交,让仓库历史变得整洁
  • sign-my-commit: 对你的commit进行签名(pgp或者ssh密钥)

全部都跑完了之后,执行git commitgit push。之后你就能在网页上操作向registry提交pr请求了。如果有些特殊情况,burble会询问你一些问题,照常回答就行,不要慌,只要你有正当的、合适的、充分的理由,一般都会批准的。

下一步

在等待审批的时候,我们先准备好加入DN42网络的节点,浏览一下wiki,准备找其他人进行peer。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注