IPNS和DNSLink的使用說明
IPNS說明
IPNS全稱InterPlanetary Name System,就是IPFS下的一個名稱解析系統,類似於互聯網的DNS,但是與DNS不同的是,IPNS是由節點自己維護的。
- 一個IPNS解析后會得到一串文本,里面是IPFS地址。
- 一個IPNS Name,對應了一個ID,一對密鑰和一個本地的key name。
- 每個運行中的IPFS節點,都有一個默認的IPNS Name,其key name就是self,其ID等於自己的PeerID,其密鑰對就是節點的密鑰對
IPNS使用
一個節點通過ipfs key gen命令可以創建無數個IPNS Name
ipfs key gen --type=rsa --size=2048 keyname
外界可以通過網關訪問到IPNS對應的內容,例如
https://ipfs.io/ipns/QmeJHrUbuLEwB4YGw58ELE5BZYFw2zM6CsoZLxRQd8NZiL/
(所以在設置nginx轉發的時候,記得除了要轉發/ipfs,還要轉發/ipns)
將IPFS內容發布到IPNS,通過ipfs name publish命令,例如
# 將IPFS CID發布到節點默認IPNS Name
ipfs name publish /ipfs/QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy
# 將CID發布到其他IPNS Name,需要加上--key=xxx 參數,其值可以是key name,也可以是hash
ipfs name publish --key=mykey /ipfs/QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy
注意:這個命令的執行時間很長,在使用--enable-namesys-pubsub參數的情況下,需要50秒左右,在未使用該參數的情況下,需要兩到三分鍾。
DNSLink說明
DNSLink的介紹 https://dnslink.io/
這個技術簡單地說, 就是讓軟件訪問目標域名 A.COM 的時候, 自動去讀取 _dnslink.A.COM 這個TXT記錄, 通過這個TXT記錄得到的地址信息去加載對應的頁面.
DNSLink的使用
使用DNSLink, 需要一個可用的域名, 在域名(或二級域名)上添加一個高一級的記錄, 名稱為 _dnslink, 類型為 TXT, 值為為 dnslink=/ipfs/bafybeiejgrxo4p4uofgfzvlg5twrg5w7tfwpf7aciiswfacfbdpevg2xfy
或者 dnslink=/ipfs/QmaHbGR2PQwtAPL4BcbjuS2RkPsWxnhc2fGWx9fKoNSxnD
, 注意這里值前面沒有下划線.
添加好之后, 可以使用以下的命令來查看添加的結果(如果沒設置成功, 可以用這些手段檢查是哪里出問題了)
# 檢查域名解析的TXT值是否正確
dig +short TXT _dnslink.libp2p.io
# 可以指定使用那個NS服務器來檢查
dig @8.8.8.8 +short TXT _dnslink.libp2p.io
# 檢查ipfs的解析結果是否正確
ipfs resolve -r /ipns/libp2p.io
# 檢查ipfs解析的結果, 這個地址對應的內容
ipfs ls /ipns/libp2p.io
這些都沒問題后, 就可以從瀏覽器訪問了, 訪問地址格式為 http://網關地址/ipns/libp2p.io, 例如
https://ipfs.drink.cafe/ipns/libp2p.io
將來有新內容發布時, 只需要更新_dnslink.libp2p.io 的TXT值.