進階
CJDNS Integration
深入了解 Bitcoin Core 的 CJDNS 整合,使用端對端加密的網狀網路。
8 分鐘
什麼是 CJDNS?
CJDNS 是一個加密的網狀網路協議,為每個節點分配一個 IPv6 地址(fc00::/8)。 Bitcoin Core 從 v23.0 開始支持 CJDNS,提供另一種隱私網路選項。
CJDNS 特點
優點
- • 端對端加密
- • 分散式路由
- • IPv6 原生支持
- • 低延遲
與 Tor/I2P 比較
- • 更低延遲
- • 不隱藏 IP(只加密)
- • 需要對等互連
- • 網狀拓撲
設置 CJDNS
安裝 CJDNS
# Ubuntu/Debian
sudo apt-get install cjdns
# 從源碼編譯
git clone https://github.com/cjdelisle/cjdns.git
cd cjdns
./do
# 生成配置
./cjdroute --genconf > /etc/cjdroute.conf
# 啟動
sudo ./cjdroute < /etc/cjdroute.conf
# 檢查狀態
ip addr show tun0
# 應該看到 fc00::/8 範圍的 IPv6 地址 配置 CJDNS
// /etc/cjdroute.conf 關鍵部分
{
// 你的 CJDNS IPv6 地址(自動生成)
"ipv6": "fc12:3456:7890:abcd:ef01:2345:6789:abcd",
// 公鑰
"publicKey": "...",
// 私鑰(保密!)
"privateKey": "...",
// 對等節點
"interfaces": {
"UDPInterface": [
{
"bind": "0.0.0.0:12345",
"connectTo": {
// 添加對等節點
"1.2.3.4:12345": {
"publicKey": "...",
"password": "..."
}
}
}
]
}
} 注意: CJDNS 需要手動添加對等節點。可以在 peers.fc00.io 找到公共對等節點。
配置 Bitcoin Core
# bitcoin.conf
# 啟用 CJDNS
cjdnsreachable=1
# 綁定 CJDNS 地址
bind=fc12:3456:7890:abcd:ef01:2345:6789:abcd
# 可選:只使用 CJDNS
# onlynet=cjdns
# 可選:混合使用多個網路
# onlynet=cjdns
# onlynet=ipv4
# 添加 CJDNS 種子節點
addnode=fc00:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 驗證連接
# 檢查網路資訊
bitcoin-cli getnetworkinfo | jq '.networks[] | select(.name == "cjdns")'
# 輸出
{
"name": "cjdns",
"limited": false,
"reachable": true,
"proxy": "",
"proxy_randomize_credentials": false
}
# 查看本地 CJDNS 地址
bitcoin-cli getnetworkinfo | jq '.localaddresses[] | select(.address | startswith("fc"))'
# 查看 CJDNS 節點連接
bitcoin-cli getpeerinfo | jq '.[] | select(.network == "cjdns") | {addr, network}'
# 檢查 CJDNS 路由
ip -6 route | grep fc00 技術架構
CJDNS 網路架構:
┌─────────────────────────────────────────────────────────────┐
│ CJDNS 網狀網路 │
│ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Node A│◄───────▶│Node B│◄───────▶│Node C│ │
│ │fc00::│ │fc00::│ │fc00::│ │
│ └──┬───┘ └──┬───┘ └──┬───┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │Bitcoin │ │
│ │Core Node│ │
│ │fc00:: │ │
│ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
地址格式:
- CJDNS 使用 fc00::/8 範圍的 IPv6 地址
- 地址由公鑰派生(自我認證)
- 例如:fc12:3456:7890:abcd:ef01:2345:6789:abcd
加密:
- 使用 Curve25519 密鑰交換
- XSalsa20 加密
- Poly1305 認證 網路比較
| 特性 | CJDNS | Tor | I2P |
|---|---|---|---|
| 隱藏 IP | 否 | 是 | 是 |
| 加密 | 端對端 | 洋蔥層 | 大蒜層 |
| 延遲 | 低 | 中 | 高 |
| 設置難度 | 中 | 低 | 中 |
| 地址格式 | fc00::/8 | .onion | .b32.i2p |
使用場景
適合場景
- • 低延遲需求
- • 已有 CJDNS 網路
- • 信任對等節點
- • 增加網路多樣性
不適合場景
- • 需要隱藏真實 IP
- • 無 CJDNS 對等節點
- • 需要匿名性
故障排除
# 檢查 CJDNS 是否運行
pgrep cjdroute
# 檢查 tun 介面
ip link show tun0
# 測試 CJDNS 連通性
ping6 fc00::1
# 查看 CJDNS 對等節點
cat /etc/cjdroute.conf | jq '.interfaces.UDPInterface[0].connectTo'
# 查看 Bitcoin Core 日誌
tail -f ~/.bitcoin/debug.log | grep -i cjdns
# 常見問題:
# 1. tun0 不存在 - CJDNS 未運行
# 2. 無法連接 - 需要添加對等節點
# 3. 不可達 - 檢查 cjdnsreachable=1 總結
- ✓ 加密網路:端對端加密通訊
- ✓ IPv6:使用 fc00::/8 地址空間
- ✓ 低延遲:比 Tor/I2P 更快
- ⚠ 注意:不隱藏 IP,需要手動添加對等節點
已複製連結