配置 Tor 隐匿服务


Tor 允许客户端和中继提供隐匿服务。即你能够在不向用户泄露你的 IP 地址的情况下 提供 Web 服务、SSH 服务等等。事实上,因为你不需要任何公开的地址,你能在防火墙后面 运行隐匿服务。

如果你已安装了 Tor 和 Privoxy,你能通过访问一个 隐匿服务实例来感受隐匿服务是如何运行的。

本指导描述了设置你自己的隐匿服务网站的步骤。


第零步:使 Tor 和 Privoxy 正常工作


开始前,你需要确认:

  1. Tor 正在运行,
  2. Privoxy 正在运行,
  3. Privoxy 被配置为指向 Tor,以及
  4. 你确实正确地设置了一切。

Windows 用户应该遵照 Windows 指导,OS X 用户应该遵照 OS X 指导,Linux/BSD/Unix 用户应该遵照 Unix 指导

一旦 Tor 和 Privoxy 安装与配置完成,你能通过访问一个隐匿服务实例来感受隐匿服务是如何运行的。 通常需要 10 到 60 秒的时间来载入页面(或者确定当前无法访问)。如果立刻失败并且 浏览器弹出警告说“找不到 www.duskgytldkxiuqc6.onion,请检查地址重新尝试”,则说明 你没能正确配置 Tor 和 Privoxy。请查看此 FAQ 条目获得帮助。


第一步:在本地安装 Web 服务器


首先,你需要在本地设置一台 Web 服务器。设置 Web 服务器是一个棘手的难题, 因此我们在这里将仅仅介绍一些基本步骤。如果你想知道更多,去找一位能帮助你的朋友。 我们建议你为隐匿服务安装一台新的、独立的 Web 服务器,这是因为即使你已经有了一台, 你也许正在用它(或打算用它)运行一个真实的网站。

如果你使用的是 Unix 或 OS X 并且对命令行不陌生,目前为止最好的方法是安装 thttpd。获取最新的源文件压缩包, 解压缩(它会创建自己的目录),运行 ./configure && make。 然后 mkdir hidserv; cd hidserv,然后运行 ../thttpd -p 5222 -h localhost。你将回到提示符,现在一台 Web 服务器已在端口 5222 运行。你可以在 hidserv 目录放入(隐匿服务提供的)文件。

如果你使用的是 Windows,你可以选择 Savant 或者 Apache,请配置其仅绑定本地主机。 你还应该知道监听的端口,下面将用到。

(我们将 Web 服务器仅绑定本地主机的原因是为了保证它无法被公开地访问。如果有人 可以直接访问它,他们将据此确认你的计算机正在提供隐匿服务。)

当 Web 服务器设置完成时,请确认它工作正常:打开浏览器,访问 http://localhost:5222/,其中 5222 是上面你所 选择的端口。然后在主目录中加入一个文件,看看它是否出现在你所访问的站点中。


第二步:配置你的隐匿服务


接下来,你需要将你的隐匿服务指向本地的 Web 服务器。

首先,在你的文本编辑器中打开 torrc 文件。(如果不明白这句话的意思,请看关于 torrc 的 FAQ 条目。)在中间部分查找这样一行

############### This section is just for location-hidden services ###

