進階
Tor Integration
深入了解 Bitcoin Core 的 Tor 網路整合,如何透過洋蔥路由增強比特幣節點的隱私和匿名性。
12 分鐘
為什麼使用 Tor?
Tor(The Onion Router)是一個匿名通訊網路,透過多層加密和隨機路由隱藏用戶的 IP 地址。 Bitcoin Core 內建 Tor 支援,讓節點運營者可以隱藏其真實網路身份,增強隱私和抗審查能力。
Tor 的優勢
隱私保護
- • 隱藏節點的真實 IP 地址
- • 防止交易與 IP 關聯
- • 保護節點運營者身份
抗審查能力
- • 繞過地理限制
- • 防止 ISP 封鎖
- • 提高網路韌性
Tor 運作原理
洋蔥路由
你的節點 目標節點
↓ ↑
[加密層3] [解密層3]
↓ ↑
Guard → [加密層2] → Middle → [加密層1] → Exit →
Node ↓ Relay ↓ Node
知道你是誰 只知道前後節點 知道目標
每一層加密就像洋蔥的一層
只有到達對應節點時才能解開該層 Onion Services(v3)
Bitcoin Core 支援 Tor v3 onion services,提供端對端加密的匿名連接:
Onion v3 地址格式(56 字元):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion
例如:
5g73biadjjswokqe3rqjpkqq...dqblvz25v53p5xbiad.onion
特點:
- 使用 ed25519 公鑰
- 256 位安全性
- 無需出口節點
- 端對端加密 配置方式
基本設定
1. 安裝並啟動 Tor:
# Ubuntu/Debian
sudo apt install tor
# macOS
brew install tor
# 啟動 Tor 服務
sudo systemctl start tor
# 或
tor & 2. 配置 Bitcoin Core:
# ~/.bitcoin/bitcoin.conf
# 透過 Tor SOCKS5 代理連接
proxy=127.0.0.1:9050
# 只使用 Tor(不連接明網)
onlynet=onion
# 允許節點被其他 Tor 節點連接
listen=1
# 自動創建 onion service
listenonion=1 連接模式
| 模式 | 配置 | 說明 |
|---|---|---|
| 僅 Tor | onlynet=onion | 最高隱私,只連接 onion 節點 |
| 混合模式 | proxy=127.0.0.1:9050 | 透過 Tor 連接明網和 onion 節點 |
| 雙棧 | 見下方配置 | 同時使用 Tor 和直連 |
雙棧配置
# 同時使用 IPv4、IPv6 和 Tor
# 適合想要更多連接但仍需 Tor 隱私的用戶
# Tor 代理設定
proxy=127.0.0.1:9050
# 允許的網路類型
onlynet=ipv4
onlynet=ipv6
onlynet=onion
# 監聽設定
listen=1
listenonion=1
bind=0.0.0.0:8333
bind=[::]:8333
# 對外連接時使用 Tor
# 但接受來自任何網路的連接 Onion Service 設定
自動設定
Bitcoin Core 可以自動透過 Tor 控制埠創建 onion service:
1. 配置 Tor 控制埠(/etc/tor/torrc):
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1 2. Bitcoin Core 配置:
# 自動創建 onion service
listenonion=1
# Tor 控制埠
torcontrol=127.0.0.1:9051
# 使用 cookie 認證(預設)
# 或使用密碼認證
# torpassword=your_hashed_password 手動設定
在 /etc/tor/torrc 中手動配置:
# Bitcoin Core onion service
HiddenServiceDir /var/lib/tor/bitcoin-service/
HiddenServicePort 8333 127.0.0.1:8333
# 可選:RPC onion service(謹慎使用)
# HiddenServiceDir /var/lib/tor/bitcoin-rpc/
# HiddenServicePort 8332 127.0.0.1:8332 查看生成的 onion 地址:
sudo cat /var/lib/tor/bitcoin-service/hostname
# 輸出類似:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdefgh.onion 驗證設定
# 查看網路資訊
bitcoin-cli getnetworkinfo
# 輸出範例:
# {
# "networks": [
# {
# "name": "onion",
# "limited": false,
# "reachable": true,
# "proxy": "127.0.0.1:9050"
# }
# ],
# "localaddresses": [
# {
# "address": "abcdef...gh.onion",
# "port": 8333,
# "score": 4
# }
# ]
# }
# 查看對等節點
bitcoin-cli getpeerinfo | jq '.[] | {addr, network}'
# 應該看到 "network": "onion" 的連接 隱私注意事項
交易隱私
重要提醒
- ⚠ Tor 只保護網路層: 隱藏你的 IP,但鏈上分析仍可追蹤交易。
- ⚠ 時序分析: 交易時間可能洩露資訊,考慮使用延遲廣播。
- ⚠ 節點指紋: 獨特的節點行為可能被用於識別。
完整隱私配置
# 最大隱私配置
# 只使用 Tor
onlynet=onion
proxy=127.0.0.1:9050
listenonion=1
# 禁用 DNS 查詢洩露
dnsseed=0
dns=0
# 添加已知的 onion 種子節點
addnode=5g73biadjj...onion:8333
addnode=cssusbltcm...onion:8333
# 禁用 UPnP(可能洩露本地 IP)
upnp=0
natpmp=0
# 禁用區塊過濾器(可能洩露感興趣的地址)
peerblockfilters=0
blockfilterindex=0
# 減少時序攻擊
# 使用私有 mempool 接受策略
mempoolreplacement=fee,optin 效能影響
Tor vs 直連比較
| 指標 | 直連 | Tor |
|---|---|---|
| 延遲 | ~50-200 ms | ~200-1000 ms |
| 吞吐量 | 不受限 | 1-5 MB/s |
| IBD 時間 | ~6-24 小時 | ~24-72 小時 |
| 連接穩定性 | 高 | 中 |
效能優化
# 增加連接數以彌補 Tor 的不穩定性
maxconnections=125
# 增加對外連接
maxoutboundconnections=12
# 為 IBD 使用混合模式(同步後再切換到僅 Tor)
# 同步期間:
# onlynet=ipv4
# onlynet=onion
# 同步後:
# onlynet=onion
# 啟用 Compact Blocks 減少數據傳輸
blocksonly=0
# 對於頻寬受限的 Tor 連接,考慮:
# blocksonly=1 I2P 替代方案
Bitcoin Core 27.0+ 也支援 I2P(Invisible Internet Project)作為另一個匿名網路選項:
# I2P 配置
i2psam=127.0.0.1:7656
# 可以同時使用 Tor 和 I2P
onlynet=onion
onlynet=i2p
proxy=127.0.0.1:9050 Tor 優點
- • 更成熟穩定
- • 更多節點
- • 更廣泛支援
- • 可存取明網
I2P 優點
- • 分散式設計
- • 抗出口節點攻擊
- • 更好的端對端加密
- • 較少的中心化風險
安全風險
潛在風險
- 1. Eclipse 攻擊: 如果所有對等節點都是惡意的 Tor 節點,可能被隔離在假鏈上。 緩解:連接到已知可信的節點,使用混合網路模式。
- 2. Sybil 攻擊: 攻擊者創建大量 Tor 節點佔據網路。 緩解:限制來自相似地址的連接。
- 3. DoS 放大: Tor 連接可能被用於 DoS 攻擊。 緩解:啟用連接限制和速率限制。
緩解措施
# 添加可信的明網節點作為錨點
addnode=seed.bitcoin.sipa.be:8333
connect=your-trusted-node.com:8333
# 限制入站連接
maxconnections=50
# 不完全依賴 Tor DNS seeds
dnsseed=1
# 定期驗證與多個來源的鏈一致性
# (手動檢查區塊雜湊) 常見問題
無法連接到 Tor
# 檢查 Tor 是否運行
systemctl status tor
# 檢查 SOCKS 埠是否監聽
ss -tlnp | grep 9050
# 測試 Tor 連接
curl --socks5 127.0.0.1:9050 https://check.torproject.org/ Onion service 無法建立
# 檢查控制埠權限
ls -la /run/tor/control.authcookie
# 將 bitcoin 用戶加入 tor 群組
sudo usermod -a -G debian-tor bitcoin
# 檢查 Bitcoin Core 日誌
tail -f ~/.bitcoin/debug.log | grep -i tor 連接不穩定
# 增加連接數
bitcoin-cli addnode "knownnode.onion:8333" "add"
# 檢查對等節點狀態
bitcoin-cli getpeerinfo | jq '.[].subver'
# 考慮使用混合模式提高穩定性 最佳實踐
✓ 推薦做法
- • 保持 Tor 軟體更新
- • 使用 onion v3 地址
- • 添加可信的種子節點
- • 監控連接品質
- • 定期驗證鏈狀態
⚠ 注意事項
- • 不要暴露 RPC 到 Tor
- • 注意 DNS 洩露
- • 考慮時序攻擊
- • 不要僅依賴 Tor 隱私
- • IBD 時考慮混合模式
總結
- ✓ IP 隱私:Tor 隱藏節點的真實 IP 地址,保護運營者身份
- ✓ 抗審查:繞過地理封鎖和 ISP 限制
- ✓ 易於設定:Bitcoin Core 內建支援,配置簡單
- ⚠ 效能代價:較高延遲和較低吞吐量,IBD 時間增加
- ⚠ 僅網路層隱私:不解決鏈上分析問題
已複製連結