一、可达性问题在 Tor 里有个省事的解法
比特币节点想接到入站连接,传统路线要么有公网地址,要么路由器做端口映射,家庭宽带通常两条都难。如果节点所在机器装了 Tor,核心默认走另一条路:自动创建一个 onion 服务——Tor 网络里的”反向入口”,别处的节点通过一串 .onion 地址连进来,全程不需要你知道自己的公网地址,也不动路由器配置。这个默认行为由 -listenonion 控制,帮助文本原话是”自动创建 Tor onion 服务”,默认开启。

二、两条路线:自动与手工标记
自动路线之外还有手工路线:-bind=<地址>:<端口>=onion。帮助文本说明,在 bind 地址后加 =onion 后缀,等于给这个地址端口上进来的连接都打上 Tor 标签;各网络的默认绑定里本来就带一条回环地址加 onion 标记的默认值,对应 Tor 标准端口的本机 SOCKS 场景。区别在于:手工 bind 管的是”从某个端口进来的算 Tor 流量”,用于你已经自己建好 onion 服务、想让节点正确归类入站连接的情况;-listenonion 则是节点自己生成密钥、自己注册服务、自己维护,把 onion 地址写进数据目录供你分发。两条路线解决的是同一类问题——让没有公网可达性的节点也有稳定的对外身份——但一个假设你管服务,一个让节点代管。
三、一个必须同时改的开关
源码里有一条硬校验:-listen=0(完全不监听)和 -listenonion=1 同时出现直接启动失败,报错原文意思是”两者不可同时设置”。原因是 onion 服务的本质就是监听一个入口,关掉监听又要求自动建服务属于自相矛盾。工程上还有一条联动规则:总监听开关关闭时,程序会自动把 onion 自动服务一并关掉,包括 I2P 的入站接受。改过 -listen 的人排查”我的 onion 地址怎么不响了”,第一站就该看这个联动。
四、收益与边界的对称账
收益一侧:无需公网地址的入站可达性,抗运营商封锁的可达路径,以及和公网 IP 脱钩的稳定身份——换宽带、换 IP 都不影响对端找你。边界一侧:onion 服务只改善”别人连你”,出向连接如何路由由另外的参数管,两者不要混谈;创建的服务默认是本机 Tor 在转发,你的带宽和延迟经由 Tor 网络绕路,对延迟敏感的区块传播没有魔法;以及 onion 地址写进日志和配置分发时,它本身就是可公开分享的身份标识,不附带任何”不可追查”的承诺——匿名性是网络层的性质,不是钱包层的性质,这一点所有隐私主题都同样适用。
补充:分发 onion 地址的正确姿势
自动创建的服务会把 onion 地址写进数据目录下的主机文件,运维层面要管理的是”这个地址发给了谁、存在哪”。把它当作和公网 IP 同等敏感级的信息即可:写进内部文档没问题,贴进公开帖子前先想清楚你是在招募对端还是在给自己画靶。服务密钥丢失等于旧地址作废,数据目录做备份时把 onion 主机文件一并纳入,比重新生成再通知所有对端省事得多。还有一条常被问的:该功能不要求你手动配置 Tor 控制端口之外的任何东西,前提是核心进程能访问本机 Tor 的认证接口——环境里 Tor 没跑起来时节点只会安静跳过,排查”怎么没有 onion”先查 Tor 状态而不是比特币核心日志。
验收这台服务的办法也简单:节点启动日志里会记录 onion 服务的创建与地址,getnetworkinfo 的本地地址列表里能看到带 onion 标记的条目;从另一台装了 Tor 的机器用该地址发起连接,是端到端最干净的验证。两条路径的共同前提是 Tor 守护进程在跑、控制端口可达——onion 模式的问题九成出在 Tor 侧环境,剩下的一成才在核心配置,排查顺序值得照这个比例来。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。