本网站现可通过 Tor 网络(Tor)作为隐藏服务访问,地址为仅在 Tor 内解析的 .onion,需使用 Tor 浏览器(Tor Browser)打开。此处无证书机构、无 DNS、无暴露 IP,地址由公钥派生,连接由 Tor 端到端加密。Tor 经数千志愿者服务器中继加密流量,使单方无法关联身份与行为,隐藏服务将匿名延伸至服务器。该网络由非营利组织 Tor 项目(Tor Project)构建。
正文
本站现在可通过Tor作为隐藏服务访问,地址为.onion,仅在Tor网络内解析。无证书颁发机构、无DNS、无暴露IP,地址直接从公钥派生,连接由Tor自身端到端加密。Tor通过数千个志愿者运行的服务器中继并加密流量,使任何单一方无法将用户身份与行为关联;隐藏服务将这种匿名性扩展到服务器本身。
Tor网络由非营利组织Tor Project构建,该组织通过自由软件和开放网络推进人权与自由,让任何人都能免受追踪、监控和审查地上网。网络运转依赖用户,可考虑支持他们或运行中继,助力数百万人的日常安全与隐私。
安装Tor并将隐藏服务指向本地端口。编辑 /etc/tor/torrc,设置 HiddenServiceDir /var/lib/tor/blog/ 和 HiddenServicePort 80 127.0.0.1:8080。该目录必须是Tor专用的归属路径,而非网站根目录;Tor在此存储服务私钥和hostname文件,并要求独占所有权(chmod 700,用户debian-tor),若指向站点文件Tor会拒绝启动。
重启Tor并读取生成的地址:
sudo systemctl restart tor@default sudo cat /var/lib/tor/blog/hostname dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion
提供服务
Tor将洋葱地址的80端口转发到127.0.0.1:8080,因此Web服务器只需在此监听。为它添加nginx服务器块——无需TLS、HTTP/2或QUIC,因为Tor使用纯TCP并提供自身加密。配置监听127.0.0.1:8080,server_name为dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion,root为/srv/tor.david.alvarezrosa.com,索引index.html,404页面指向/404/index.html,location / 尝试文件否则404。重载nginx后站点即在Tor上线。
为洋葱地址构建
静态站点将基础URL固化到绝对链接中,若用明网构建,即使通过Tor访问也会将访客指回明网域名。解决办法是以洋葱地址为基础URL构建第二份副本:执行 hugo --minify --baseURL="http://dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion/"。
部署流水线会自动执行:每次推送分别为明网和Tor目标构建一次,并rsync到各自的web根目录,两者无需手动即可保持同步。
就这样。通过Tor在 dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion 阅读本站。
评论
讨论整体偏向实用的部署经验:多数人认可自建洋葱服务在绕开公网 IP、端口转发和证书上的便利,但分歧集中在它是否值得普通站点照做——一方主张这是低成本、强隐私的镜像方案,另一方认为延迟、地址不可传播和命令行门槛让它只适合小众静态站。最尖锐的反对来自对暗网「地址随时可能被整体清掉」的长期经验。
认为自建洋葱服务最大的价值是绕开公网 IP、端口转发和证书
- 完全不用碰公网 IP 和证书,直接省掉端口转发这一环,对处于运营商 CGNAT 后面的自建站尤其关键(较多人) > 最难的部分其实是可用性,隐藏服务挂了不会自己报警,往往要等别人来告诉你。(@hn9zmdcaou)
觉得延迟和无法口头传播的地址,让洋葱站基本只适合静态页面
- 洋葱 v3 地址没法口头念给别人,加上往返延迟高,任何交互频繁、请求零碎的应用都会显得像坏了;结论是老老实实做静态页(较多人) > 地址根本没法用嘴分享,延迟又高,任何聊得多的东西都会感觉是坏的,老实说只适合静态页面。(@hndhyc0bdt)
建议用 Onion-Location 让 Tor 浏览器自动告知访客
- 在明网站点加上 Onion-Location 响应头,Tor 浏览器就会自动提示用户可切换到洋葱地址,避免让人手动比对域名(较多人) > 你大概应该在明网站点上加 Onion-Location 头,这样 Tor 浏览器能自动告诉访客这里还有洋葱版本。(@basilikum)
- 有人自己的开源项目默认就带 Onion-Location 广告,在 Docker 容器里常开并自我修复(少数人)
质疑把同一个站点用两个域名建两遍的必要性
- 既然内容相同,为什么不直接用同域下的相对链接,而是维护两套主机名(少数人)
认为命令行部署让自建洋葱站比普通建站更难
- 普通人应该能装一个普通应用、从某个文件夹直接跑起一个网站;照着教程敲自己看不懂的命令并不是好主意(较多人) > 想象一下普通人能装一个普通应用、直接从文件夹里跑起一个网站;现在敲那些自己都不理解的命令,实在算不上什么好办法。(@6510)
主张隐藏服务的端口和绑定地址都要隔离
- 不要绑 127.0.0.1,改用单独的环回地址加独立端口:万一以后复用该端口又忘了关隐藏服务,外部连接也碰不到只对本机开放的服务(较多人)
- 同一台机器跑多个隐藏服务时也必须分端口或分绑定地址,否则 nginx 匹配不到 Host 头时会把字母序最靠前的站点返回给访客,导致服务被关联(较多人)
认为大型洋葱站值得做 Tor 专属的性能工程
- 把图片和 CSS 尽量内联或以 base64 嵌入、动画交给 CSS、页面尽量后端渲染、必要时无 JS 也能用;核心是把「话多」压到最低,尽量在一条 Keep-Alive 连接里塞完数据,因为每个新 HTTP 请求都可能被分配到新的洋葱路由上(高赞) > 如果你能用一条连接把整个网站送到浏览器,你就赢了。(@ivanmontillam)
补充两项容易被忽略的配置
- 想让加载速度上去就得买 HTTPS 证书,否则被限制在 HTTP/1.1,缺了 HTTP/2 的多路复用会明显拖慢;另外可以开启把 circuit ID 传给后端的配置用于遥测或反滥用,否则日志里所有访客都显示同一个 IP(较多人) > 可以设置 HiddenServiceExportCircuitID 把 circuit id 传给 Web 服务器,用于遥测或反滥用,否则日志里所有用户都来自同一个 IP。(@charcircuit)
警告暗网上的东西本质上是短暂的
- 有人在家用电脑跑了近十年的洋葱站,经历 torv2 被判定为不够匿名后,Tor 项目单方面抹掉了所有 v2 洋葱站,链接成片失效;不要把社区建在暗网上,他们的决策优先考虑安全,必要时会再来一次(高赞) > 暗网不是给想拥有自己域名的人准备的,它是为安全服务的,而这个用途会主导他们的所有决定;如果这会让整个暗网社区消失,那就消失吧。(@superkuh)
有价值的补充
- 有读者担心自己的服务器会被访客当成出口节点,这其实把隐藏服务和中继/出口中继混为一谈;隐藏服务只发布自己的地址,不替他人转发流量。(@comrade1234)
- 有人提到在瑞士遇到托管匿名网络出口节点的人,最难的是向警方解释自己在做什么——这与上面那条误解指向同一个现实:中继运营者的法律处境和隐藏服务发布者完全不同。
- 评论作者本人就在帖子里征求反馈,说明这是项目方主动来收部署经验的讨论。(@dalvrosa)