DN42 - 平民化的 ASN
其實應該先寫這篇才寫現實網路世界中的 ASN 教學才對 wwww
不過我也是先申請了現實的 ASN 後
才來申請這個東西的 XD
DN42 全名叫做 Deserialized Network 42 (去中心化網路 42)
其透過 Private IP 加上 VPN 來模擬現實的 ASN 系統
這是它們的官網
其實真的介紹就上面這樣而已 XD
接下來要說說申請的部分
我個人認為比申請現實的 ASN 複雜了許多
申請
首先我們到 dn42 的 wiki
在接下來操作的同時希望除了這篇文章以外
也能配著看這份文件
首先我們先到 dn42 自己的 repo 申請一個帳號
整個申請過程都需要用到 git
應該說 dn42 的管理以及紀錄都是在這個 repo 中
推薦使用 linux 或 macos 來完成所有操作以避免困擾
因為會有一些檔名 windows 不給用
那申請流程大概可以分為
- 建立自己的相關物件
- 檢查格式以及對你的 commit 用 GPG 簽名
- 發 pull request
建立物件
首先我們需要開一個新的 branch
所有申請的操作也都要在這個分支中做事
分支的名稱請按照 <username>-YYYYMMDD/<name>
的格式
例如我的叫做 chesskuo-20210820/register
1 | git checkout -b chesskuo-20210820/register |
接著我們需要準備幾個東西要先想好
然後透過這個網站查詢是否已經被申請
- 你想要的 ASN (範圍介於
4242420000
~4242423999
之間) - 你要的 IPv4 Range
- 你要的 IPv6 Range
對於上面三個東西
會推薦使用網站中的 Free Explorer 幫你 random
他會自動選幾個沒有被使用且符合規範的 ASN 或是 IP 給你選
挑好後就要開始建立對應的物件到 data/
資料夾中
最少需要以下
- mnter
- person
- aut-num
- inetnum
- inet6num
那會推薦順便連以下兩個都順便填寫
- route
- route6
mnter
mnter 是 maintainer 的縮寫
這個物件非常重要
是全部物件都會引用的東西
由於 dn42 是透過 git 的編輯方式
所以其實你可改動到不是你的 mnter 的物件
但是在現實世界中
註冊商是不會讓你更動到沒有引用你的 mnter 的物件的
格式官方有提供一個範本
檔案名稱請遵循 <name>-MNT
且放在 data/mnter/
底下
1 | mntner: FOO-MNT |
這邊的 admin-c
, tech-c
就是填等等要新增的 person
物件auth
的部分官方也有提供 ssh key 的驗證方式
詳細可以自己去翻文件
我自己是用 PGP 因為覺得比較潮 (x
之後包跨這裡的 mnt-by
全都是填這個 mnter
person
用來記錄一個人的相關資訊
檔名格式 <name>-DN42
放在 data/person/
1 | person: John Doe |
aut-num
ASN 資訊
檔名格式為 ASxxxxxxxxxxx
(xxx 為數字)
放在 data/aut-num/
1 | aut-num: AS4242423999 |
inetnum
IPv4 range 宣告
透過上面說到的 Free Explorer 可以隨機給你一組
檔名格式用以下這個例子當範例就是 172.20.150.0_27
放在 data/inetnum/
1 | inetnum: 172.20.150.0 - 172.20.150.31 |
inet6num
IPv6 range 宣告
透過上面說到的 Free Explorer 可以隨機給你一組
檔名格式用以下這個例子當範例就是 fd35:4992:6a6d::_48
放在 data/inet6num/
1 | inet6num: fd35:4992:6a6d:0000:0000:0000:0000:0000 - fd35:4992:6a6d:ffff:ffff:ffff:ffff:ffff |
route
用來宣告該 IPv4 Range 屬於哪一個 ASN
檔名格式與 inetnum 相同
放在 data/route/
1 | route: 172.20.150.0/27 |
route6
用來宣告該 IPv6 Range 屬於哪一個 ASN
檔名格式與 inet6num 相同
放在 data/route6/
1 | route6: fd35:4992:6a6d::/48 |
檢查
在物件都建立好之後
可以使用根目錄給的 fmt-my-stuff
來幫你將格式 format 好
因為有可能在修改範例的過程中少一個空白或怎麼樣之類的
接著使用 check-my-stuff
來檢查我們自己的相關物件是否正確
簽名
確定檢查也通過後
我們就可以將這次的變更 commit 並加上簽名
這邊我是使用 GPG
在 commit 時加上 -S
的參數就可以簽名
1 | git commit -m "xxx" -S |
簽完後
利用 git log --show-signature
就可以檢查你的 commit 是否有簽名
發 PR
接著只要將我們的 branch push 到 remote repo
接著透過 Web GUI 發個 PR
並且等待管理員審核就可以囉~
END
這篇主要介紹如何使用 DN42
這裡是我的 DN42 的一些資訊 Link
之後的文章將會帶著大家直接動手開始建置自己的網路系統
包括打 Tunnel, Peer, 建制自己的 DNS Server 之類的