文件的这一部分包括了几组,每组由多行构成,每一组都代表了一项隐匿服务。现在 它们都被注释掉了(以 # 开始的行),所以隐匿服务是禁止的。每组都包括一行 HiddenServiceDir,另有一行或多行 HiddenServicePort

  • HiddenServiceDir 是 Tor 将要保存隐匿服务信息的目录。特别地,Tor 将创建一个名为 hostname 的文件记录 onion URL。你无需向此目录添加 任何文件。
  • HiddenServicePort 让你指定虚拟端口(即当他人访问隐匿服务时认为他们 在使用的端口)和虚拟端口的连接重定向到的 IP 地址和端口。

将以下两行加入 torrc:

HiddenServiceDir /Library/Tor/var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:5222

你需要修改 HiddenServiceDir 这一行,使其指向一个运行 Tor 的用户能够 读写的目录。如果你正在使用 OS X 的 Tor 软件包,上面一行是有效的。在 Unix 上请 尝试“/home/username/hidserv/”,“username”对应你自己的用户名。在 Windows 上或许可以 这样:

HiddenServiceDir C:\Documents and Settings\username\Application Data\hidden_service\
HiddenServicePort 80 127.0.0.1:5222

现在保存 torrc,关闭 Tor,然后再次启动它。

如果 Tor 再次成功启动,很好。否则的话,说明什么地方发生了问题。首先查看日志文件 寻找线索。它将记录一些警告或错误消息。你应该能够由此明白错在哪里。典型的错误是 torrc 中的笔误或不正确的目录权限。(如果你不知道如何激活日志或找不到日志文件, 请查看关于 日志的 FAQ 条目。)

Tor 在启动时会自动创建你所指定的 HiddenServiceDir(如果需要的话), 它还将在那儿创建两个文件。

private_key
首先,Tor 将生成一对新的供隐匿服务使用的公钥/私钥对。它被写入一个 名为“private_key”的文件中。不要与他人分享这一秘钥——如果你这么做,他们将能够冒充你的 隐匿服务。
hostname
Tor 将创建的另一个文件是“hostname”。其中包括了你的公钥的简短摘要——它看起来像 duskgytldkxiuqc6.onion。这是你的服务的公开名字,你能够将它告诉别人, 把它发布在网站上,打印在商务名片上,等等。

如果运行 Tor 的不是你而是其他用户,例如在 OS X、Debian 或 Red Hat 平台上, 则你需要成为 root 来查看这些文件。

现在你已经重启了 Tor,它正忙于在 Tor 网络中选择介绍节点(introduction points), 以及生成一个隐匿服务描述符。隐匿服务描述符是经过签名的介绍节点列表与服务 的完整的公钥。它以匿名的方式将这一描述符发布到目录服务器,当其他用户尝试访问你的 服务时,他们同样以匿名的方式从目录服务器获取这一描述符。

现在就来试试:将 hostname 文件中的内容粘贴到浏览器中。如果一切正常,你将看到 你在第一步时添加的 HTML 页面。如果工作不正常,请查看日志寻找线索,不断尝试直至 正常工作。


第三步:更多高级技巧


如果你打算长期运行服务,你或许需要在什么地方备份 private_key 文件。

在上面,我们避免推荐 Apache,这是因为 a) 许多人可能已在他们的计算机上用它来 运行公开的 Web 服务器;b) 它很大,可能在许多地方泄露你的 IP 地址或其他信息,如 404 页面中。但是对于需要更多功能的人来说,Apache 也许是正确的选择。有谁能为我们 制作一份清单,列举使用 Apache 作为隐匿服务时需要注意的事项吗?Savant 可能也会有 这些问题。

如果你需要为一项隐匿服务转发多个虚拟端口,添加多行 HiddenServicePort 即可。如果你需要从同一个 Tor 客户端运行多项隐匿服务,添加另一行 HiddenServiceDir 即可。紧接着的所有 HiddenServicePort 行都与这一行 HiddenServiceDir 相关,直到你又添加另一行 HiddenServiceDir

HiddenServiceDir /usr/local/etc/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080

HiddenServiceDir /usr/local/etc/tor/other_hidden_service/
HiddenServicePort 6667 127.0.0.1:6667
HiddenServicePort 22 127.0.0.1:22

你还需要记住一些与匿名有关的问题:

  • 如前所述,小心你的 Web 服务器泄露你的身份信息、你的计算机或你的位置。 例如,访问者可能会知道它是 thttpd 还是 Apache,以及了解你的操作系统的一些信息。
  • 如果你的计算机不是一直在线的,你的隐匿服务也不会一直在线。这会向观察敏锐的敌手 泄露信息。

如果你有改进本文档的建议,请告诉我们。 谢谢!

Webmaster - 最后修改: Tue Jul 8 04:54:06 2008 - 最后编译: Tue Jan 6 15:28:20 2009

"Tor" 和 "Onion Logo" 是 The Tor Project, Inc. 的注册商标

本页面还有如下语言的版本: English, español, français, Italiano, polski, Русский (Russkij)
如何设置默认语言

Tor 的开发者和 EFF 均未对本翻译的精确性和正确性作检查。 它可能是过时的或者错误的。 Tor 的官方网站的语言是英文,位于 https://www.torproject.org/