跳至主要內容
進階

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,需要手動添加對等節點
已複製連結
已複製到剪貼簿