最常见问题

Tor 浏览器防止人们获知你访问过的网站。 有些机构,例如你的互联网服务提供商,也许可看到你正在使用 Tor,不过他们不知道你正在使用 Tor 做些什么。

通常,完美的匿名是不可能的,即使用 Tor 也一样。 不过,使用 Tor 以及不在线时,你可以做一些事来提升匿名性。

使用 Tor 浏览器以及特意配置为使用 Tor 的软件

在使用 Tor 时,它并不会保护计算机上所有的互联网流量。 只有当应用程序适当配置为使用 Tor 网络时,Tor 才对其互联网流量提供保护。

网页浏览:

文件分享:

填写网页表单时谨慎选择提供哪些信息

当你使用 Tor 浏览器浏览网站时,他们不知道你是谁或你的真实位置。 很遗憾,许多网站要求填写网页表单,获取了必需之外的个人信息。 如果你登录该网站,他们不知道你的位置,但知道你是谁。 此外,如果你填入了姓名、电子邮件、地址或电话等个人资料,对于该网站來说,你就不再是匿名了。 最好的防护措施就是,填写网页表单时保持警惕和谨慎。

不要在 Tor 上使用 BT

有检测发现,即使设置为使用 Tor,BT 文件分享软件仍忽视代理设置并进行直接连接。 即使只通过 Tor 进行连接,BT 下载软件仍常常在跟踪器 GET 请求中发出真实 IP 地址,因为其工作原理如此。 这样做,不仅 BT 流量和其他同时发送的 Tor 流量将去匿名化,还将拖慢整个 Tor 网络速度,影响所有人的使用。

不要启用或安装浏览器插件

Tor 浏览器将屏蔽 Flash、RealPlayer、Quicktime 等浏览器插件:它们可以被操纵来暴露你的 IP 地址。 同样,不推荐在 Tor 浏览器中安装其他附加组件或插件,因为它们可能绕过 Tor 或损害你的匿名性和隐私。

使用 HTTPS 版的网页

Tor 将对 Tor 网络进入流量与内部流量进行加密,但用户到最终目标网站的流量的加密取决于该网站本身。 为了确保网站进行私人加密, Tor 浏览器提供 HTTPS-Only 模式,可强制支持 HTTPS 的网站使用 HTTPS 加密。 然而,在网站上提交敏感信息时,你仍然应该留意浏览器的 URL 栏,确保显示挂锁洋葱图标,包含https://,并正确显示预期的网站名称。 请查看 EFF 的交互信息图,它解释了Tor 和 HTTPS 之间的关联

在线时不要打开通过 Tor 下载的文档

在外部应用程序自动打开文档之前,Tor 浏览器将提示用户。 不要忽略此警告。 在通过 Tor 下载文档时(尤其是 DOC 和 PDF 文件,除非使用 Tor 浏览器内置的 PDF 查看器),你应该非常小心。打开这些文档时,相关应用程序将下载其中所含的互联网资源,但是没有通过 Tor 网络。 这将泄露未使用 Tor 时你的 IP 地址。 如果必须处理通过Tor下载的文件,强烈建议使用断开连接的电脑,或者使用 dangerzone 来创建可以打开的安全 PDF 文件。 不管怎样,在任何情况下,同时使用BitTorrent 和 Tor 都是不安全的。

使用网桥或寻找同伴

Tor 试图防止攻击者获悉用户连接的目标网站。 然而,在默认情况下,它并不能防止互联网流量监视者获悉你在使用 Tor。 如果你在意上述情况,可配置 Tor 使用网桥,而不是直接连接到 Tor 网络以降低这种风险。 最终,最佳保护策略来自社会化的方法:附近 Tor 用户越多,他们的兴趣越多元,作为其中一员,你就越安全。 说服其他人也使用 Tor!

聪明一点,学习更多。 理解 Tor 能做什么以及不能做什么。 这份隐患清单并不完整,我们需要你的帮助以发现并记录所有问题

Tor 浏览器目前可在 WindowsLinuxmacOSAndroid 上使用。

在Android上,The Guardian Project还提供了Orbot应用程序,以便将你的Android设备上的其他应用程序路由到Tor网络。

目前尚无官方版的 Tor 浏览器适用于iOS,详细解释可参考此博客文章。我们最佳的推荐是Onion Browser

强烈建议不要在 Tor 浏览器上安装新的附加组件,因为这可能会损害你的隐私和安全。

安装新扩展可能意外影响 Tor 浏览器,并使得 Tor 浏览器的指纹变得独一无二。 如果你的 Tor 浏览器副本拥有独特指纹,匿名可对你的浏览活动进行跟踪和去匿名化,即使你正在使用 Tor 浏览器。

每个浏览器的设置和功构成了一个称为“浏览器指纹”的东西。 大多数浏览器不经意间为每一个用户创建独一无二的浏览器指纹,可用于全网跟踪该用户。 Tor 浏览器经过专门设计,使其用户之间的指纹几乎相同(我们并不完美!)。 这意味着每个 Tor 浏览器用户看起来都像许多其他 Tor 浏览器用户,使得追踪任何单个用户变得困难。

新的附加组件还很有可能增加 Tor 浏览器遭到攻击的几率。 这可能导致敏感信息泄露或攻击者感染 Tor 浏览器。 附加组件本身甚至可能被恶意设计为监视用户。

Tor 浏览器预安装了一个附加组件--NoScript--添加任何其他东西都可能去匿名化。

想要了解更多关于浏览器指纹的信息?请查看 Tor 博客相关文章

除非你知道如何配置 VPN 和 Tor 而不影响隐私,通常,我们不建议将这两者配合使用。

你可以在我们的维基页面找到关于 Tor + VPN 的更多详细信息。

毫无疑问,Tor 浏览器可以帮助人们访问所在地区被封锁的网站。 大多数时候,只需下载 Tor 浏览器,你就可以使用它去访问被屏蔽的网站。 对于网络受到严格审查地区,我们提供多种规避审查的选项,包括可插拔传输

更多信息,请参见Tor 浏览器用户手册中关于审查规避的部分

当然可以!我们有一个运行 Tor 中继的机构列表。他们将乐于接受你的捐赠,并将其用于提升 Tor 网络的速度和匿名性。

这些机构和 he Tor Project, Inc并不一样,但我们仍认为这是一件好事。 它们的运营者来自 Tor 社区并且非常友好。

请注意,在匿名与性能之间有时需要权衡取舍。 Tor 网络的匿名部分来自多样性。如果你有能力运行中继,相对于捐赠,这将更有助于提升 Tor 的匿名性。 但是另一方面,通过大量的小额捐赠来支持几个较大的中继节点,从带宽规模经济效益上,这对于提升网络性能更为有效。 增加匿名和提升性能都是值得追求的目标,所以选择哪种方式都是非常有用的!

关于 Tor

Internet 通信基于存储转发模型,可以将其类比为传统邮件:数据以区块形式传输,称为 IP 数据报或数据包。 每个数据包都包含(发送者的)源 IP 地址和(接收者的)目标 IP 地址,类似普通信件,包含发件人和收件人的邮寄地址。 发送者与接收者之间包含多个路由器跃点,其中,每个路由器检查目标 IP 地址,并将数据包转发到靠近目标的下一跃点。 因此,在发送者和接收者之间的每个路由器都知道发送者在和接收者通信。 尤其是本地 ISP,更能够对你的网络活动建立完整的特征分析。 此外,互联网上每台可以看到你任何数据包的服务器,都可以对你的行为进行特征分析。

Tor 的目标在于,通过一系列代理转发你的流量,提高你的隐私。 你的通信经过多层加密,并通过 Tor 网络中多个跃点转发到最终的接收者。 有关该流程的更多细节,请查看可视化展示。 请注意,本地 ISP 只能观察到你正在与 Tor 节点通信。 同样,互联网上的服务器只能看见它们在与 Tor 节点联系。

一般来讲,Tor 的目标是解决三个隐私问题:

首先,Tor 阻止网站和其他服务获得你的位置,它们可用位置构建有关你的习惯和兴趣的数据库。 使用 Tor 时,你的互联网连接自身不会泄露你的信息,因此,现在你可以选择每个连接透露多少信息。

第二,对于本地流量监视者(如你的 ISP,或对你的住处 wifi 或路由器具有访问权限的人),Tor 防止他们监视你从何处获取何种信息。 另外,还能防止他们决定你能够获取和发布什么信息。如果你能访问 Tor 网络的任何部分,你就可以访问互联网上的任何站点。

第三,Tor 通过多个 Tor 中继转发你的连接,因此没有单个中继可以了解你在做什么。 由于这些中继由不同的个人或组织运行,分布式信任比之前的 一跳代理方式具有更高的安全性。

但是,请注意,在某些情况下 Tor 无法完全解决这些隐私问题:详见下方仍存在的攻击

如上所述,如果监听者能够同时监测你和目标网站(或你的 Tor 出口节点),对进出 Tor 网络时的流量进行计时关联是可能的。 Tor 并不能防御这样的威胁模型。

极端情况下,如果审查者或执法机构能够获取部分网络的特定流量,通过观察两端的流量并进行计时关联,既有可能验证你与好友经常联系的猜想。 同样,仅对于怀疑目标正在互相通信的验证,这是有用的。 在大多数国家,这种怀疑比计时关联更容易获得搜查令。

此外,由于 Tor 重复使用多个 TCP 连接的线路,在特定出口节点非匿名和匿名流量有可能产生关联,所以应留意哪些应用程序在同时使用 Tor 网络。 也许最好是每个应用程序使用独立的 Tor 客户端。

“Tor” 这一名称可用于多个不同的组件。

Tor 是一个可在你的电脑上运行的程序,为你在互联网上浏览时提供保护。 世界各地志愿者搭建中继,组成分布式网络,用以转发你的通信,以此为你提供保护:防止互联网连接监视者知道你访问了什么网站,并防止网站获取你的地理位置。 这些由志愿者搭建的中继组成了所谓的Tor 网络。

大多数人通过 Tor 浏览器使用 Tor。它是一个基于 Firefox 浏览器开发的版本,并修复了许多隐私问题。 你可以在我们的关于页面了解更多信息。

Tor 项目是一个非盈利性(慈善)组织,它维护和开发 Tor 软件。

Tor 的全称是洋葱路由网络。 在 2001-2002 年,我们开始设计并部署新的下一代洋葱路由。每当我们提到正在搭建洋葱路由时,他们就会说“不错!哪一个洋葱路由?” 虽然洋葱路由已经成为大家熟悉的名词,Tor 实际上来自美国海军实验室 (Naval Research Lab) 的洋葱路由项目

(在德语和土耳其语,这个字还有特别的含义。)

注意:尽管最初来自缩写,Tor 不可以拼写为“TOR”。 只有首字母是大写的。 实际上,一些人常常将其拼错,据此可以推断,他们并未看过我们的网站,并且他们有关 Tor 的全部知识来自新闻上的报道。

不,Tor 不会移除。 你需要的另一个程序,它理解你的应用和协议,并且知道如何清除或“擦除”它发送的数据。 Tor 浏览器尽力确保应用层数据,如用户代理字符串,对所有用户保持相同。 对于用户在表单中输入的文本,Tor 浏览器无能为力。

代理提供商通常在互联网上搭建服务器,然后将其用于转发你的流量。 这是一种简单且易于维护的架构。 所有用户流量的进出都通过同一台服务器。 提供者可以对代理的使用进行收费,或者通过服务器上的广告来支付其成本。 在最简易的配置下,用户无需安装任何东西。 你只需要将你的浏览器指向他们的代理服务器。 如果不想要对自己的在线隐私和匿名进行保护,并且相信提供商不会做坏事,那么简单的代理算是不错的解决方案。 一些简单的代理,通过 SSL 保护你与代理之间的连接,防止本地窃听,比如在咖啡厅使用免费 wifi 的情况。

简易的代理提供商也可能会造成单点故障。 供应商知道你是谁以及你在网上浏览了什么。 他们可以看到你的流量通过他们的服务器。 在某些情况下,在你访问银行或电商网站时,他们转发你的加密流量时,甚至能够查看其中的内容。 你不得不信任你的供应商,相信他们不会监视你的流量,插入他们的广告并且记录你的个人信息。

Tor 至少通过三台不同服务器传输你的流量,之后将其发送到目的地。 由于三个中继中的每个节点都具有单独的加密层,互联网连接的监视者无法修改或读取你的 Tor 网络流量。 在 Tor 客户端(在你的计算机上)与世界各地的出口节点之间,你的流量是经过加密的。

第一台服务器是否知道我是谁?

大概不能。 在三台服务器中,第一台恶意服务器能够看到来自你计算机的加密 Tor 流量。 它仍然不知道你是谁,以及你正在用 Tor 做什么。 它仅仅能看到“这个 IP 地址正在使用 Tor”。 你仍然受到保护,避免该节点发现你是谁以及去哪个网站。

第三台服务器是否看到我的流量?

大概不能。 第三台恶意服务器能够看到你发送到 Tor 的流量。 它不知道谁发送的这些流量。 如果使用了加密传输(例如 HTTPS 协议),它仅能知道目标地点。 为了理解 Tor 和 HTTPS 如何互动,请查看Tor 和 HTTPS 可视化展示。

可以。

Tor 软件是自由软件。 这意味着,我们授予你对 Tor 进行再分发的权利,无论是否修改或收费。 你无需请求我们授予特定许可。

但是,如果想要分发 Tor 软件,你必须遵守我们的许可证规定。 根本上来说,Tor 软件任何部分的分发,都需包含我们的“许可证”文件。

不过,大多数咨询我们的人不仅想要分发 Tor 软件。 他们想分发 Tor 浏览器。 这包含 Firefox 延长支持版和 NoScript 扩展。 同时,你需要遵守这些程序的许可证规定。 这两个 Firefox 扩展都使用 GNU 通用公共许可证进行分发,而 Firefox 延长支持版分发使用的是 Mozilla 公共许可证。 遵守这些许可证规定的最简单方式:凡是包含这些组件的地方,同时包含相应源代码。

同时,应确保你的读者清楚地理解:什么是 Tor、谁是开发者以及提供(以及不提供)哪些功能。 请查看我们的商标常见问题来获取详细信息。

很多应用程序可以搭配 Tor 使用,但我们尚未对它们在应用层的匿名性进行足够的研究,无法对其安全设置提供建议。 在我们的维基页面上,社区成员创建了洋葱化特定应用程序的说明列表。 请补充这个列表,帮助我们保持它的准确性!

大多数人使用 Tor 浏览器,内含通过 Tor 安全浏览网页所需的全部功能。 不推荐其他浏览器与 Tor 一起使用,这样是危险的

Tor 绝对没有后门。

我们认识一些睿智的律师。他们指出,在美国(我们所在的法律管辖区),不太可能有人让我们添加后门。 如果真的有人要求这么做,我们将进行抗争,而且(律师说)我们很可能会赢。

我们绝对不会在 Tor 中放置后门。 我们认为,对于我们的用户而言,在 Tor 中内置后面将是极不负责任的;对于一般的安全软件而言,也将是一个恶劣的先例。 如果我们故意在我们的安全软件中设置了后门程序,那会使我们的专业名誉受损。 没有人再会信任我们的软件,而且理由充足!

尽管如此,仍然存在许多不易觉察的攻击。 可能有人冒充我们,或入侵我们的计算机,或其他类似的事情。 Tor 是开源项目,并且你应经常检查源代码(或至少查看上次发布的代码差异),以确认没有可疑的迹象。 如果我们(或者 Tor 的提供者)未提供源代码获取方式,其中定有蹊跷。 你还应该检查发布文件的 PGP签名,以确保没有人在软件发布网站上动手脚。

同时,Tor 可能出现意外漏洞并影响匿名。 我们定期查找匿名相关的漏洞并进行修复,请确保你的 Tor 是最新版本。

当攻击者能够监视信道两端时,与目前所有实用的低延迟匿名设计一样,Tor 就失效了。 例如,攻击者控制或监视你的 Tor 入口节点,同时控制或监视你访问的网站。 在这种情况下,学术界尚未找到一种实用的低延迟设计,能够可靠地阻止攻击者对两端的数量和计时信息进行关联。

那么,我们应该如何应对? 假设攻击者控制或监视 C 个中继。 假设共有 N 个中继。 如果你每次使用网络时都选择新的入口和出口中继,攻击者将能够对你的所有流量进行关联,概率大概是 (c/n)2 。 但是,对大多数用户来说,特征分析与全程跟踪一样糟糕:他们想要做的事情常常未引起攻击者的注意,并且攻击者关注一次和多次同样不可接受。 因此,选择太多随机的入口和出口,用户将没有机会避免这种攻击者的特征分析。

解决方法是“入口守卫”:每个 Tor 客户端随机选择几个中继作为入口点,并只使用这些中继作为第一跃点。 如果这些中继没有被控制或监视,攻击者就不可能赢,永远不可能,而用户将是安全的。 如果这些中继被监视或控制,攻击者将看到更多一部分用户流量,但用户特征仍然没有比以前更多。 因此,用户仍然有一些机会(大概 (n-c)/n)避免特征分析,而之前几率为零。

了解更多相关信息,可查看 An Analysis of Degradation of Anonymous ProtocolsDefending Anonymous Communication Against Passive Logging Attacks 以及 Locating Hidden Servers(特别推荐)。

另外,入口节点可能有助于预防有些攻击者:通过运行几个 Tor 节点,轻松列举所有 Tor 用户的 IP 地址。 (虽然无法获悉用户通信的目的地,但他们仍然可能仅凭一份用户名单就能做坏事。) 不过,在采用“目录守卫”之前,这一功能并不能真的发挥作用。

Tor 使用各种不同的密钥,有三个目标。1) 加密,以确保Tor 网络内的数据隐私;2) 身份认证,以便客户端知道他们是在与他们想要连接的中继进行通讯;3) 签名,以确保所有客户知道是同一组中继。

加密:首先,所有 Tor 连接使用 TLS 链接加密,因此观察者无法通过流量检测来查看指定数据包属于哪条线路。 此外,Tor 客户端与线路中的每个中继创建临时加密密钥;这些额外的加密层意味着只有出口中继可以读取来自客户端的数据包。 当线路结束时双方都将丢弃密钥,因此,记录流量并入侵中继获取密钥是无效的。

身份验证:每个 Tor 中继都有相应的解密公钥,称为“洋葱密钥 (onion key)”。 每个中继每四周轮换其洋葱密码。 当 Tor 客户端建立线路,在每一步都要求 Tor 中继证明其洋葱密钥的知识。 通过这种方式,线路的第一个节点不能欺骗线路上的其他节点。 由于 Tor 客户端选择连接线路,它可以确保实现 Tor “分布式信任”属性:线路上没有单个中继,能够同时知道客户端以及客户端的目的地。

协调:客户端如何得知哪些是中继,以及如何得知他们的密钥对于中继是否正确? 每个中继都有长期的签名公钥,称为“身份密钥”。 每个目录管理机构都另有一个“目录签名密钥”。 目录管理机构为所有已知中继提供已签名的列表,列出了每个中继的一组证书(由它们的身份密钥自签名),指定了它们的密钥、位置、退出策略等。 所以,除非对手可以控制大多数目录管理机构(截至 2022 年共有 8 个),否则无法欺骗 Tor 客户端使用其他 Tor 中继。

客户端如何知道谁是目录管理机构?

Tor 软件自带内置位置列表以及每个目录管理机构的公钥。 因此,唯一欺骗用户使用虚假 Tor 网络的方法是提供专门修改过的软件版本。

用户如何知道他们获得了正确的软件?

在分发源代码或者程序包时,我们使用 GNU Privacy Guard 进行数字签名。 请查看如何检查 Tor 浏览器签名的说明

为了确定它的签名真的来自我们,你需要亲自与我们见面,获得我们的 GPG 密钥指纹副本,或者你需要认识这样做过的人。 如果你担心这个级别的攻击,我们建议你参与安全社区并与成员互动。

只要线路工作正常,新的 TCP 流将重复使用同一 Tor 线路 10 分钟。 (如果线路发生故障,Tor 将立即切换到新线路。)

但请注意,单个 TCP 流(例如长时间 IRC 连接)一直使用同一线路。 对于单个流,不对线路进行轮换变动。 否则,随着时间的增加,可监视部分网络的对手将获得更多机会(而不是一次),来关联你与目标网站。

Tor 浏览器

数字签名用于确保某个程序包有其开发者生产并且没有被篡改。 下面我们将解释为什么这十分重要,以及如何验证你所下载的 Tor 浏览器是由我们创建的,而不是被某些攻击者所修改过的。

我们的下载页面上的每个文件都附有一个标有 “签名”的文件,其名称与软件包相同,扩展名为".asc"。这些 .asc 文件是它们的 OpenPGP 签名。 这些数字签名文件用于验证下载文件是否为我们希望你获取的文件。 这将由浏览器决定,但一般来说,你可以通过右键单击“签名”链接并选择“文件另存为”选项来下载该文件。

例如,tor-browser-windows-x86_64-portable-13.0.1.exe 附带有 tor-browser-windows-x86_64-portable-13.0.1.exe.asc。 这些是示例文件名,并下载文件不会完全相同。

下面将解释如何在不同的操作系统上验证下载文件的数字签名。 请注意,数字签名的日期指对程序包进行签名的时间。 因此,每次新文件上传时,将生产新的签名,并且日期不同。 只要你验证了签名,不必担心报告的日期可能有所不同。

安装 GnuPG

首先,验证签名之前,你需要安装 GnuPG。

对于 Windows 的用户:

如果使用 Windows,请下载 Gpg4win 并运行安装包。

为了验证签名,你需要在 Windows 命令行(cmd.exe)中输入一些命令。

对于 macOS 的用户:

如果使用 macOS,你可以安装 GPGTools

为了验证签名,你需要在终端(位于“应用程序”下)中输入一些命令。

对于 GNU/Linux 的用户:

如果使用 GNU/Linux,那么系统大概已安装 GnuPG,因为大多数 Linux 发行版都预装了该软件。

为了验证签名,你需要在终端窗口中输入一些命令。如何进行此操作将取决于你的发行版。

提取 Tor 开发者密钥

Tor 浏览器团队已经为 Tor 浏览器发行版签名。 导入 Tor 浏览器开发者的签名密钥(0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290):

gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org

这将显示如下类似内容:

gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <torbrowser@torproject.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
pub   rsa4096 2014-12-15 [C] [expires: 2025-07-21]
      EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>
sub   rsa4096 2018-05-26 [S] [expires: 2020-12-19]

如果你收到了一个错误信息,就说明出了问题,你不能继续操作,直到你弄清楚为什么会出现错误。也许你可以参照解决方法(使用公钥)部分来导入密钥。

导入密钥后,你可以将其保存到文件中(此处提供其指纹来指定):

gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

该命令将密钥保存在路径为./tor.keyring的文件中,即当前目录。 如果运行这个命令后 ./tor.keyring不存在,就说明出了问题,不能继续操作,直到你弄清楚为什么出现错误。

验证签名

为了验证下载的软件包签名,除了下载安装程序文件本身,还需要下载相应的“.asc”签名文件,并使用 GnuPG 命令来验证下载的文件。

以下示例假设已在“Downloads”文件中下载这两个文件。 请注意,这些命令使用示例文件名,而你的文件名将不同:你需要用你已下载的文件的确切名称替换示例文件名。

对于Windows用户(如果您有32位软件包,请将x86_64更改为i686):

gpgv --keyring .\tor.keyring Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe.asc Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe

对于 macOS 的用户:

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-macos-13.0.1.dmg.asc ~/Downloads/tor-browser-macos-13.0.1.dmg

对于GNU/Linux用户(如果您有32位软件包,请将x86_64更改为i686):

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz.asc ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz

命令的结果应该包含:

gpgv: Good signature from "Tor Browser Developers (signing key) <torbrowser@torproject.org>"

如果错误消息含有“No such file or directory”,上述某个步骤出错,或者未更改命令中的示例文件名。

刷新 PGP 密钥

运行以下的命令,可从密钥服务器上刷新本地密钥环中 Tor 浏览器开发者的签名密钥。同时将获取新的子密钥。

gpg --refresh-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

解决方法(使用公钥)

如果你遇到了无法解决的问题,不妨下载并使用这个公钥来代替。或者,你还可以使用以下指令:

curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 浏览器开发者密钥也可在 keys.openpgp.org 上找到,并可从 https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290 下载。 如果正在使用 macOS 或 GNU/Linux,你也可以通过运行以下命令获取密钥:

gpg --keyserver keys.openpgp.org --search-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

另外,你可能想要了解更多 GnuPG 信息

下载或运行文件时将提示指定目的位置。 如果你忘记了它是哪里,很可能是你的下载或桌面文件夹。

Windows 安装包中的默认设置还将创建桌面快捷方式,但请注意,你可能无意中取消选择创建快捷方式的选项。

如果你在文件夹中找不到,请再次下载并注意询问下载位置的提示。 选择一个你能简单记住的目录,下载完成后在选择的目录中将出现 Tor 浏览器文件夹。

每次发布新的 Tor 浏览器稳定版时,我们都会写一篇博文,详细介绍其新功能和已知问题。 如果你的 Tor 浏览器在更新后开始出现问题,请访问 blog.torproject.org 有关最新稳定版 Tor 浏览器的帖子,以查看你的问题是否被列出。 如果你的问题未列出,请先访问 Tor 浏览器问题跟踪器 并创建一个 GitLab issue 以描述你所遇到的情况。

我们希望每个人都能够使用他们自己语言的 Tor 浏览器。目前,Tor 浏览器提供多种语言,我们还在努力支持更多语种。

我们目前支持的语言:

语言
العربية (ar)
Català (ca)
česky (cs)
Dansk (da)
Deutsch (de)
Ελληνικά (el)
English (en)
Español (es)
ﻑﺍﺮﺴﯾ (fa)
芬兰语 (fi)
Français (fr)
Gaeilge (ga-IE)
עברית (he)
Magyar nyelv (hu)
Indonesia (id)
Islenska (is)
Italiano (it)
日本語 (ja)
ქართული (ka)
한국어 (ko)
lietuvių kalba (lt)
македонски (mk)
ﺐﻫﺎﺳ ﻡﻼﻳﻭ (ms)
မြမစ (my)
Norsk Bokmål (nb-NO)
Nederlands (nl)
Polszczyzna (pl)
Português Brasil(pt-BR)
Română (ro)
Русский (ru)
Shqip (sq)
Svenska (sv-SE)
ภาษาไทย (th)
Türkçe (tr)
Український (uk)
Tiếng Việt (vi)
简体中文 (zh-CN)
正體字 (zh-TW)

想帮助我们翻译吗?成为 Tor 译者!

你还可以安装并试用 Tor 浏览器 Alpha 测试版,来帮助我们测试即将正式发布的新语言版本。

没有,Tor 浏览器是开源且免费的软件。 任何声称是 Tor 浏览器且强迫你付费的浏览器均是假冒。 为确保你下载的是正版 Tor 浏览器,请访问我们的 Tor 浏览器下载页面。 下载后,你可以通过验证签名以确保你拥有官方版本的 Tor 浏览器。 如果你无法访问我们的网站,那么请访问审查部分,以获得有关 Tor 浏览器其他下载方式的信息。

如果已购买声称为 Tor 浏览器的虚假应用,可尝试要求 Apple 或 Play Store 退款,或者联系银行报告欺诈交易。 对于你从其他公司购买的产品,我们无法退款。

你可以在 frontdesk@torproject.org 上举报假冒的 Tor 浏览器

Tor 浏览器目前可在 WindowsLinuxmacOSAndroid 上使用。

在Android上,The Guardian Project还提供了Orbot应用程序,以便将你的Android设备上的其他应用程序路由到Tor网络。

目前尚无官方版的 Tor 浏览器适用于iOS,详细解释可参考此博客文章。我们最佳的推荐是Onion Browser

很不幸,我们目前还没有 Chrome OS 版本的 Tor。 你可以在 Chrome OS 上运行 Android 版 Tor 浏览器。 请注意:如果在 Chrome OS 上使用 Tor 移动版,那么查看的是网站的移动版(而不是桌面版)。 然而,因为尚未审核 Chrome OS 上的这款应用,我们不能确定是否所有 Android 版 Tor 浏览器的隐私保护功能都运行良好。

抱歉,在 *BSD 系统上没有官方支持的 Tor 浏览器。 有一个名为 TorBSD project 的项目,不过他们的 Tor 浏览器并没有得到官方支持。

使用 Tor 浏览器有时会比其他浏览器慢。 Tor 网络的每日用户已超过一百万,并且只有 6000 多个中继来路由所有流量,所以每个服务器承担的负载有时会造成延迟。此外,你的流量是有意地在世界各地志愿者的服务器进行传输,堵塞和延迟在所难免。 你可以通过运行自己的中继或鼓励他人这样做来帮助提高网络速度。 想要获取网络性能方面更多的深度解答,请参阅 Roger 有关该话题的博文Tor 的公开研究专题:2018年版。 你还可以查看我们最近的博客文章针对Tor网络持续攻击的防御措施,该文章讨论了针对 Tor 网络的拒绝服务(DoS)攻击。 此外,我们还引入了一种用于洋葱服务的工作证明防御机制,以帮助减轻其中一些攻击。 尽管如此, Tor 比以前快的多了,你未必注意到它的速度与其它浏览器有差别。

“隐身模式”或“隐私标签页”无法实现互联网匿名,这些称谓名不副实。 关闭会话后,它们将擦除计算机上所有与你的浏览会话相关的信息,但是并没有现成的措施来隐匿你的在线活动或数字指纹。 这表示一个窃听者可以和普通浏览器一样获取你的流量。

Tor 浏览器不仅具有隐私标签页的遗忘功能,同时可隐藏源 IP、浏览偏好和设备细节(可用于跨网络活动的指纹识别),为用户提供真正的全过程隐蔽的私密浏览体验。

有关隐身模式和隐私标签页的更多信息,请查看 Mozilla 发布的隐私浏览常见迷思

有一些方法可将 Tor 浏览器设置为默认浏览器,但这些方法不一定在所有操作系统中都有效。 为了使其自身与系统上其他部分相互隔离,Tor 浏览器进行了大量的工作,而将其设置为默认浏览器的过程并不可靠。 这意味着,网站有时在 Tor 浏览器里加载,有时却在其他浏览器里加载。这种操作十分危险而且可能暴露你的身份。

强烈建议,除了 Tor 浏览器,请勿在浏览器中使用 Tor。 在其它浏览器中使用 Tor 时,由于没有 Tor 浏览器的隐私保护,可导致你易受攻击。

当然可以在使用 Tor 浏览器时使用其它的浏览器。 不过,你应明白,其他浏览器无法提供和 Tor 浏览器一样的隐私保护。 在 Tor 与安全性较低的其他浏览器之间,请小心切换,可能意外使用其他浏览器,而你想用的是 Tor。

如果同时使用 Tor 浏览器和其他浏览器,这不会影响 Tor 的安全性和私密性。

然而,请注意,如果同时使用 Tor 和其他浏览器,你的 Tor 活动可能关联到其他浏览器中你的真实 IP(未用 Tor),比如只需鼠标从一个浏览器移动到另一个,即可产生关联。

或者,你可能只是忘记了,不小心用非私密浏览器做了一些本想在 Tor 浏览器中做的事情。

只有 Tor 浏览器的流量将通过 Tor 网络传输。 系统上的其他程序(包括其他浏览器)的连接不会使用 Tor 网络,也不会被保护。 需要单独配置来使用 Tor。 If you need to be sure that all traffic will go through the Tor network, take a look at the Tails live operating system which you can start on almost any computer from a USB stick or a DVD.

我们不建议运行多个 Tor 浏览器实例,在很多平台中这样做可能导致运行不正常。

Tor 浏览器使用 Firefox ESR 搭建,所以可能出现有关 Firefox 的错误。 请确认没有其他 Tor 浏览器实例在运行,并且你对 Tor 浏览器安装文件夹具有正确的权限。 如果你的电脑正在运行杀毒软件,请参阅我的杀毒软件或恶意程序防护软件阻止我使用 Tor 浏览器,通常这类问题是由病毒或恶意软件防护 软件导致。

Tor 浏览器是 Firefox 的修改版本,专为与 Tor 一起使用而设计。 Tor 浏览器做了很多工作,例如,通过额外补丁来增强隐私和安全。 虽然你可以同时使用 Tor 浏览器和其他的浏览器,但这样可能存在潜在的信息泄露。强烈建议用户不要这样做。 了解更多有关 Tor 浏览器的设计

Tor 浏览器的书签可以导出、导入、备份、恢复以及从其他浏览器导入。 为了在 Tor 浏览器中管理你的书签,请访问:

  • 汉堡菜单 >> 书签 >> 管理书签 (在菜单下方)
  • 从“我的足迹”窗口的工具栏中,点击“导入和备份”

如果想要导出书签

  • 选择“导出书签到 HTML”
  • 在导出书签文件的窗口中,选择保存文件的路径,文件名默认为 bookmarks.html。桌面通常是存放这些文件的好地方,但也可放在其他易于记住的位置都可。
  • 点击“保存”按钮。“导出书签文件”窗口将关闭。
  • 关闭“我的足迹”窗口。

你的书签现在已成功从 Tor 浏览器导出。 保存的书签 HTML 文件现在可以导入到另一个浏览器了。

如果想要导入书签

  • 选择“从 HTML 导入书签”
  • 在导入书签文件的窗口中,转到要导入 HTML 书签的目录,并选择该文件。
  • 点击“打开”按钮。“导入书签文件”窗口将关闭。
  • 关闭“我的足迹”窗口。

所选 HTML 文件中的书签,都将被导入到 Tor 浏览器“书签”菜单目录中。

如果你想备份

  • 选择备份
  • 将打开一个新窗口,你需要选择保存文件的位置。该文件扩展名未 .json。

如果想要还原

  • 选择“还原”,然后选择想要还原的书签文件。
  • 在弹出的窗口中点击 “确认”。恭喜,已还原你的备份书签。

从其他浏览器导入数据

可以从 Firefox 导入书签到 Tor 浏览器。在 Firefox 中,有两种方法可以导出和导入书签。HTML 文件或 JSON 文件。 从浏览器导出数据后,按照上述步骤将书签文件导入到你的 Tor 浏览器。

注意:目前,在 Android 版 Tor 浏览器中, 没有好的方法来导出和导入书签。Bug #31617

当你打开Tor浏览器时,你可以导航到汉堡菜单("≡"),然后点击“设置”,最后点击边栏的“连接”。 在该页面底部,点击“查看 Tor 日志”旁边的“查看日志”按钮。 你将看见一个复制日志到剪贴板的选项,点击可将日志复制粘贴到文字编辑器或邮件客户端。

另外,在 GNU/Linux 上可通过终端直接查看日志:打开 Tor 浏览器目录,使用以下命令启动 Tor 浏览器:

./start-tor-browser.desktop --verbose

或将日志保存到文件(默认:tor-browser.log)

./start-tor-browser.desktop --log [file]

默认模式下,Tor 浏览器大致用 200px x 100px 的倍数打开内容窗口,以避免屏幕尺寸的指纹识别。 其策略是使所有用户看起来都一样,这样就更难识别个别用户。 这种方式将持续生效,直到用户重新设定窗口的尺寸(例如最大化窗口或进入全屏模式)。 Tor 浏览器也为此配备了指纹识别防御技术,其名为黑边,由 Mozilla 开发并于 2019 年公布。 它的工作原理是为浏览器窗口添加白色边框,使窗口尽可能地接近用户所需的尺寸,同时使所有用户的屏幕尺寸都是几个相同的类型,防止他们因此被识别出来。

简而言之,这项技术使某些屏幕尺寸的用户变多,使根据屏幕尺寸识别用户变得更加困难,因为许多用户的屏幕尺寸相同。

黑边

毫无疑问,Tor 浏览器可以帮助人们访问所在地区被封锁的网站。 大多数时候,只需下载 Tor 浏览器,你就可以使用它去访问被屏蔽的网站。 对于网络受到严格审查地区,我们提供多种规避审查的选项,包括可插拔传输

更多信息,请参见Tor 浏览器用户手册中关于审查规避的部分

有些网站无法分辨普通 Tor 用户和自动流量,因而屏蔽 Tor 用户。 让网站取消对 Tor 用户的屏蔽,最好的方式是用户直接联系网站管理员。 这么做也许能解决你的问题:

“你好!我使用 Tor 浏览器访问 xyz.com ,发现你们不允许 Tor 用户访问访问该网站。 我呼吁你们重新考虑这个决定;在世界各地,许多人使用 Tor 来保护隐私和对抗审查。 通过屏蔽 Tor 用户,你可能同时屏蔽了专制国家需要自由互联网的用户、希望隐藏自己避免被发现的研究人员和记者、揭秘吹哨人、社会活动家、以及只是希望不被第三方跟踪的普通人。 请采取坚定的立场,支持数字隐私和互联网自由,允许 Tor 用户访问 xyz.com。谢谢。”

另外,银行等比较敏感的网站经常采用地域性屏蔽(例如,如果平时只在某个特定国家使用其服务,从其他国家访问时,你的账号可能就会被冻结)。

如果你不能连接到洋葱服务器,请查阅我无法访问 X.onion!

通常,Tor 浏览器让你的网络活动似乎来自与你所在地完全不同的地方。 有时候,银行或电子邮件之类的网站,可能认为你的帐号被盗用,自动将其锁定。

解决的唯一方式是,利用网站服务提供的帐号恢复功能,或直接联系运营商并说明你的情况。

如果提供商支持比 IP 信誉更安全的双因素身份验证, 也许能够避免出现这种情况。 咨询你的提供商是否支持双重身份验证。

在 Tor 浏览器中,你有时无法使用重度依赖 JavaScript 的网站的某些功能。 最简单的修复方法是单击“安全”图标(屏幕右上角的灰色小盾牌),然后单击“更改…” 把安全级别设置为“标准”。

大多数杀毒软件或恶意程序防护软件允许用户将某些进程列入 “白名单”,否则这些进程将被阻止。 请打开你的杀毒或恶意程序防护软件,在设置中寻找“白名单”或类似的东西。 下一步,添加以下进程:

  • Windows
    • firefox.exe
    • tor.exe
    • lyrebird.exe(如果你使用网桥)
    • snowflake-client.exe
  • macOS
    • Tor 浏览器
    • tor.real
    • lyrebird (如果你使用网桥)
    • snowflake-client

最后,重启 Tor 浏览器。 这应该能解决你遇到的问题。 请注意,卡巴斯基之类的杀毒软件可能在防火墙层面封锁 Tor。

一些杀毒软件在 Tor 浏览器启动时会提示有恶意软件。 如果从我们的主站或使用 GetTor 下载 Tor 浏览器,并进行验证,那么这些都是误报,无需担心。 一些杀毒程序将没有被大量用户看到过的文档视为可疑文件。 为了确保你下载的 Tor 程序是由我们创建并且没有被某些攻击者修改,你可以验证 Tor 浏览器的签名。 你可能还想允许某些进程以防杀毒软件阻止访问 Tor 浏览器。

如果你的互联网连接可能阻止 Tor 网络,你可以尝试使用网桥。 Tor 浏览器内置了一些网桥,只需几个步骤即可启用。 如需使用可插拔传输,请在首次启动 Tor 浏览器时点击“配置连接”。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单中,选择任一想用的可插拔传输

选择可插拔传输工具之后,向上滚动并点击“连接”,保存设置。

或者,如果正在运行 Tor 浏览器,请点击汉堡菜单 (≡) 中的“设置”,然后点击侧边栏中的“连接”。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单中选择任一想用的可插拔传输。关闭标签页时,你的设置将自动保存。

如果需要其他的网桥,你可以从网桥站点获取。 关于网桥的更多信息,请参阅 Tor 浏览器用户手册

导致 Tor 浏览器连接失败的最常见问题之一,就是系统时钟错误。 请确认你的系统时钟和时区设置正确。 如果这不能解决问题,请参阅 Tor 浏览器手册中的故障排除页面

有时,当你在 Tor 浏览器上使用 Gmail 时,谷歌弹出提示窗口,提醒你的账户有可能被盗用。 这个提示窗口列出了近期登录账户时的 IP 地址和地点。

通常,这属于误报:由于你使用 Tor,谷歌看见多个不同地点的登录,于是想要确认登录者是账号的真实持有者。

虽然这可能是使用 Tor 的服务带来的意外影响,但这并不意味着你可以彻底忽视这些警告。 这大概是误报,也可能真的有人劫持了你的谷歌 cookie,从而盗用了你的账户。

通过实体操控你的计算机,或者监视你的网络流量,都可以盗取你的cookie。 理论上来说,只有直接在你的电脑上操作,才有可能使你的系统陷入危险,因为毕竟 Gmail 和类似的服务应该只会通过 SSL 协议来传送 cookie。 然而不幸的是,在实践中,情况要比这复杂得多

而且,如果有人真的窃取了你的谷歌 cookie,他们最终可能从不寻常的地方登录(当然也可能不会)。总而言之,由于你使用的是 Tor 浏览器,谷歌这种安全措施对你来说就没那么有用,因为它总是误报。你必须使用其他方法,比如账户上是否有什么东西看起来很奇怪,或者看看最近登录的时间戳,想一想你是否真的在那些时间登录过。

最近,Gmail 的用户可以开启账户的两步验证来增添一层安全保障。

这是间歇性出现的已知问题;它并表示谷歌认为 Tor 是间谍软件。

当使用 Tor 出口节点发送查询时,你和其他数千名用户共同使用同一出口。通常在短时间内大量 Tor 用户查询谷歌时,才会看到这种提示。大量流量来自单个 IP 地址(你恰好选中的出口中继)被谷歌视为,有人在试图“爬取”他们的网站,于是将该 IP 地址的访问速度暂时地放慢。

你可以尝试“该站点新建线路”,从一个不同的 IP 地址访问该网站。

另一种解释是,谷歌试图检测某些间谍软件或病毒,后者向谷歌搜索发送了一些独特的查询。它记录那些发出异常询问的 IP 地址(但没有意识到这是 Tor 的出口中继),然后对任何来自那些 IP 地址的链接发出警告,声称它最近的查询记录是病毒感染的结果。

据我们所知,谷歌没有特意地针对 Tor 的使用进行阻止或屏蔽。计算机被病毒感染的错误信息应该在短时间内会消失。

很遗憾,有些网站要求 Tor 用户进行 Captcha 验证,我们对此无能为力。 对于这种情况,最有效的方法是联系网站管理员,说明他们的 Captcha 让你和同类用户无法使用他们的服务。

谷歌用“地理定位”来确定你的位置,以便提供个性化体验,其中包括使用你偏好的语言,以及根据你的查询呈现不同的结果。

如果真的想看英文版的谷歌,可以点击相关链接访问英文。不过,我们认为这是 Tor 的一项功能,而不是漏洞。互联网不是平的,根据你所在的位置,它看上去确实有所不同。 该功能使人们想起了这一事实。

请注意,谷歌搜索 URL 将名称/值对作为参数,其中一个参数名称是“hl”。如果将“hl”设置为“en”,无论你的请求被发送到哪个谷歌服务器,谷歌都将用英语返回搜索结果。更改后的链接可能如下所示:

https://encrypted.google.com/search?q=online%20anonymity&hl=en

另一个方法是直接使用你的国家代码来访问谷歌。这可以是 google.be、google.de、google.us 等等。

使用 Tor 浏览器时,没人能看到你访问的网站。 不过你的网络提供商或网络管理员也许可以发现你在使用 Tor,但他们无法知道你浏览的具体网站。

Tor 浏览器防止人们获知你访问过的网站。 有些机构,例如你的互联网服务提供商,也许可看到你正在使用 Tor,不过他们不知道你正在使用 Tor 做些什么。

DuckDuckGo 是 Tor 浏览器的默认搜索引擎。 DuckDuckGo 既不跟踪用户,也不存储用户的任何搜索信息。了解更多有关 DuckDuckGo 隐私政策

从 Tor 浏览器 6.0.6 版本开始,主搜索引擎切换到DuckDuckGo。 Tor 浏览器之前所用的 Disconnect 暂时没有获取谷歌搜索结果的权限。 由于 Disconnect 更像元搜索引擎,用于选择使用不同的搜索引擎,它现在显示必应搜索结果,其质量令人难以接受。 DuckDuckGo 不记录、收集或共享用户个人信息或搜索历史,因此最适合保护你的隐私。 其他大多数搜索引擎将保持你的搜索记录以及其他信息,例如时间戳、你的 IP 地址和你的帐户信息(如果你已登录)。

请查阅 DuckDuckGo 支持门户。 如果你认为这是 Tor 浏览器的问题,请向我们的问题跟踪器汇报。

Tor 浏览器有两种方法改变你的中继线路 —— “新建身份”和“该站点新建 Tor 线路”。 这两个选项都位于汉堡菜单("≡")。 可通过 URL 栏中网站信息菜单来访问“新建线路”选项,并且可通过点击屏幕右上方的闪光小帚图标访问“新建身份”选项。

新建身份

如果想要防止用户的前后浏览活动被关联,该选项非常有用。

选择它将关闭所有浏览器窗口及标签页,清除所有浏览器 Cookie 与历史记录等个人信息,并且所用连接将使用新的 Tor 线路。

Tor 浏览器将提示所有活动和下载将终止,因此在点击“新建身份”之前,请做好准备。

Tor 浏览器菜单

该站点新建 Tor 线路

如果所用的出口节点无法连接想要访问的网站,或者无法正确加载,该选项非常有用。 选择它将重新加载当前活动的标签页或窗口,并使用新的 Tor 线路。

其它来自同一网站的标签页或窗口将在重新加载后使用新的线路。

该选项不会清除任何隐私信息或者取消关联你的活动,也不会影响当前其他网站的连接。

该站点新建线路

运行 Tor 浏览器不会使你成为网络中的中继。 这意味着你的电脑不会用于路由其他人的流量。 如果你想搭建一个中继,请查阅我们的 Tor 中继指南

这是正常的 Tor 行为。 线路中的第一个中继通常称为“入口守卫”或是“守卫”。 它是一个快速且稳定的节点,并且在你的 Tor 线路中将作为首个节点长达 2-3 月,以此防止已知的去匿名化攻击。 线路中其他中继将随着访问新网站而发生变化,并且这些中继将共同提供完整的 Tor 隐私保护。 想了解关于安全中继如何工作的更多信息,请参阅这篇关于入口守卫的博客文章和这篇论文

在 Tor 浏览器中,每个新域名将使用一条独立的线路。 Tor 浏览器的设计与实施文档更深入地解释了这项设计背后的思考。

强烈建议:请勿修改 Tor 线路创建的方式。 让 Tor 选择路由会给你带来最高的安全性,修改中继节点可能破坏你的匿名性。 如果想要的结果只是访问仅限某个国家可用的资源,你可以考虑使用 VPN 而不是 Tor。 请注意,VPN 不具备与 Tor 同样的隐私保护 ,但是 VPN 可以解决一些区域限制问题。

警告:请勿随意根据意见指南来编辑你的torrc 文件! 这样做可使攻击者通过对 torrc 的恶意配置来破坏你的安全性和匿名性。

Tor 使用名为 torrc 的文本文件来存储有关 Tor 的设置。 对于大多数 Tor 用户,默认设置应已经足够(参见上述的警告)。

请按照下方操作系统相关的指示,找到 Tor 浏览器的 torrc

在 Windows 或 Linux 上:

  • torrc位于 Tor 浏览器数据文件夹内,可在 Browser/TorBrowser/Data/Tor中找到。

在 macOS 中:

  • torrc 位于 Tor 浏览器数据文件夹内,可在 ~/Library/Application Support/TorBrowser-Data/Tor 中找到。
  • 注意:“资源库”文件夹在较新版 macOS 中是隐藏的。想要在“访达”中打开该文件夹,请选择“前往”中的“前往文件夹…”。
  • 然后在窗口中输入 ~/Library/Application Support/ 并点击“前往”。

在修改你的 torrc 之前关闭Tor 浏览器,否则 Tor 浏览器可能会擦除你的修改。 某些选项可能无效,因为 Tor 浏览器启动时可能使用命令行将其覆盖。

请查看 torrc 示例文件来获取关于常用配置的建议。 想了解其他可供你使用的配置选项,请查看 Tor 用户手册页面。 记住,在 torrc 中所有以 # 开头的行都会被视为注释并且不会影响 Tor 的配置。

强烈建议不要在 Tor 浏览器上安装新的附加组件,因为这可能会损害你的隐私和安全。

安装新扩展可能意外影响 Tor 浏览器,并使得 Tor 浏览器的指纹变得独一无二。 如果你的 Tor 浏览器副本拥有独特指纹,匿名可对你的浏览活动进行跟踪和去匿名化,即使你正在使用 Tor 浏览器。

每个浏览器的设置和功构成了一个称为“浏览器指纹”的东西。 大多数浏览器不经意间为每一个用户创建独一无二的浏览器指纹,可用于全网跟踪该用户。 Tor 浏览器经过专门设计,使其用户之间的指纹几乎相同(我们并不完美!)。 这意味着每个 Tor 浏览器用户看起来都像许多其他 Tor 浏览器用户,使得追踪任何单个用户变得困难。

新的附加组件还很有可能增加 Tor 浏览器遭到攻击的几率。 这可能导致敏感信息泄露或攻击者感染 Tor 浏览器。 附加组件本身甚至可能被恶意设计为监视用户。

Tor 浏览器预安装了一个附加组件--NoScript--添加任何其他东西都可能去匿名化。

想要了解更多关于浏览器指纹的信息?请查看 Tor 博客相关文章

Flash 在Tor 浏览器中禁用,并且建议你不要启用。 我们认为 Flash 在任何浏览器上都是极不安全的 —— 它可以轻易盗取个人信息或者安装恶意软件。 幸运的是,大多数网站、设备以及其它浏览器都正在淘汰 Flash。

如果你使用 Tor 浏览器,你可以在连接设置中设置你的代理地址、端口和验证信息。

如果你以另一种方式使用 Tor,你可以在你的 torrc 文件中设置代理信息。查看手册页面中的HTTPSProxy配置选项。如果你的代理需要验证,请参阅HTTPSProxyAuthenticator选项。验证示例:

  HTTPSProxy 10.0.0.1:8080
  HTTPSProxyAuthenticator myusername:mypass

我们目前只支持 Basic auth,但如果你需要 NTLM 验证,你可能会发现存档中的这个帖子很有用。

关于使用 SOCKS 代理,请参见Socks4ProxySocks5Proxy,以及用户手册页面中的相关 torrc 选项。使用已认证的 SOCKS 5 代理可能看起来就像这样:

  Socks5Proxy 10.0.0.1:1080
  Socks5ProxyUsername myuser
  Socks5ProxyPassword mypass

如果你的代理服务器只允许连接特定端口,请查看被防火墙阻挡客户端,获悉如何限制 Tor 浏览器访问的端口。

请查阅 HTTPS Everywhere 常见问题. 如果你认为这是 Android 版 Tor 浏览器的问题,请通过问题跟踪器报告。

Tor 浏览器 11.5 版本起,桌面版默认启用 HTTPS-Only 模式,且 HTTPS Everywhere 不再与 Tor 浏览器捆绑。

在 Tor 浏览器中将 NoScript 配置为默认允许 JavaScript,这是因为禁用 JavaScript 将导致许多网站无法正常运行。 默认禁用 JavaScript 可导致许多问题,这会让大多数用户完全放弃使用 Tor 。 最终,我们想要 Tor 浏览器尽可能安全,同时让大多数人都可以使用,所以目前 Tor 浏览器将继续默认启用 JavaScript。

对于想要在所有的 HTTP 网站上默认关闭 JavaScript 的用户,建议更改 Tor 浏览器中的“安全级别”。 可通过点击“安全”图标(屏幕右上角的灰色小盾牌),然后点击“更改…”进行调整。 “标准”级别允许 JavaScript,“较安全”级别阻止 HTTP 站点上的 JavaScript,而“最安全”级别则完全阻止 JavaScript。

可以。在其他机器上,Tor 可配置为客户端或中继,并允许其他机器通过连接它来实现匿名化。 如果许多计算机需要匿名网关来访问外面的网络,这是最有用的。 然而,请注意,通过这种配置,你的私人网络内的任何人(介于你和 Tor 客户端/中继之间)都可以看到你发送的明文流量。 在到达 Tor 中继之前,你并没有匿名化。 有鉴于此,如果作为域名控制者,你知道一切都锁定,那就没问题,但这种配置可能不适合大型私人网络,因为安全是重中之重。

配置很简单,按照下面的例子编辑 torrc 文件中的 SocksListenAddress:

SocksListenAddress 127.0.0.1
SocksListenAddress 192.168.x.x:9100
SocksListenAddress 0.0.0.0:9100

如果你属于多个网络或子网,可声明多个监听地址。

SocksListenAddress 192.168.x.x:9100 #eth0
SocksListenAddress 10.x.x.x:9100 #eth1

在这之后,在相应网络/子网的客户端使用 socks 代理,其地址和端口与 SocksListenAddress 指定的相同。 请注意,SocksPort 配置选项给出的端口仅用于 localhost(127.0.0.1)。 在设置 SocksListenAddress 时,你需要提供端口与地址,如上所示。 如果你想要的是强制所有传出数据通过中央 Tor 客户端/中继,而不是服务器仅作为可选代理,iptables 程序(用于 *nix)可能很有用。

默认情况下,你的 Tor 客户端只监听从本地主机连接的应用程序。 来自其他计算机的连接会被拒绝。 如果在 Tor 客户端之外,你想其他电脑上的应用程序使用 Tor,可编辑 torrc 来定义SocksListenAddress 0.0.0.0,然后重新启动(或唤醒)Tor。 如果你想更高级一些,你可以在防火墙上配置你的 Tor 客户端,以绑定你的内部 IP,但不绑定你的外部 IP。

请查阅 NoScript 常见问题。 如果你认为这是 Tor 浏览器的问题,请在 漏洞跟踪器中报告。

移动版 Tor

尽管 Android 版 Tor 浏览器和 Orbot 都很棒,但用途不同。 Android 版 Tor 浏览器与桌面版 Tor 浏览器相似,但前者用于移动设备。它是一个使用 Tor 网络的一站式浏览器,并试图尽可能做到匿名化。 另一方面,Orbot 是一个代理,用于将来自其他应用(电子邮件客户端,即时通讯应用等)的数据经由 Tor 网络发送;另外,Android 版 Tor 浏览器内置了 Orbot 一个版本,可连接到 Tor 网络。 不过,那个版本不能用于将其他应用数据发送到 Tor 网络,Android 版 Tor 浏览器除外。 根据 Tor 网络的使用方式,任一或全部都可能是很好的选择。

我们推荐使用 iOS 应用程序Onion Browser,它依赖于 Orbot来建立与 Tor 的安全连接。 Onion Browser 和 Orbot 是开源的,使用 Tor 路由,并由与 Tor 项目密切合作的人员开发。 但是,Apple 要求 iOS 上的浏览器使用 Webkit ,因此 Onion Browser 无法提供与 Tor 浏览器相同的隐私保护。

了解更多有关 Onion Browser 的消息。 从App Store下载 Onion BrowserOrbot

The Guardian Project 维护 Android 上的 Orbot(以及其他隐私保护的软件)。你可以在 Guardian Project 官网上获得更多详细信息。

可以,我们提供了专用用于 Android 的 Tor 浏览器。只需安装 Android 版 Tor 浏览器即可在 Android 设备上使用 Tor 了。

The Guardian Projec 提供的 Orbot 应用,可帮助你在 Android 设备上用 Tor 的网络路由其他应用。不过,使用 Tor 浏览网络,Tor 浏览器已足够。

目前在较久 Windows Phones 上,还没有受支持的 Tor 浏览器使用方法,但如果是较新的 Microsoft 品牌/推广的手机,可以按照 Android版 Tor 浏览器的相同步骤进行。

连接 Tor

如果连接出现问题,将弹出错误信息,可选择“复制 Tor 日志到剪贴板”选项。 然后粘贴 Tor 日志到文本文件或者其他格式的文档。

如果你没有看到这个选项,打开 Tor 浏览器,找到汉堡菜单("≡"),然后点击“设置”,最后点击侧栏的“连接”。 在该页面底部,点击“查看 Tor 日志”旁边的“查看日志”按钮。

另外,在 GNU/Linux 上可通过终端直接查看日志:打开 Tor 浏览器目录,使用以下命令启动 Tor 浏览器:

./start-tor-browser.desktop --verbose

或将日志保存到文件(默认:tor-browser.log)

./start-tor-browser.desktop --log [file]

应看到以下常见的日志错误(在 Tor 日志中查找以下信息):

常见日志错误 #1:代理连接失败

2017-10-29 09:23:40.800 [NOTICE] Opening Socks listener on 127.0.0.1:9150
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 5%: Connecting to directory server
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server
2017-10-29 09:24:08.900 [WARN] Proxy Client: unable to connect to xx..xxx..xxx.xx:xxxxx ("general SOCKS server failure")

如果 Tor 日志显示以上类似信息,这表示连接 SOCKS 代理失败。 如果你的网络设置需要 SOCKS 代理,请确保正确输入代理详情。 如果不需要 SOCKS 代理,或者不确定,请尝试不用 SOCKS 代理连接 Tor 网络。

常见日志错误 #2:无法连接至守卫节点

11/1/2017 21:11:43 PM.500 [NOTICE] Opening Socks listener on 127.0.0.1:9150
11/1/2017 21:11:44 PM.300 [NOTICE] Bootstrapped 80%: Connecting to the Tor network
11/1/2017 21:11:44 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.
11/1/2017 21:11:44 PM.500 [NOTICE] Bootstrapped 85%: Finishing handshake with first hop
11/1/2017 21:11:45 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.

如果 Tor 日志显示以上类似信息,这表示 Tor 无法连接到 Tor 线路的第一个节点。 这可能表示,你所用的网络受到了审查。

请尝试通过网桥连接,这应该能解决问题。

常见日志错误 #3:无法完成 TLS 握手

13-11-17 19:52:24.300 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
13-11-17 19:53:49.300 [WARN] Problem bootstrapping. Stuck at 10%: Finishing handshake with directory server. (DONE; DONE; count 10; recommendation warn; host [host] at xxx.xxx.xxx.xx:xxx) 
13-11-17 19:53:49.300 [WARN] 10 connections have failed: 
13-11-17 19:53:49.300 [WARN]  9 connections died in state handshaking (TLS) with SSL state SSLv2/v3 read server hello A in HANDSHAKE 
13-11-17 19:53:49.300 [WARN]  1 connections died in state connect()ing with SSL state (No SSL object)

如果 Tor 日志显示以上类似信息,这表示 Tor 无法完成与目录服务器的 TLS 握手。 使用网桥可能解决这个问题。

常见日志错误 #4:时钟偏差

19.11.2017 00:04:47.400 [NOTICE] Opening Socks listener on 127.0.0.1:9150 
19.11.2017 00:04:48.000 [NOTICE] Bootstrapped 5%: Connecting to directory server 
19.11.2017 00:04:48.200 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
19.11.2017 00:04:48.800 [WARN] Received NETINFO cell with skewed time (OR:xxx.xx.x.xx:xxxx): It seems that our clock is behind by 1 days, 0 hours, 1 minutes, or that theirs is ahead. Tor requires an accurate clock to work: please check your time, timezone, and date settings.

如果 Tor 日志显示以上类似信息,这表示你的系统时钟出错。 请确保系统时钟设置正确,包括正确的时区,然后重启 Tor。

导致 Tor 浏览器连接失败的最常见问题之一,就是系统时钟错误。 请确认你的系统时钟和时区设置正确。 如果这不能解决问题,请参阅 Tor 浏览器手册中的故障排除页面

代理服务器出错存在多种原因。 出现该错误时,请尝试以下一项或多项操作:

  • 如果你安装了杀毒软件,它可能干扰 Tor 服务,请禁用杀毒软件并重启 Tor 浏览器。
  • 不应将 Tor 浏览器文件夹从初始位置移动至其他地方。 如果已移动,请将其还原。
  • 检查连接端口。尝试与当前所用不同的端口,如 9050 或 9150。
  • 如果以上方法都无效,重新安装浏览器。这一次,请确保将 Tor 浏览器安装到新目录,而不是覆盖之前已安装的浏览器。

如果错误仍然存在,请与我们联系

如果无法连接洋葱服务,请确保已正确输入 56 个字符的洋葱地址;即使一个小错误也将阻止 Tor 浏览器连接该网站。 如果仍然无法访问这个洋葱服务,请稍后重试。 可能连接暂时存在问题,或者站点已脱机但管理员未提醒。

也可以通过连接到 DuckDuckGo的洋葱服务来确保你能访问其他的洋葱服务。

审查

如果你无法通过我们的网站下载 Tor 浏览器,你可以通过 GetTor 获取一份 Tor 浏览器的副本。 GetTor 是一项通过不同方式自动回复最新版 Tor 浏览器下载链接的服务。这些链接由不同处所托管,例如 Dropbox 、Google Drive 和 GitHub. 可以通过邮件或者 Telegram 自动程序https://t.me/gettor_bot请求。 可以从 https://tor.eff.org 或者 https://tor.calyxinstitute.org/下载 Tor 浏览器。

给 gettor@torproject.org 发送一封电子邮件 在邮件的正文中,写上你的操作系统的名称(如 Windows 、macOS 或 Linux)。 GetTor 将回复一封电子邮件,其中包含 Tor 浏览器的下载链接、加密签名(用于验证下载的文件)、用于签名的密钥指纹以及软件包的校验和。 你也许需要选择“32 位”或“64 位”版本:这和你的电脑有关,你可能需要查阅你电脑的说明书或与制造商联系来了解更多信息。

如果您怀疑您的政府或互联网服务提供商 (ISP) 实施了某种形式的互联网审查或过滤,您可以使用 OONI Probe 测试 Tor 网络是否被阻止。 OONI Probe 是由互联网干预开放观察(OONI) 开发的免费开源应用程序。 它旨在测试和衡量哪些网站、消息应用程序和规避工具可能被阻止。

在运行这些测量测试之前,请仔细阅读 OONI 的安全建议和风险评估。 与任何其他测试工具一样,请注意 OONI 的误报测试

要检查 Tor 是否被封锁,您可以在移动设备或桌面上安装 OONI Probe,并运行"绕过测试"。 OONI Tor 测试可以作为 Tor 网络潜在阻塞的指示,但我们开发人员的全面分析对于结论性评估至关重要。

毫无疑问,Tor 浏览器可以帮助人们访问所在地区被封锁的网站。 大多数时候,只需下载 Tor 浏览器,你就可以使用它去访问被屏蔽的网站。 对于网络受到严格审查地区,我们提供多种规避审查的选项,包括可插拔传输

更多信息,请参见Tor 浏览器用户手册中关于审查规避的部分

如果连接出现问题,将弹出错误信息,可选择“复制 Tor 日志到剪贴板”选项。 然后粘贴 Tor 日志到文本文件或者其他格式的文档。

如果你没有看到这个选项,打开 Tor 浏览器,找到汉堡菜单("≡"),然后点击“设置”,最后点击侧栏的“连接”。 在该页面底部,点击“查看 Tor 日志”旁边的“查看日志”按钮。

另外,在 GNU/Linux 上可通过终端直接查看日志:打开 Tor 浏览器目录,使用以下命令启动 Tor 浏览器:

./start-tor-browser.desktop --verbose

或将日志保存到文件(默认:tor-browser.log)

./start-tor-browser.desktop --log [file]

应看到以下常见的日志错误(在 Tor 日志中查找以下信息):

常见日志错误 #1:代理连接失败

2017-10-29 09:23:40.800 [NOTICE] Opening Socks listener on 127.0.0.1:9150
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 5%: Connecting to directory server
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server
2017-10-29 09:24:08.900 [WARN] Proxy Client: unable to connect to xx..xxx..xxx.xx:xxxxx ("general SOCKS server failure")

如果 Tor 日志显示以上类似信息,这表示连接 SOCKS 代理失败。 如果你的网络设置需要 SOCKS 代理,请确保正确输入代理详情。 如果不需要 SOCKS 代理,或者不确定,请尝试不用 SOCKS 代理连接 Tor 网络。

常见日志错误 #2:无法连接至守卫节点

11/1/2017 21:11:43 PM.500 [NOTICE] Opening Socks listener on 127.0.0.1:9150
11/1/2017 21:11:44 PM.300 [NOTICE] Bootstrapped 80%: Connecting to the Tor network
11/1/2017 21:11:44 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.
11/1/2017 21:11:44 PM.500 [NOTICE] Bootstrapped 85%: Finishing handshake with first hop
11/1/2017 21:11:45 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.

如果 Tor 日志显示以上类似信息,这表示 Tor 无法连接到 Tor 线路的第一个节点。 这可能表示,你所用的网络受到了审查。

请尝试通过网桥连接,这应该能解决问题。

常见日志错误 #3:无法完成 TLS 握手

13-11-17 19:52:24.300 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
13-11-17 19:53:49.300 [WARN] Problem bootstrapping. Stuck at 10%: Finishing handshake with directory server. (DONE; DONE; count 10; recommendation warn; host [host] at xxx.xxx.xxx.xx:xxx) 
13-11-17 19:53:49.300 [WARN] 10 connections have failed: 
13-11-17 19:53:49.300 [WARN]  9 connections died in state handshaking (TLS) with SSL state SSLv2/v3 read server hello A in HANDSHAKE 
13-11-17 19:53:49.300 [WARN]  1 connections died in state connect()ing with SSL state (No SSL object)

如果 Tor 日志显示以上类似信息,这表示 Tor 无法完成与目录服务器的 TLS 握手。 使用网桥可能解决这个问题。

常见日志错误 #4:时钟偏差

19.11.2017 00:04:47.400 [NOTICE] Opening Socks listener on 127.0.0.1:9150 
19.11.2017 00:04:48.000 [NOTICE] Bootstrapped 5%: Connecting to directory server 
19.11.2017 00:04:48.200 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
19.11.2017 00:04:48.800 [WARN] Received NETINFO cell with skewed time (OR:xxx.xx.x.xx:xxxx): It seems that our clock is behind by 1 days, 0 hours, 1 minutes, or that theirs is ahead. Tor requires an accurate clock to work: please check your time, timezone, and date settings.

如果 Tor 日志显示以上类似信息,这表示你的系统时钟出错。 请确保系统时钟设置正确,包括正确的时区,然后重启 Tor。

网桥指未在 Tor 公共目录里列出的 Tor 中继节点。

这意味着,屏蔽 Tor 网络的政府或 ISP 无法彻底屏蔽所有网桥。 对于暴虐政权下的用户或者想要更多安全性的人们,网桥非常有用,因为他们担心有人会发现自己在使用 公开的 Tor 中继 IP 地址。

网桥不过时普通的中继,只是配置稍有不同。 请参阅如何运行网桥以获取相关指南。

一些国家,包括中国和伊朗,已经找到探测和屏蔽 Tor 网桥的方法。 Obfsproxy网桥通过增加一层混淆来解决这个问题。 运行 obfsproxy 网桥需要一些额外的软件包和配置。 更多信息,请参阅可插拔传输页面。

Snowflake 是 Tor 浏览器提供的可插拔传输根据,用于突破网络审查。 和 Tor 网桥一样,当普通 Tor 连接被屏蔽时,用户可以借助 Snowflake 访问开放互联网。 在 Tor 浏览器中使用 Snowflake 非常容易,类似于切换到新的网桥。

这个系统由三个部分组成:运行 Snowflake 代理的志愿者,想要连接到互联网的 Tor 用户,以及向用户分发 Snowflake 代理的中转站。

如果愿意帮助受审查用户,志愿者可在常规浏览器上搭建临时代理。请查看怎么使用 Snowflake?

Snowflake 使用非常有效的域名前置技术,可连接由成千上万的志愿者运营的 Snowflake 代理服务器。 这些临时的轻量代理易于搭建。相对于之前的技术,Snowflake 更容易进行扩展。

对于受到被审查的用户,如果你的 Snowflake 代理被屏蔽,中转站将自动为你寻找新的代理。

如果你对技术细节和规范感兴趣,请参阅 Snowflake 技术概述项目页面。 有关 Snowflake 的其他讨论,请访问 Tor 论坛并关注 Snowflake 标签

在所有平台的 Tor 浏览器稳定版中,都可以使用 Snowflake:Windows、macOS、GNU/Linux 和 Android。 你也可以在 iOS 上的 Onion Browser来使用 Snowflake。

如果第一次运行桌面版 Tor 浏览器,你可以在启动屏幕上点击“配置连接”。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单选择“Snowflake”。 选择 Snowflake 之后,向上滚动并点击“连接”以保存你的设置。

在浏览器内,你可以点击汉堡菜单("≡"),然后点击“设置”并打开“连接”。 另外,可以在地址栏中输入 about:preferences#connection 。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单选择“Snowflake”。

如果你的互联网连接没有受到审查,你应考虑安装 Snowflake 扩展,以帮助受审查网络中的用户。 当您在常规浏览器上运行 Snowflake 时,您将在被审查的用户和 Tor 网络中的入口节点之间代理流量,仅此而已。

由于某些国家对 VPN 服务器进行审查,我们恳请您在连接 VPN 时不要运行 snowflake 代理。

附加组件

首先确认你已启用 WebRTC。 然后你可以安装这个 Firefox 附加组件Chrome 扩展程序,这将使你成为 Snowflake 代理。 它还可以显示,在过去 24 小时内你帮助了多少人。

网页

在启用 WebRTC 的浏览器中: 如果不想在浏览器中添加 Snowflake,你可以访问 https://snowflake.torproject.org/embed ,并点击按钮以选择成为代理。 如果想要继续运行 Snowflake 代理,请勿关闭那个页面。

中国用户需额外步骤绕过防火长城连接到 Tor 网络。

要获得 Tor 浏览器的更新版本,先试试 Telegram 自动程序:https://t.me/gettor_bot。 如果不起作用,可以发送邮件至 gettor@torproject.org,并根据相应的操作系统,在邮件主题上写明“Windows”、“Macos”或“linux”操作系统。

安装后,Tor 浏览器将尝试连接 Tor 网络。 如果所在地屏蔽了 Tor,链接助手将试图通过网桥或者 Snowflake 连接。 但是如果这样也无法连接,第二步是获得在中国可以使用的网桥。

在中国使用 Tor 有三种选项:

  1. Snowflake使用临时代理连接到 Tor 网络。 它可以在 Tor 浏览器和其他由 Tor 驱动的应用程序中使用,如Orbot。 你可以从 Tor 浏览器的内置网桥菜单中选择 Snowflake。
  2. 未公开的私密 obfs4 网桥:找到我们的 Telegram 机器人 @GetBridgesBot 并发送 /bridges 来获取网桥。 或者发送邮件到 frontdesk@torproject.org,并且邮件主题需要包含“private bridge cn”。 如果你懂些计算机技术,可以自己在中国境外搭建并运行 obfs4 网桥。 需要注意的是,通过 BridgeDB 获取的网桥以及 Tor 浏览器内置的 obfs4 网桥,很可能无法使用。
  3. meek-azure:能让你伪装成访问微软的网站,而不是 Tor。 不过,因带宽限制这种网桥连接较慢。 你可以在 Tor 浏览器的内置网桥下拉菜单中选择 meek-azure。

如果以上某个选项无法使用,请查看 Tor 日志并尝试其他方法。

如果需要帮助,可以从 Telegram https://t.me/TorProjectSupportBotSignal上得到帮助。

如果你的互联网连接可能阻止 Tor 网络,你可以尝试使用网桥。 Tor 浏览器内置了一些网桥,只需几个步骤即可启用。 如需使用可插拔传输,请在首次启动 Tor 浏览器时点击“配置连接”。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单中,选择任一想用的可插拔传输

选择可插拔传输工具之后,向上滚动并点击“连接”,保存设置。

或者,如果正在运行 Tor 浏览器,请点击汉堡菜单 (≡) 中的“设置”,然后点击侧边栏中的“连接”。 在“网桥”部分,找到选项“选择 Tor 浏览器内置网桥”,然后点击“选择内置网桥”。 从菜单中选择任一想用的可插拔传输。关闭标签页时,你的设置将自动保存。

如果需要其他的网桥,你可以从网桥站点获取。 关于网桥的更多信息,请参阅 Tor 浏览器用户手册

Find up-to-date instructions on how to circumvent censorship and connect to Tor from Russia on our forum guide: Tor blocked in Russia - how to circumvent censorship.

If you need help, contact us via Telegram, WhatsApp, Signal, or by email frontdesk@torproject.org. For censorship circumvention instructions, use "private bridge ru" as the subject line of your email.

有些网站无法分辨普通 Tor 用户和自动流量,因而屏蔽 Tor 用户。 让网站取消对 Tor 用户的屏蔽,最好的方式是用户直接联系网站管理员。 这么做也许能解决你的问题:

“你好!我使用 Tor 浏览器访问 xyz.com ,发现你们不允许 Tor 用户访问访问该网站。 我呼吁你们重新考虑这个决定;在世界各地,许多人使用 Tor 来保护隐私和对抗审查。 通过屏蔽 Tor 用户,你可能同时屏蔽了专制国家需要自由互联网的用户、希望隐藏自己避免被发现的研究人员和记者、揭秘吹哨人、社会活动家、以及只是希望不被第三方跟踪的普通人。 请采取坚定的立场,支持数字隐私和互联网自由,允许 Tor 用户访问 xyz.com。谢谢。”

另外,银行等比较敏感的网站经常采用地域性屏蔽(例如,如果平时只在某个特定国家使用其服务,从其他国家访问时,你的账号可能就会被冻结)。

如果你不能连接到洋葱服务器,请查阅我无法访问 X.onion!

HTTPS

简单来说:是的,你可以使用 Tor 浏览普通的 HTTPS 网站。

HTTPS 连接用于确保计算机网络中的通信安全。 你可以在这里阅读更多有关 HTTPS 的信息。 Tor 浏览器的 HTTPS-Only 模式自动将成千上万的网站从未加密的 “HTTP” 切换到更私密的“HTTPS”。

Tor 浏览器防止窃听者获知你访问过的网站。 不过,通过普通 HTTP 传输的未加密信息,对于出口节点运营者以及出口节点与目标网站之间的监视者,仍是可截获的。 如果网站使用 HTTPS,那么离开出口节点的流量是加密的,并且对于窃听者不是可见的。

下方的可视化图例呈现了使用和未使用 Tor 浏览器和 HTTPS 加密连接时,哪些数据对网络监听者是可见的:

  • 点击“Tor”按钮显示:在使用 Tor 时网络监听者可看到哪些数据。该按钮变绿表示 Tor 已启动。
  • 点击“HTTPS”按钮显示:在使用 HTTPS 时网络监听者可看到哪些数据。该按钮变绿表示 HTTPS 已启动。
  • 两个按钮都是绿色时,你可以看到在两种功能同时启动的状态下,哪些数据对于网络监听者可见。
  • 两个按钮都是灰色时,你可以看到在两种功能都没有启动的状态下,哪些数据对于网络监听者可见。



潜在可见数据
Site.com
正在访问的网站。
用户名/密码
用于身份验证的用户名和密码。
数据
正在传输的数据。
位置
计算机用于访问网站的网络位置(公网 IP 地址)。
Tor
无论是否使用 Tor。

中继运营者

我们旨在让搭建 Tor 中继是容易且方便:

  • 如果中继偶尔离线,这并没有关系。 目录很快注意到这一点,并停止播发该中继。 尽量确保离线不是太频繁,因为中继断开连接时,使用该中继的连接也中断。
  • 每个 Tor 中继都有出口政策,详细规定中继应该允许或拒绝哪些传出连接。 如果你不想别人的流量将你的中继作为出口,可将其设置为仅允许连接其他 Tor 中继。
  • 你的中继将被动地估计并广播它最近的带宽容量,所以高带宽的中继会比低带宽服务器吸引更多的用户。因此,低带宽中继的存在也是有用的。

如果出口配置错误或是恶意的,将被分配 BadExit 标志,防止 Tor 使用该中继作为出口。事实上,带有该标志的中继相当于不存在。 出现这个标志表示,路由流量通过你的出口时,发现问题或可疑活动,但无法与你取得联系。请与 bad-relays 团队联系,以便出现该问题。

关于如何用 NAT 或路由设备进行端口转发,请查阅 portforward.com 提供的相关指南。

如果你的中继在内网运行,你需要设置端口转发。 转发 TCP 连接取决于系统,不过防火墙端口常见问题的条目提供了一些相关示例。

另外,以下示例说明如何在 GNU/Linux 下使用 iptables 操作:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

如果你有不同的外部接口(连接到互联网),可能需要改动“eth0”。 通常只有一个(除了 loopback),所以不会很复杂。

为什么中继负载差异很大

Tor 管理整个网络的带宽。对大多数中继来说,它运作良好。 但 Tor 的目标与 BitTorrent 等协议不同。 Tor 想要低延迟的网页,需要较快的连接和动态余量。 BitTorrent 想要大量下载,这就需要使用所有的带宽。

我们正在开发新的带宽扫描程序 ,更容易理解和维护。 它可对未测量或测量值较低的中继进行诊断。

Tor 为什么需要带宽扫描程序?

大多数供应商会告诉你本地连接的最大速度。 但是 Tor 用户来自世界各地,而且用户随机地连接 1 或2 个守卫中继。 所以,我们需要知道每个中继能连接到全世界的速度。

因此,即使所有中继运营者将其播放带宽设置为本地连接速度,仍需带宽管理机构来平衡互联网不同部分之间的负载。

正常的中继负载是多少?

正常情况下,大多数中继的负载使用 30%-80% 的容量。 这对客户端是有益的:过载中继延迟较高。 (我们希望有足够的中继,并且每个中继的负载是带宽的 10%。这样,Tor 的速度就将和普通互联网一样快)。

有时,中继变慢是因为它的处理器慢或者是连接受到了限制。 有时是因为网络太慢:中继与大多数其他 Tor 中继的对等连接不好,或者距离太远。

找出限制中继的原因

很多事情会减慢中继的速度。下面是如何查明原因。

系统限制

  • 检查中继的内存、CPU 和套接/文件描述符的使用情况

启动时 Tor 记录其中一些信息。其他的可以使用 top 或者类似工具查看。

服务商限制

  • 检查你的中继提供商到其他中继的互联网对等连接(带宽、延迟)。 通过 Comcast 传输的中继有时会变得比较慢。 北美和西欧以外的中继通常比较慢。

Tor 网络限制

中继带宽可以被中继自身观测的带宽,或被目录管理机构测量的带宽限制。 以下是如何找出哪种测量值限制了中继:

  • consensus-health(大页面)上检查对中继的每一个投票,并检查中值。 如果中继没有被一些目录管理机构标记为“Running”:
    • 是否有错误的 IPv4 或 IPv6 地址?
    • 它的 IPv4 或 IPv6 地址是否从某些网络不可连接?
    • 它的 IPv4 地址上是否有 2 个以上的中继?

否则,请检查中继的观测带宽和带宽速率(限制)。 在Metrics上查找中继。 然后,将鼠标移到带宽标题上,查看观测到的带宽和中继带宽速度。

可以参考以下较具体的案例:共识权重下降出口中继的上升速度

如何解决

这些数字中的最小值限制了分配给中继的带宽。

  • 如果是带宽速率问题,在 torrc 中增加 BandwidthRate/Burst 或者 RelayBandwidthRate/Burst。
  • 如果是观测带宽,那么除非看到自身变快,中继不会要求更多带宽。 你需要弄清楚为什么很慢。
  • 如果是中值测量的带宽,从大多数的带宽管理机构来看,你的中继较慢。 你需要弄清楚为什么测量值较低。

对中继进行自测

如果你的中继认为它很慢,或者带宽管理机构认为它很慢,可自己测试带宽:

  • 使用 Tor 运行测试,以查看在您的网络上 Tor 可以达到多快

    为此,你需要配置一个Tor客户端,将你的中继作为入口使用。 如果你的中继只有Guard标志,请在torrc文件中使用您的中继指纹设置EntryNodes。 如果你的中继没有 Guard 标志或者它具有 GuardExit 标志,你不能将您的中继设置为入口节点(请参阅https://gitlab.torproject.org/tpo/core/tor/-/issues/22204),但是即使它不是桥接器,你仍然可以将其设置为桥接器。 要将你的中继设置为桥接模式,请在你的 torrc 文件中添加以下内容:

    Bridge <ip>:<port>
    UseBridge 1
    

    然后使用您的 SocksPort 作为 socks 代理下载一个大文件。 为此,您可以使用curl,例如:

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    使用不同的user/password可以确保不同的线路。你可以使用$RANDOM

    这将使你了解你的中继可以承受多少流量。

    或者,您可以运行 relay_bw 来测试您的中继器,使用 2 跳线路,类似于 sbws 的方式。

  • 使用 Tor 和 chutney运行一个测试,以了解 Tor 在您的 CPU 上可以达到多快。 不断增加数据量,直到带宽停止增长。

有两个选项可添加到 torrc 文件:

BandwidthRate 指允许的最大长期带宽(字节/秒)。 例如,对于 10 MB/s(较快连接),你可以选择“BandwidthRate 10 MBytes”,对于 500 KB/s(还算不错的连接),可以选择“BandwidthRate 500 KBytes”。 最小的 BandwidthRate 是 75KB 每秒。

BandwidthBurst 是一个字节池,用于短期流量高于 BandwidthRate 时满足带宽需求,但仍保持长期平均流量低于 BandwidthRate。 BandwidthRate 较低而 BandwidthBurst 较高,可实现长期平均值不变;同时,如果最近未达到平均值,在高峰期仍可允许更多的流量 。 比如,如果指定“BandwidthBurst 500 KBytes” 并将其应用到 BandwidthRate,那么网速就永运不会超过 500 kilobytes 每秒;但如果你选择了一个更高的 BandwidthBurst (如 5 MBytes),它就会允许更多的数据通过,直到字节池为空。

如果你的连接是非对称的(上传小于下载),比如电缆调制解调器,你应该把 BandwidthRate 设置为小于较小带宽(通常是上传带宽)。 否则,在使用最大带宽期间,将出现大量丢包。哪些值可让连接较稳定,你可能需要进行实验调试。 然后设置 BandwidthBurst 为与BandwidthRate 相同的值。

基于 Linux 系统的 Tor 节点提供了另外一种选择:将 Tor 流量的优先级设置为低于系统上的其他流量,这样个人流量将不受 Tor 的影响。 在 Tor 源代码分发下的 contrib 目录,可以找到执行此操作的脚本

此外,休眠选项可指定 Tor 在每个时间段只提供一定量的带宽(比如每月 100 GB)。相关信息,可参阅休眠条目

请注意,BandwidthRate 和 BandwidthBurst 都是以字节而不是比特为单位的。

简而言之,它这样工作:

  • 有一个 ed25519 主身份密钥文件,名称为“ed25519_master_id_secret_key”。 这是最重要的密钥,请确保在安全的地方保存备份——该文件较为敏感,应好好保管。 如果手动生成,Tor 将对它加密;在询问时输入密码。
  • 生成中期签名密钥,名称为 ed25519_signing_secret_key,以便 Tor 使用。 同时,会生成名为“ed25519_signing_cert”的证书,该证书由主身份秘钥签署,并用于确认中期签名密钥在一定时间内有效。 默认有效期为 30 天,但可在 torrc 里通过设置“SigningKeyLifetime N days|weeks|months”进行自定义。
  • 还有一个名为 “ed25519_master_id_public_key” 的主公钥, 这是中继在网络中进行广播所用的真实身份。 这个公钥并不敏感,可以很容易从 “ed5519_master_id_secret_key”计算。

Tor 只需访问中期签名密钥和证书,只有是有效的,因此主身份秘钥可以保存到 DataDirectory/keys 以外的存储介质或其他电脑。 必须在过期之前续订中期签名密钥和证书,否则中继上的 Tor 进程将在到期后退出。

这个功能是可选的,除非想用,否则可以不用。 如果想要中继更长时间无人值守地运行,并无需定期手动更新中期签名密钥,最好将主身份密匙保存到 DataDirectory/keys,然后做个备份,以备需要时重装。 如果想要使用这一功能,请参考我们在这个话题上更详细的指南

如果你的中继才刚刚开始运行,请给它一些时间。 根据带宽管理机构的报告,Tor 启发式地决定使用哪个中继。这些管理机构测量中继容量,并逐渐引导更多流量至你的中继,直到它达到最佳负载。 新中继的生命周期在这个博客帖子 里解释的更为详尽。 如果中继已运行一段时间但仍有问题,那么请尝试在tor-relays 邮件列表 上提问。

  • 不要使用 Ubuntu 仓库中的包,它们未得到可靠更新。 如果你使用它们,你可能会错过重要的稳定性和安全性修复。
  • 运行下面的命令确定你 Ubuntu 的版本:
     ‪$ lsb_release -c
    
  • 以 root 用户身份把下面的行添加到 /etc/apt/sources.list 中。用前一步你获得的版本号代替“version”:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • 运行下面的命令,添加软件包签名所用的 gpg 密钥:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • 运行下面的命令来检查签名并安装 tor:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

在中继搜索中,如果中继过载,中继昵称旁边将显示黄色小点。 这意味着以下负载指标中,至少有一个被触发了:

注意:如果中继达到超载状态,在中继恢复后仍将显示 72 小时。

假若发生中继过载,请执行以下步骤:

  1. 查看 https://status.torproject.org/ 的“Tor 网络”(Tor Network)部分,是否存在任何已知问题。

  2. 调整系统sysctl优化网络、内存和 CPU 的负载。

  3. 启用 MetricsPort了解实际情况。

调整 sysctl 优化网络、内存和 CPU 负载

TCP 端口耗尽

如果遇到 TCP 端口耗尽的问题,可以考虑扩大本地端口的范围。 扩大范围可以用

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

请记住,如上所述,调整的 sysctl在重启时丢失,而不是永久的。 为了永久有效,需将其添加到 /etc/sysctl.conf/etc/sysctl.d/中的文件。

MetricsPort

想要了解 Tor 中继和 Tor 网络的运行情况,提供并可访问中继指标是至关重要的。 从 0.4.6+ 开始,中继超载信息被加入到中继描述符中,但直到 Tor 0.4.7.1-alpha 之后,才提供底层中继指标的接口:指标接口。

启用 MetricsPort

通过 torrc 配置选项MetricsPort,Tor 提供指标端口的访问。

重要的是要明白, 对 Tor 网络用户来说,公开暴露 Tor MetricsPort 是为危险的,因此该端口默认不启用,而且其访问必须受到访问政策的约束。 所以,在打开这个端口时,请务必小心谨慎,并在调试完毕后把它关闭。

假设你是运行了 Tor 中继的服务器上的唯一用户。 可以在 torrc 文件中添加以下内容来启用指标端口:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

然后使用以下命令可轻松获取指标:

# curl http://127.0.0.1:9035/metrics

默认为 Prometheus 格式。

注意: 该服务器上的每个用户都能够访问上述例子中的中继指标。 通常,可通过MetricsPortPolicy 设置严格的访问政策,并考虑使用操作系统防火墙功能进行深度防御。

关于 MetricsPortMetricsPortPolicy更详细的解释,请参阅 tor 的 man 页面。

MetricsPort 输出

以下示例为MetricsPort 启用后生成的输出(删去了所有与拥塞控制有关的指标,因为我们仍然需要稳定该接口):

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

下面解释其中一些行代表的意思:

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

当中继开始出现“dropped”时,通常是 CPU 或内存出现问题。

除了 在处理 “洋葱皮” 进程时,Tor 是单线程的。 在每个线路著名的“洋葱层”上,需要进行的加密工作就是“洋葱皮”。

当 Tor 处理这些层时,我们使用线程池,并将所有工作外包到该线程池。 可能出现,由于内存或 CPU 的压力,该线程池开始丢弃工作,进而触发一个超载状态。

如果服务器满负载运行,很可能触发它。

tor_relay_exit_dns_error_total{...}

“*_dns_error_total” 领域的任何计数器(成功查询的除外)都表明可能存在 DNS 相关的问题。 然而,我们在 0.4.7 的发布周期中意识到,DNS 错误的噪音太大,且包含太多的假阳性,不可用于超载报告。 因此,从 0.4.6.9 和 0.4.7.4-alpha 开始,我们不再将其用于此目的。然而,为了便于中继操作员了解中继发生了什么,仍然保留了 DNS 指标。

DNS 超时问题和错误只适用于出口节点。

tor_relay_load_oom_bytes_total{...}

内存不足调用表示这是内存的问题。 该中继需要更多的 RAM 或者它正在泄露内存。 如果 tor 出现内存泄露,请通过 Tor gitLab 或发送邮件至tor-relays 邮件列表报告这个问题。

Tor 自带 OOM 处理程序。当达到 tor 认为的可使用内存的 75% 时,将调用该处理程序。 因此,假设 Tor 认为它总共可以使用 2GB 的内容,当使用 1.5GB 的内存量时,它就会开始释放内存。 这视为超载状态。

为了估计可用的内存总量,当启动 Tor 时,它将使用 MaxMemInQueues;如果没有设置,将查看系统可用内存总量,并执行以下算法:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

为了避免过载状态,我们建议在 64 位上运行内存 2GB 以上的中继。 建议 4GB,当然,也可以增加更多的内存。

可能有人会注意到, Tor 可能被操作系统的 OOM 处理程序自身调用。 因为 tor 在启动时占用了系统的总内存,如果整个系统还有许多其他应用程序也在使用内存运行,那么最终占用太多内存。 在这种情况下,操作系统可能会使 Tor 的内存不足,而 Tor 甚至都没有注意到内存压力。

tor_relay_load_socket_total

如果打开的 socket 端口数量接近或等于可用的总数,那么这就表明,中继 socket 端口快要用尽了。 解决方法是增加 Tor 进程的ulimit -n

tor_relay_load_tcp_exhaustion_total

这几行表示中继的 TCP 端口快要用尽了。

尝试按照上述方法调整sysctl

tor_relay_load_global_rate_limit_reached_total

如果在短期内,这个计数器数值出现明显递增,那么这个中继发生了拥塞。 它很可能用作大型洋葱服务的守卫节点,或者用于在网络上进行 DDoS。

如果中继仍超载,而且不知道为什么,请联系 network-report@torproject.org。 可以使用 network-report OpenPGP 密钥来加密邮件。

太好啦!如果你想运行多个中继来为网络贡献更多,我们很欢迎这样做。 但请不要在同一个网络上运行太多中继,因为分散与多样性是Tor 网络目标的一部分。

如果你决定运行多个中继,请在每个中继的 torrc 中设置“MyFamily”选项,列出你运行的所有中继(用逗号隔开):

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

每个指纹是 40 个字母组成的身份指纹(没有空格)。

这样的话,Tor 客户端知道如何在单个线路中避免使用多个你的中继。 如果你具有这些计算机或其网络的管理员权限,即使不在同一地理位置,也应该设置“MyFamily ”。

Tor 已部分支持 IPv6 并建议在 IPv6 连接可用时,每个中继运营者在 torrc 配置文件中启用 IPv6 功能。 Tor 目前需要中继的 IPv4 地址,你不能在仅有 IPv6 的主机上运行 Tor 中继。

是的,对于某些攻击,你确实获得更好的匿名性。

最简单的例子是拥有一些数量 Tor 中继的攻击者。 他们看到连接来自你,但不知道这个连接是你发起的,还是转发其他人的。

有些情况,者似乎并没有帮忙:如果攻击者能观察你所有的通信往来,那么他很容易发现哪些连接是转发,哪些是你发的。 (在这个情况下,他们仍然不知道你的目的地址,除非他们也在观察目的地址,但你的处境也不比一个普通客户端更好。)

运行 Tor 中继也有一些坏处。 首先,我们只有几百个中继,而你恰好运行其中一个,这个事实对于攻击者来说是一个信号:你把匿名看得很重要。 第二,有一些攻击更为罕见,尚未对其进行深入研究或理解。这些攻击利用你正在允许中继这一信息,例如,即使攻击者不能实际监视你的网络,但通过使用你的 Tor 中继转发流量并观测流量计时变化,他们可能能够“观测”你是否在发送流量。

收益是否大于风险是一个开放的研究性问题。 很大程度上这取决于你最担心的攻击方式。 对于大多数用户,我们认为这是明智之举。

Tor 通过询问计算机的主机名来猜测它的IP地址,然后解析那个主机名。通常 /etc/hosts 文件里有指向旧 IP 地址的旧条目。

如果不能解决问题,应通过“ Address”配置选项来指定你想选取的 IP 地址。如果你的计算机位于 NAT 后,并且只有一个内部 IP 地址,请查看以下有关动态 IP 地址的“支持”内容。

并且,如果你有许多地址,可设置“OutboundBindAddress”,这样外部连接将使用你想要开放的 IP 地址。

torrc 文件中的核算选项,可用于指定中继在一段时间内可用的最大字节数。

    AccountingStart day week month [day] HH:MM

这指定了何时进行核算重置。例如,设置为一周内字节总额(每个周三上午 10:00 重置 ),可使用:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

这指定了核算周期内中继可收发的最大数据量。 当(根据 AccountingStart)重置核算周期后,AccountingMax 计数器将重置为0。

比如:假设你想要每天每个方向设置 50GB 的流量,并且计数器在每天中午重置:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

请注意,中继并不会正好在每个核算周期开始时唤醒。 它将记录上一周期配额使用速度,并在新周期中随机选择一个点启动。 通过这种方式,可避免每月开始时大量中继在运行而月末没有中继还在运行。

如果相对于连接速度,你只能贡献一小部分带宽,我们推荐你使用每日核算方式,这样你就不会在每月第一天用完整月的额度。 只需将每月总额除以 30 即可。另外,可可对流量限速,以便每天有更多时间是运行的:如果想要在每个方向提供 X GB,可将 RelayBandwidthRate 设为20*X KB。 比如,如果每种方法可提供 50GB,可将RelayBandwidthRate 设置为 1000 KBytes: 这样中继可保持每天中至少有一半时间是可用的。

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # 允许较高突发值但保持平均

  • 出口节点是最需要的中继类型,但同时,法律风险也最高(请勿在自己家里运行出口节点)。
  • 如果想要运行中继而不用花费什么精力,快速的守卫中继也是非常有用的
  • 接下来是网桥。

必须允许所有传出连接,这样每一个中继才可以与其他中继通信。

在许多司法管辖区,Tor 中继运行者受到公共运营商法规保护,同样的法规防止互联网服务提供商对通过其网络的第三方内容承担责任。 过滤某些流量的出口节点将丧失那些保护。

Tor 倡导不受干扰的免费网络访问。 出口中继不可过滤流经的互联网流量。 被发现过滤流量的出口节点将被贴上 BadExit 标签。

你是正确的,在大多数情况下,你的 Tor 中继进出流量是相同的,但有几个例外:

如果开放 DirPort 端口,Tor 客户端将向你索要目录副本。 他们发出的请求(HTTP GET)非常小,然而响应有时非常大。 读写字节数差异大部分应出自这种情况。

对于出口节点,需要读取出口连接(如,一条即时消息或 ssh 连接)几个字节并将其打包放入完整的 512 字节单元,以在 Tor 网络传输,这时另一个小异常将出现。

我们正在寻找具有可靠互联网连接的人,这至少要10 Mbit/s (Mbps) 的带宽。如果你符合条件,请考虑架设 Tor 中继

即使没有 10 Mbit/s 以上可用带宽,仍然可以通过架设支持 obfs4 的 Tor 网桥来帮助 Tor 网络。这种情况下,至少需 1 Mbit/s 可用带宽。

很好,这正是我们实施出口政策的原因。

每个 Tor 中继都具有出口政策,用于指定该中继允许或拒绝什么样的出站连接。 出口政策经由目录传播到 Tor 客户端,客户端将自动避开某些出口中继,因为其出口政策拒绝用户访问目标站点。 通过这种方式,每个中继可根据滥用可能性及其自身状况,决定允许连接到的服务、主机网络。 如果使用默认的出口政策,请参阅可能遇到问题,然后阅读 Mike Perry 的博文出口节点骚扰最小化小提示

默认出口政策允许访问许多热门服务(如网页浏览),但限制一些可能存在滥用的服务(如电子邮件),还有一些服务因 Tor 网络无法处理其负载而受到限制(如默认文件共享端口)。 可通过编辑你的 torrc 文件来更改出口政策。 如果想避免大部分而不是全部滥用的可能性, 把它设置为“reject *:*”。 该设置表示,中继只用于在 Tor 网络内转发流量,而不用于连接至外部网站或其他服务的流量。

如果想要允许任何出口连接,请确保域名解析正常(即:你的电脑能正确解析网络地址)。 如果你的计算机存在无法访问的资源(比如,你的网络有限制性防火墙或内容过滤器),请在出口节点政策中明确标记为拒绝,否则其他 Tor 的用户也将受影响。

在升级 Tor 中继或将它转移到另一台计算机时,确保保持同样的身份密钥(存储于你的 DataDirectory 里的 keys/ed25519_master_id_secret_keykeys/secret_id_key)。

如果你是网桥运营者,还要确保保留 pt_state/。它包含了网桥所需的数据,以使网桥继续使用相同的网桥行。

为了简单起见,只需复制整个 DataDirectory 即可。

你可能希望保留这些身份密钥的备份,以及桥接器的 pt_state,这样如果出现问题,你就可以恢复中继。

不。 如果司法部门盯上了你的出口节点流量,他们可能没收你的电子设备。 出于这些原因,最好不要在你的家中或使用你家里的网络运行出口节点。

考虑在支持 Tor 的商业设施上运行 Tor 出口节点。 你的出口节点使用独立 IP 地址,而且不要将自己的流量通过它转发。 当然,在运行出口节点的电脑上,应避免存储任何敏感或个人信息。

如果你使用的是 Debian 或 Ubuntu,特别是,请使用Tor 项目的软件源,这样你可以轻松地接收更新。 此外,使用该软件包还提供其他便利:

  • 你的 ulimit -n 被设置为一个较高的数字,这样 Tor 就可以保持打开所有所需的连接。
  • 该软件包创建并使用一个独立的用户,因此您不需要以自己的用户身份运行 Tor。
  • 该软件包包含一个初始化脚本,以便 Tor 在启动时运行。
  • Tor 可以绑定到低编号端口,然后放弃权限。

如果允许出口连接,通过你的中继连接到的一些服务将连接回来,以收集更多有关信息。比如,一些 IRC 服务器连接回你的 identd 接口,来记录哪些用户进行了连接。(这实际上没用,因为 Tor 不知道这些信息,但他们还是会试一试。)此外,从你的节点出去的用户允许吸引了 IRC 服务器、网站等其他用户的注意,他们想要了解有关转发主机的更多信息。

另一个原因是,在互联网上扫描公共代理的小组了解到,Tor 中继有时将 socks 接口暴露在网络上。推荐你将socks 接口只与本地网络绑定。

无论何种情况,你都需要保持你的安全措施是最新的。更多建议,请参阅 Tor 中继的安全措施

默认开放的端口如下,但请注意,中继运营者可以通过在 torrc 中配置端口或修改源代码以开放任何端口。 根据源代码发行release-0.4.6中的 src/or/policies.c (第85行第1901行),默认是:

reject 0.0.0.0/8
reject 169.254.0.0/16
reject 127.0.0.0/8
reject 192.168.0.0/16
reject 10.0.0.0/8
reject 172.16.0.0/12

reject *:25
reject *:119
reject *:135-139
reject *:445
reject *:563
reject *:1214
reject *:4661-4666
reject *:6346-6429
reject *:6699
reject *:6881-6999
accept *:*

BridgeDB 使用六项机制以分发网桥:HTTPS、Moat、Email、 Telegram、Settings 和 Reserved。 网桥运营者可以在中继搜索上查看他们的网桥正使用何种机制。 在表单中输入网桥的 <哈希指纹>,然后点击“搜索”。

运营者也可以选择他们的网桥使用何种分发方式。 想要更改模式,请将 torrc 文件中的 BridgeDistribution 设置修改为以下之一:https、moat、email、telegram、settings、none 或 any。

更多信息,请参阅网桥安装后指南。

Tor 可以很好地处理使用动态IP地址的中继。 只需在 torrc 中将“Address”留白,Tor 将自动检测地址。

AccountingMaxBandwidthRate 指定的参数同时适用于 Tor 进程的客户端和中继。 因此你可能会发现,一旦 Tor 进入休眠,你就不能进行浏览了,而且在日志里出现这样一条记录:

Bandwidth soft limit reached; commencing hibernation.
No new connections will be accepted

解决方案是运行两个 Tor 进程:一个中继和一个客户端,每一个进程使用自己的配置。 如果已有正常运行的中继设置,一种方法如下:

  • 在中继的 Tor torrc 文件中,将SocksPort 设置为 0。
  • 从 torrc.sample 创建新的客户端 torrc 文件,确保它使用的日志文件与中继不同。。 根据命名惯例,将其命名为 torrc.client 和 torrc.relay。
  • 修改 Tor 客户端和中继启动脚本来包括-f /path/to/correct/torrc
  • 在 Linux/BSD/Mac OS X 系统中,将启动脚本改为Tor.clientTor.relay,这使分开配置更容易。

由于中继成为了守卫节点,客户端将更少将其用在其他位置,同时,许多客户端尚未轮换已有守卫,还未用到你的中继。 更多详细信息,请参阅这篇博客帖子Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor

可以使用下列教程在 Windows 中架设中继:

只有能够 24/7 运行的情况下,才应该架设 Windows 中继 。 如果不能保证,Snowflake 是为 Tor 网络贡献资源的更好方式。

如果 Tor 中继所用内存超过预期,以下为一些降低内存占用的技巧:

  • 如果使用 Linux,可能在 glibc 的 malloc 实施中遇到内存碎片缺陷。 这就是说,当 Tor 将内存释放回系统后,这些内存将碎片化,很难再利用。 Tor 的 tarball 自带 OpenBSD 的 malloc 实施,这个方法没有那么多的碎片故障(但代价是更高的 CPU 负载)。 可以要求 Tor 使用 malloc 实施: ./configure --enable-openbsd-malloc
  • 如果你正在运行一个高速中继,这意味着许多 TLS 连接处于打开状态,你可能分配大量内存到 OpenSSL 内部缓冲区(每个数据包 38KB+)。 我们已经给 OpenSSL 打过补丁,来更激进地释放未使用的缓冲区内存。 如果升级到 OpenSSL 1.0.0 或更新版本,Tor 的构建进程将自动识别并使用该功能。
  • 如果仍然无法承担内存负载,可考虑减少中继播放的带宽总额。 播放较少的带宽意味着吸引的用户较少,这样你的中继不会变的较大。 请查阅 man 页面中的MaxAdvertisedBandwidth选项。

综上所述,高速 Tor 中继使用许多内容。高速出口中继占用 500-1000 MB内存并非不常见。

洋葱服务

怎样知道我用的是 v2 还是 v3 版洋葱服务?

可以通过 56 个字符的长度来识别洋葱地址 v3 版,例如,e.g. Tor Project v2 版的地址是:http://expyuzz4wqqyqhjn.onion/,Tor Project v3 版的地址是:http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/

如果你是洋葱服务管理员,必须尽快升级到 v3 版洋葱服务。 如果你是用户,请确保更新网站书签到 v3 版洋葱地址。

v2 什么时候弃用?

2020 年 9 月,Tor 开始提醒洋葱服务管理员和客户端, 0.4.6 版本将弃用并淘汰 v2。 2021 年 6 月,Tor 浏览器开始提醒用户。

在 2021 年 7 月,0.4.6 版 Tor 将不再支持 v2,并从代码库中移除相关支持。

2021 年 10 月,我们将为所有支持的系列发布新的 Tor 稳定版本客户端,该版本将禁用 v2。

你可以阅读 Tor Project 的博客贴文洋葱服务 v2 版弃用时间表以了解更多内容。

能否继续使用 v2 版洋葱地址?在 9 月以后是否还能访问 v2 版洋葱地址吗?这个变更是否向后不兼容?

洋葱地址 V2 版从根本上来说是不安全的。如果使用洋葱 V2 版,我们建议你现在进行迁移。 这是一个向后不兼容的变化:洋葱服务 V2 版在 2021 年 9 月后将无法使用。

关于迁移,对开发人员有什么建议?对如何传播新的 v3 地址有什么建议?

要创建 v3 版的地址,与 v2 类似,只需在 torrc 中添加以下两行内容,即可创建新服务:

HiddenServiceDir /full/path/to/your/new/v3/directory/
HiddenServicePort <virtual port> <target-address>:<target-port>

现在版本默认设置为 3,无需另外设置。 重新启动 Tor,并在目录上寻找新的地址。 如果你希望继续运行 v2 版服务直到弃用,以便为用户提供一个过渡期,请在 v2 版服务的配置区块中添加下面这一行:

HiddenServiceVersion 2

这将用于在配置文件中识别是哪个版本。

如果在网站上配置了Onion-Location,就需要用新的 v3 版地址来设置头部。 关于运行洋葱服务的技术文档,请阅读“社区门户”的洋葱服务

之前没有注意到通知,可以给我更多的时间来移植吗?

不可以,v2 洋葱连接现在开始失效,首先比较慢,然后将很快。现在是时候迁移了。

服务将在 9 月开始失效,还是之前?

在 Tor 0.4.6 中已经没有介绍点了,所以在中继管理员更新之后,它们将无法连接。

作为网站管理员,可以把用户从 v2 版重定向至 v3 版吗?

可以的,在洋葱地址 v2 版无法服务前,可以这样做。 你也许可以鼓励用户更新他们的书签。

v3 版洋葱服务可以缓解 DDos 问题吗?

是的,我们正在不断努力提高洋葱服务的安全性。 我们线路图中的一些工作是ESTABLISH_INTRO 数据包 DoS 防御扩展Res tokens:洋葱服务匿名凭证的 DoS 弹性以及介绍电路上的 PoW 初探。 关于这些建议,请阅读博客贴文如何阻止洋葱拒绝(服务)

Onion-Location 指 HTTP 头,用于网站推广其洋葱地址。 如果正在访问的网站有可用的洋葱网站,URL 栏上会出现一个紫色的建议框提示 “.onion 可用”。 当你点击 “.onion 可用”时,该网站会重新加载并重新定向至对应的洋葱服务网站。 目前,Onion-Location 可以在 Tor 浏览器桌面版(Windows、macOS 和 GNU/Linux)中使用。 可以在 Tor 浏览器用户手册中了解更多关于 Onion-Location 的信息。 如果你是洋葱服务管理员,请查看在洋葱网站 如何配置 Onion-Location以了解更多内容。

经过认证的洋葱服务要求在访问该服务之前提供验证令牌(这里指私钥)。 私钥不会传输给该服务,它只用于本地解密其描述符。 可以从洋葱服务管理员获得访问凭证,请联系管理员并申请访问。 请查看在 Tor 浏览器中,如何使用洋葱验证了解更多相关内容。 If you want to create an onion service with client authentication, please see the Client Authorization in the Community portal.

访问洋葱服务时,Tor 浏览器在地址栏展示不同的洋葱图标,表示当前网站的安全级别。

洋葱图案 洋葱表示:

  • 该洋葱服务通过 HTTP 或者具有 CA 证书的 HTTPS 连接。
  • 该洋葱服务通过带有自签名证书的 HTTPS 连接。

带有红色斜线的洋葱图案 带有红色斜线的洋葱表示:

  • 该洋葱服务器通过不安全的 URL 脚本连接。

带有警告标志的洋葱图案 带有警告标志的洋葱表示:

  • 该洋葱服务通过证书过期的 HTTPS 连接。
  • 洋葱服务通过域名错误的 HTTPS 连接。
  • 该洋葱服务通过一个不安全的 URL 网址以混合方式连接。

只能通过 Tor 访问的网站称作“洋葱站点”,它们以顶级域名 .onion 结尾。 比如,DuckDuckGo 的洋葱站点是 https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/。 你可以用 Tor 浏览器访问这些网站。 因为洋葱服务并不能像普通网站一样被搜索引擎索引,所以必须由网站所有者把洋葱服务的地址分享给你。

如果无法连接洋葱服务,请确保已正确输入 56 个字符的洋葱地址;即使一个小错误也将阻止 Tor 浏览器连接该网站。 如果仍然无法访问这个洋葱服务,请稍后重试。 可能连接暂时存在问题,或者站点已脱机但管理员未提醒。

也可以通过连接到 DuckDuckGo的洋葱服务来确保你能访问其他的洋葱服务。

洋葱服务允许人们匿名的访问和发布信息,包括架设匿名网站。

另外,洋葱服务可用于提供多种服务:去元数据的聊天和文件共享,如通过 SecureDropOnionShare 在记者与消息源之间进行互动和资源共享,更安全的软件升级,以及更安全地访问热门网站,如 Facebook

这些服务使用专用的顶级域名(TLD).onion(而不是.com、.net、.org 等),并只能通过 Tor 网络访问。

洋葱图标

当访问使用洋葱服务的网站时,Tor 浏览器将通过 URL 栏中的洋葱图案来表示连接状态:安全和使用洋葱服务。

如果需要了解更多洋葱服务,请阅读洋葱服务如何工作

其他

我们很抱歉,你被恶意软件感染。 Tor Project 并没有创建这个恶意软件。恶意软件作者要求你下载 Tor 浏览器,大概是想要你匿名联系他们来交付赎金。

如果这是你第一次听说 Tor 浏览器,我们理解,你可能认为我们是坏人,帮助了更坏的人。

但请考虑,人权活动家、记者、国内暴乱幸存者、举报人、执法人员和其他许多人,每天都处于各种各样的原因在使用我们的软件。非常遗憾,我们的软件在保护这些人的同时,也被罪犯和恶意软件作者拿来滥用。 Tor Project 不支持或纵容以恶意的方式使用我们的软件。

目前,路径长度硬编码为 3,再加上路径中敏感节点的数量。 这表示:通常是 3,但可能更多,比如访问洋葱服务或“.exit”地址。

我们不鼓励使用更长的路径,因为这将增加网络的负载,而(据我们所知)未增加任何安全性。 同时,长度超过 3 的线路可损害匿名性。首先,这将安全拒绝攻击变得更容易;其次,如果只有少数用户使用相同长度的路径,它可成为用于识别用户的标识器。

Tor 开发者没有追踪 Tor 用户的手段。 防止坏人破坏 Tor 匿名性的保护措施,同时也防止我们追踪用户。

Tor 的目的在于,防止任何人(包括我自己)实施审查,捍卫人权和隐私。 我们不想有人用 Tor 做坏事,但我们无法做到在屏蔽这些人的同时,不伤害人权活动者、记者、虐待幸存者以及其他做好事的 Tor 用户。 如果想要阻止某些人使用 Tor,基本上是说我们要在软件中植入后门,这相对于打开大门,把脆弱的用户暴露于作恶政权和其他对手的攻击之下。

Tor 依靠全球用户和志愿者的支持,来协助我们改进相关软件和资源,因此你的反馈对我们(以及所有 Tor 用户)而言极具价值。

反馈模板

给我们发送反馈或者报告漏洞时,请尽量包含以下信息,越多越好:

  • 使用的操作系统
  • Tor 浏览器版本
  • Tor 浏览器安全级别
  • 请逐步说明你如何碰到该问题,以便我们能够将其重现。(比如,“我打开了浏览器,输入 url,点击图标,然后我的浏览器就崩溃了。”)
  • 问题的截屏
  • 日志文件

如何与我们联系

有多种方式可以联系我们,请选择对你来说最方便的一种。

Tor 论坛

建议在 Tor 论坛寻求帮助。 需要先建立账户才能发文。 在提问之前,请查看讨论指南。 目前,为了尽快获得回应,请使用英文书写。 如果发现漏洞,请使用 GitLab 反馈。

GitLab

首先,检查该缺陷是否已知。 你可以在 https://gitlab.torproject.org/ 上搜索并查看所有的问题。 想要新建问题,请申请新账户来访问 Tor Project 的 GitLab 实例,并找到正确的存储库来报告你的问题。 我们用 Tor 浏览器的问题跟踪器 跟踪所有与 Tor 浏览器有关的问题。 网站相关的问题应在网页问题跟踪器处提交。

Telegram

如果需要帮助安装 Tor 浏览器或排查故障,并且所在地屏蔽或审查 Tor 论坛,可以通过 Telegram https://t.me/TorProjectSupportBot与我们联系。 Tor 支持专员将协助你。

WhatsApp

可发送文本消息我们的 WhatsApp : +447421000612 寻求协助。 该服务仅限文本消息,不支持视频和语音通话。

Signal

可发送文本消息到我们的 Signal : +17787431312 求助。 Signal 是一款免费且注重隐私保护的通讯应用。 该服务仅限文本消息,不支持视频和语音通话。 在信息发送后,支持人员将为你提供指引和帮忙,以便排除故障。

电子邮件

请给我们发送电子邮件至frontdesk@torproject.org

在电子邮件的主题栏中,请简述你要报告的内容。 请使用更为明确的邮件主题(如“连接失败”“网站反馈”、“ Tor 浏览器反馈”、“需要网桥”),以便我们更容易理解并跟进你的问题。 如果电子邮件主题为空,有时将被视为垃圾邮件,导致我们没有看到你的邮件。

为了得到更快的回应,请使用英语、西班牙语或葡萄牙语写邮件。 如果以上语言都不适合,请选择你想用的任何语言,不过请注意,由于需要通过翻译来理解你的消息,回复将需更长时间。

博客文章评论

在与你的问题或反馈相关的博文下,你可以随时发表评论。 如果没有相关问题的博文,请使用其他方式联系我们。

IRC

可以在 OFTC 上的 #tor 频道提交反馈或漏洞/问题。 我们可能不会立即回复,但我们会查看近期收到的信息,然后尽快的回复。

了解如何连接到 OFTC 服务器

邮件列表

如果想用邮件列表报告问题或反馈,建议使用相应的列表 。邮件列表的完整目录可以在这里找到。

有关我们网站的反馈或问题:ux

有关运行 Tor 中继的反馈或问题: tor-relays

报告安全问题

如果有安全问题,请发邮件至 security@torproject.org。

如果需要对邮件加密,可以从这个地址keys.openpgp.org获得 OpenPGP 的公钥。以下是当前的指纹:

  pub   rsa3072/0x3EF9EF996604DE41 2022-11-15 [SC] [expires: 2024-12-11]
      Key fingerprint = 835B 4E04 F6F7 4211 04C4  751A 3EF9 EF99 6604 DE41
  uid Tor Security Contact <security@torproject.org>
  sub   rsa3072/0xF59EF1669B798C36 2022-11-15 [E] [expires: 2024-12-11]
      Key fingerprint = A16B 0707 8A47 E0E1 E5B2  8879 F59E F166 9B79 8C36

如果要参加漏洞赏金计划,请注意,向第三方网站报告安全问题会带来我们无法控制的风险,所以请直接向我们报告。

即使应用程序使用的是正确的 SOCKS 协议变体,仍然有可能泄露 DNS 请求。 Firefox 扩展存在这种问题,它们自己解析解析目标主机名,例如,显示它的 IP 地址,在哪个国家等等。 如果怀疑某个应用程序可能有上述行为,可以按照下面的指示进行检查。

  1. torrc 文件中加入TestSocks 1
  2. 启动 Tor,并将程序 SOCKS 代理设置指向 Tor 的 SOCKS5 服务器(默认是socks5://127.0.0.1:9050 )。
  3. 在使用你的应用程序时,查看日志,对于每个 socks 连接, 在 Tor 日志将显示:注意表示安全连接,警告表示泄漏 DNS 请求的连接 。

如果你想自动禁用所有泄露 DNS 请求的连接,在 torrc 文件中设置SafeSocks 1

感谢你的支持! 你可以在我们的捐赠常见问题上找到更多信息。

要想通过 Tor 分享文件,onionShare 是个不错的选择。 OnionShare 是一个开源工具,用于通过 Tor 洋葱服务进行安全且匿名的文件分享。 它的工作原理是:直接在计算机上开启 web 服务器,并生成一个不可猜测的 Tor 网页地址以便访问,其他人在 Tor 浏览器加载该地址,即可下载或上传文件。 无需搭建独立服务器,使用第三方文件分享服务,甚至登录帐户。

不同于邮件、Google Drive、DropBox、WeTransfer 或几乎任何常用的文件分享服务,OnionShare 不会让任何公司访问你分享的文件。 只要不可猜测的网页地址通过安全方式分享(如通过加密通信软件传输),没有人可以访问这些文件,除了你和分享的对象。

OnionShare 由 Micah Lee开发。

很多出口节点的设置可屏蔽某些类型的文件分享流量,如 BitTorrent。 尤其,使用 Tor 的 BitTorrent 不是匿名的

没有,在 11 个 beta 版之后,我们终止了 Tor Messenger 的支持。 我们依旧相信 Tor 在通讯应用领域潜力,但是目前我们没有资源来实现。 如果你有,请联系我们

Vidalia 已经不再维护和支持。 Vidalia 提供的许多功能已经整合进了 Tor 浏览器中。

Tor 资金来自一些不同的赞助者,包括美国联邦机构、私人基金会以及个人捐赠人。 请查看全部赞助者清单和财务报告的博客帖子

我们认为,开诚布公地谈论赞助者和资助模式是与社区保持信任的最佳方式。 我们一直寻求资金来源多元化,尤其是基金会和个人。

每个人现在都可以做以下几件事:

  1. 考虑架设一个中继来帮助 Tor 网络发展。
  2. 告诉朋友!让他们运行中继。让他们运行洋葱服务。让他们再告诉他们的朋友。
  3. 如果赞成 Tor 的目标,请花点时间来捐赠 以支持 Tor 进一步发展。 我们也在寻找更多的赞助商,如果你知道任何需要匿名/隐私/通信安全的公司、NGO、其他机构或组织,请介绍我们给他们。
  4. 我们正在寻找更多的 Tor 用户优秀案例和 Tor 使用案例。 如果你使用 Tor 的场景或目的没有在该页面上,并且愿意与我们分享,我们乐意来自你的反馈。

文档

  1. 帮助将文档本地化 为其他语言。 如果想帮忙,请参阅成为 Tor 翻译者。 为了受审查地区的众多 Tor 用户,我们特别需要阿拉伯语或者波斯语的翻译。

倡议

  1. Tor 社区使用 Tor 论坛IRC/Matrix公共邮件列表
  2. 为世界各地用户的小组会议,创建一个演示文稿。
  3. 围绕某个主题,创建一个海报,比如“Tor 为人权!” 。
  4. 在研讨会或会议上传播 Tor 的信息,并使用 Tor 宣传册开启对话。

不这样做的几个原因:

  1. 我们不得不提供这些消息,因为 Tor 客户端需要用它来选择路径。 因此,如果“屏蔽者”想要屏蔽,他们总是能做到。 而且,即使不直接告诉客户端中继列表,仍然有人可以通过 Tor 建立大量连接到测试网站,并建立他们看到的地址列表。
  2. 如果想屏蔽我们,我们相信应允许他们这样做。 显然,我们希望每个人都允许 Tor 用户连接他们的服务,但人们有权决定允许谁连接,如果他们想屏蔽匿名用户,他们可以做到。
  3. 可封锁也有策略上的优势:对于感觉受到 Tor 威胁的网站维护者来说,这可能是一个有说服力的回应。 提供这个选项可能激发他们停下来想一想:是否真的想消除对他们系统的私人访问,如果不是,还有什么其他选择。 他们用来屏蔽 Tor 所用的时间,也许可以用来重新思考处理隐私和匿名的整体策略。

Tor 不保留任何能够识别用户身份的日志。 对于网络运行状态,我们的确采取了一些安全的测量,可在 Tor Metrics 查看。

关于 文档 媒体评论 工作 博客 新闻简报 联系我们 捐赠 支持 社区 最常见问题 关于 Tor Tor 浏览器 Tor Messenger 移动版 Tor GetTor 连接 Tor 审查 HTTPS 运营者 洋葱服务 Debian 仓库 RPM 仓库 其他设计 Little-t-tor 其他 滥用的常见问题 保持联系

保持联系

Tor 成员进行讨论并协调日常工作时使用的是 #tor-project 频道。它比 #tor 频道人更少,更关注当前的工作。我们也欢迎你加入这个频道。要想访问 #tor-project,你的昵称 (nick) 必须要注册并验证。

如何加入 #tor-project 和其他需注册频道,方法如下。

注册你的昵称

  1. 登录 #tor。请查看如何能与Tor项目团队聊天?

  2. 然后点击屏幕左上方的状态

  3. 在页面底部的窗口中,输入:/msg nickserv REGISTER yournewpassword youremailaddress

  4. 按下 enter 键。

如果一切顺利,你将受到消息,通知你已成功注册。

系统可能将你注册为 nick_,而不是nick。

如果是这样,就使用该昵称,但记住你是 user_ 而不是 user。

每次登录 IRC,为了验证你已注册的昵称,请输入:

/nick yournick

/msg nickserv IDENTIFY YourPassWord

如何验证你的昵称

在注册你的昵称后,要想进入 #tor-project 和其他受保护的频道,你的昵称必须经过验证

  1. 访问 https://services.oftc.net/ 并按照“验证账号”部分的步骤操作

  2. 返回到登录时的 IRC 页面,输入:

    /msg nickserv checkverify

  3. 按 ENTER 键。

  4. 如果一切顺利,你将收到以下消息:

*!NickServ*checkverify

Usermodechange: +R

!NickServ- Successfully set +R on your nick.

你的昵称验证成功!

现在想要加入 #tor-project,可直接输入:

/join #tor-project 并按下 enter 键。

通过之后即可加入该频道。如果是这样,恭喜!

如果卡在了某处,你可以在 #tor 频道中寻求帮助。

点击 IRC 窗口左上方的频道名称,可在不同频道之间来回切换。

长期以来,Tor 社区一直在使用 OFTC 的 IRC 网络进行许多日常活动。 IRC 很适合我们,这些年来我们在 IRC 上的社区一直在发展,有新人加入,也有新的频道来满足机构中的特定需求。

Matrix 桥接

通过将我们的 IRC 社区连接到 Matrix 网络,Tor 社区正在开放日常对话。 对于普通 Tor 用户来说,这意味着你可以使用像 Element 这样的友好 App 与我们聊天。 #tor:matrix.org 房间和 #tor IRC 频道是相连的:无论使用哪个平台,你的消息将在两个平台上共享。

想要在 Matrix 上和 Tor 贡献者对话,你需要 Matrix 账户。有几个供应商可提供账户。 其中之一是 Matrix.org 基金会,它提供免费账户。 你可在 app.element.io 注册账户。

一旦你有了Matrix 账户,你可以加入Tor Matrix 空间浏览 Tor 频道,或者直接加入#tor:matrix.org用户支持频道。

OFTC IRC 网络

另外,如果想用 IRC,你可以使用 OFTC 的网络 IRC 客户端:

  1. 打开 OFTC webchat

  2. 在空白处填入:

    昵称:可以使用任何昵称,但在 Tor 频道聊天时,请使用同一昵称 (nick)。如果昵称已使用,你将收到系统消息,请选择其他昵称。

    频道: #tor

  3. 点击“确定”

祝贺!你正在使用 IRC。

几秒过后,你会自动进入 #tor,这里可以与 Tor 开发者、中继运行者和其他社区成员聊天。也有人随便进入 #tor。

你可以在屏幕下方空白栏里输入问题。请你直接提问,不用先问是否可提问。

有人可能马上回复,也可能过一段时间(有些人可能在聊天室挂机,之后才会查看聊天记录)。

如果想和某人聊天,请以他们的昵称作为你评论的开头。通常他们将收到有人联系的通知。

OFTC 通常不允许通过 Tor 使用他们的 webchat。出于这个原因,以及许多人最终更希望如此,你也应该考虑使用 IRC 客户端。

Tor 依靠全球用户和志愿者的支持,来协助我们改进相关软件和资源,因此你的反馈对我们(以及所有 Tor 用户)而言极具价值。

反馈模板

给我们发送反馈或者报告漏洞时,请尽量包含以下信息,越多越好:

  • 使用的操作系统
  • Tor 浏览器版本
  • Tor 浏览器安全级别
  • 请逐步说明你如何碰到该问题,以便我们能够将其重现。(比如,“我打开了浏览器,输入 url,点击图标,然后我的浏览器就崩溃了。”)
  • 问题的截屏
  • 日志文件

如何与我们联系

有多种方式可以联系我们,请选择对你来说最方便的一种。

Tor 论坛

建议在 Tor 论坛寻求帮助。 需要先建立账户才能发文。 在提问之前,请查看讨论指南。 目前,为了尽快获得回应,请使用英文书写。 如果发现漏洞,请使用 GitLab 反馈。

GitLab

首先,检查该缺陷是否已知。 你可以在 https://gitlab.torproject.org/ 上搜索并查看所有的问题。 想要新建问题,请申请新账户来访问 Tor Project 的 GitLab 实例,并找到正确的存储库来报告你的问题。 我们用 Tor 浏览器的问题跟踪器 跟踪所有与 Tor 浏览器有关的问题。 网站相关的问题应在网页问题跟踪器处提交。

Telegram

如果需要帮助安装 Tor 浏览器或排查故障,并且所在地屏蔽或审查 Tor 论坛,可以通过 Telegram https://t.me/TorProjectSupportBot与我们联系。 Tor 支持专员将协助你。

WhatsApp

可发送文本消息我们的 WhatsApp : +447421000612 寻求协助。 该服务仅限文本消息,不支持视频和语音通话。

Signal

可发送文本消息到我们的 Signal : +17787431312 求助。 Signal 是一款免费且注重隐私保护的通讯应用。 该服务仅限文本消息,不支持视频和语音通话。 在信息发送后,支持人员将为你提供指引和帮忙,以便排除故障。

电子邮件

请给我们发送电子邮件至frontdesk@torproject.org

在电子邮件的主题栏中,请简述你要报告的内容。 请使用更为明确的邮件主题(如“连接失败”“网站反馈”、“ Tor 浏览器反馈”、“需要网桥”),以便我们更容易理解并跟进你的问题。 如果电子邮件主题为空,有时将被视为垃圾邮件,导致我们没有看到你的邮件。

为了得到更快的回应,请使用英语、西班牙语或葡萄牙语写邮件。 如果以上语言都不适合,请选择你想用的任何语言,不过请注意,由于需要通过翻译来理解你的消息,回复将需更长时间。

博客文章评论

在与你的问题或反馈相关的博文下,你可以随时发表评论。 如果没有相关问题的博文,请使用其他方式联系我们。

IRC

可以在 OFTC 上的 #tor 频道提交反馈或漏洞/问题。 我们可能不会立即回复,但我们会查看近期收到的信息,然后尽快的回复。

了解如何连接到 OFTC 服务器

邮件列表

如果想用邮件列表报告问题或反馈,建议使用相应的列表 。邮件列表的完整目录可以在这里找到。

有关我们网站的反馈或问题:ux

有关运行 Tor 中继的反馈或问题: tor-relays

报告安全问题

如果有安全问题,请发邮件至 security@torproject.org。

如果需要对邮件加密,可以从这个地址keys.openpgp.org获得 OpenPGP 的公钥。以下是当前的指纹:

  pub   rsa3072/0x3EF9EF996604DE41 2022-11-15 [SC] [expires: 2024-12-11]
      Key fingerprint = 835B 4E04 F6F7 4211 04C4  751A 3EF9 EF99 6604 DE41
  uid Tor Security Contact <security@torproject.org>
  sub   rsa3072/0xF59EF1669B798C36 2022-11-15 [E] [expires: 2024-12-11]
      Key fingerprint = A16B 0707 8A47 E0E1 E5B2  8879 F59E F166 9B79 8C36

如果要参加漏洞赏金计划,请注意,向第三方网站报告安全问题会带来我们无法控制的风险,所以请直接向我们报告。

Debian 仓库

可以的,deb.torproject.org也通过洋葱服务提供服务: http://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/

注意:符号#表示以 root 身份运行代码。这意味着您应该有权访问具有系统管理权限的用户帐户,即您的用户应该在 sudo 组中。

如需使用 Apt over Tor(通过 Tor 网络的 apt),需要安装 apt transport 工具:

   # apt install apt-transport-tor

然后,需要在/etc/apt/sources.list/etc/apt/sources.list.d/的新文件中加入下列条目:

   # 对于稳定版。
   deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org <DISTRIBUTION> main

   # 对于不稳定版。
   deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org tor-nightly-main-<DISTRIBUTION> main

用操作系统代号替换 <DISTRIBUTION> 。运行lsb_release -c 或者cat /etc/debian_version查看操作系统的版本。

在命令提示符下运行以下命令,添加用于签署软件包的 gpg 密钥:

   # wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

安装 tor 和 tor debian 密钥环

现在刷新资源并尝试安装 tor 和 tor debian 密钥环:

   # apt update
   # apt install tor deb.torproject.org-keyring

Tor Project 维护着它自己的 Debian 软件包存储库。由于 Debian 提供 Tor 的 LTS 版本,这可能并不是最新稳定的 Tor 版本。因此,我们建议你从我们的软件包存储库中安装 Tor

在基于 Debian 的系统中,如何添加 Tor 软件包仓库?请查看以下指示:

注意:符号#表示以 root 身份运行代码。这意味着您应该有权访问具有系统管理权限的用户帐户,即您的用户应该在 sudo 组中。

前提:验证 CPU 架构

该软件包库提供 amd64arm64i386 二进制文件。通过检查以下命令的输出,确认你的操作系统能够运行该二进制文件:

  # dpkg --print-architecture

输出应是 amd64arm64i386。存储库不支持其他 CPU 架构。

注意: 该软件包库不提供 32 位 ARM 架构(armhf) 的镜像(目前还没有)。你应该安装 Debian 提供的版本(确保查看 Debian backports,因为该版本通常有很多较新的 Tor 软件包),或者从源代码生成 Tor

1. 安装 apt-transport-https

使所有使用 libapt-pkg 库的软件包管理器通过 https(安全超文本传输协议)访问的源中提供的元数据和软件包。

   # apt install apt-transport-https

2. 在/etc/apt/sources.list.d/ 中创建新文件并命名为tor.list。添加下列条目:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main

如果你想尝试 experimental 软件包,请在上面几行另外添加:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main

或 nightly build 版本:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-nightly-main-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-nightly-main-<DISTRIBUTION> main

用操作系统代号替换 <DISTRIBUTION> 。运行lsb_release -c 或者cat /etc/debian_version查看操作系统的版本。

注意: Ubuntu Focal 不再支持 32 位,因此应使用:

   deb     [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org focal main
   deb-src [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org focal main

<ARCHITECTURE>替换为你的系统架构(之前已用dpkg --print-architecture找到)。

运行 sudo apt update 时的警告信息:

   Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://deb.torproject.org/torproject.org focal InRelease' doesn't support architecture 'i386'

3. 在命令提示符下运行以下命令,添加用于签署软件包的 gpg 密钥:

   # wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

4. 安装 tor 和 tor debian 密钥环

推荐使用我们提供的 Debian 软件包,以便保持签名密钥为最新。请使用以下命令安装:

   # apt update
   # apt install tor deb.torproject.org-keyring

不可以。 请勿使用来自 Ubuntu 的 universe 软件包。 过去它们一直没有进行可靠的更新。这意味着你可能错过稳定性和安全性的修复。 请使用 Tor Debian 存储库

Tor 的 RPM 软件包

Tor Project 在 CentOS 、RHEL 和 Fedora 系统上维护自己的 RPM 安装包存储库

注意: 符号 # 代表以 root 运行代码。也就是说,你应该能够访问一个具有系统管理权限的用户账户,例如,你的用户应该在 sudo 小组。

下面是 CentOS、RHEL 和 Fedora 系统使用 Tor 安装包储存库的方法:

1. 使用 epel 存储库(只针对 CentOS 和 RHEL 系统)

‪# dnf install epel-release -y

2. 在 /etc/yum.repos.d/tor.repo 中加入以下内容

对于与 CentOS 和 RHEL 系统:

[tor]
name=Tor for Enterprise Linux $releasever - $basearch
baseurl=https://rpm.torproject.org/centos/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://rpm.torproject.org/centos/public_gpg.key
cost=100

对于 Fedora:

[tor]
name=Tor for Fedora $releasever - $basearch
baseurl=https://rpm.torproject.org/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://rpm.torproject.org/fedora/public_gpg.key
cost=100

3. 安装 Tor 安装包

然后你可以安装最新版的 Tor 软件包。

‪# dnf install tor -y

首次使用时,你需要导入 GPG 公钥。

Importing GPG key 0x3621CD35:
Userid     : "Kushal Das (RPM Signing key) <kushal@torproject.org>"
Fingerprint: 999E C8E3 14BC 8D46 022D 6C7D E217 C30C 3621 CD35
From       : https://rpm.torproject.org/fedora/public_gpg.key
Is this ok [y/N]: y

滥用常见问题

很好,这正是我们实施出口政策的原因。

每个 Tor 中继都具有出口政策,用于指定该中继允许或拒绝什么样的出站连接。 出口政策经由目录传播到 Tor 客户端,客户端将自动避开某些出口中继,因为其出口政策拒绝用户访问目标站点。 通过这种方式,每个中继可根据滥用可能性及其自身状况,决定允许连接到的服务、主机网络。 如果使用默认的出口政策,请参阅可能遇到问题,然后阅读 Mike Perry 的博文出口节点骚扰最小化小提示

默认出口政策允许访问许多热门服务(如网页浏览),但限制一些可能存在滥用的服务(如电子邮件),还有一些服务因 Tor 网络无法处理其负载而受到限制(如默认文件共享端口)。 可通过编辑你的 torrc 文件来更改出口政策。 如果想避免大部分而不是全部滥用的可能性, 把它设置为“reject *:*”。 该设置表示,中继只用于在 Tor 网络内转发流量,而不用于连接至外部网站或其他服务的流量。

如果想要允许任何出口连接,请确保域名解析正常(即:你的电脑能正确解析网络地址)。 如果你的计算机存在无法访问的资源(比如,你的网络有限制性防火墙或内容过滤器),请在出口节点政策中明确标记为拒绝,否则其他 Tor 的用户也将受影响。

Tor 的使命是通过免费开源技术促进人权,使用户能够抵御大规模监视和互联网审查。 我们讨厌有人将 Tor 用于邪恶目的,我们谴责滥用和利用我们的技术进行犯罪活动。

重要的是要理解,犯罪意图在于个人,而不在于他们使用的工具。 就像其他广泛使用的技术一样,Tor 可能被有犯罪意图的个人使用。 而且由于他们可以使用其他选择,将 Tor 从世界上移除似乎不太可能阻止他们从事犯罪活动。 同时,Tor 和其他隐私措施可以打击身份盗用、跟踪等人身犯罪,并可供执法部门用来调查犯罪并帮助支持幸存者。

通常,分布式拒绝服务 (DDoS) 攻击需要数千台计算机同时发送大量数据至受害者。 由于其目标是控制受害者的带宽,他们通常发送 UDP 数据包,因为这些数据包不需要握手或协调。

不过,Tor 只传输正确格式的 TCP 流,而不是所有 IP 数据包,所以你不能通过 Tor 发送 UDP 数据包。 (也无法使用此类攻击的特殊形态,如 SYN flooding。) 因此,常见 DDoS 攻击不可能通过 Tor 网络实现。另外,Tor 不允许对外部站点进行带宽放大攻击: 对于 Tor 发送到目的地的每个字节,你也需要发送一个字节。 总之,如果控制了足够带宽的攻击者,可发起有效 DDoS 攻击,那不用 Tor 也可以攻击。

首先,默认的 Tor 出口策略拒绝所有传出端口 25 (SMTP) 的流量。 因此在默认情况下,通过 Tor 发送垃圾邮件是行不通的。 一些中继运营者可能在特定出口节点启用端口 25 。在这种情况下,该计算机将允许发出邮件。但是,那个人可以直接建立开放的邮件中继,完全无需使用 Tor。 简而言之,Tor 对发送垃圾邮件没有用处,因为几乎所有的 Tor 中继都拒绝投递邮件。

当然,这并非全是关于发送垃圾邮件。 垃圾邮件发送者可以通过 Tor 连接到开放的 HTTP 代理(并从那里连接到 SMTP 服务器);连接到蹩脚的邮件发送 CGI 脚本;控制他们的僵尸网络。这就是说,秘密地与被控制的计算机大军进行通信来发送垃圾邮件。

很遗憾出现这种情况,但是要注意,即使没有 Tor,垃圾邮件也已经很多了。 还有要注意,许多更微妙的通信机制(如伪造的 UDP 数据包)不能在 Tor 上使用,因为 Tor 只传输正确格式的 TCP 连接。

Tor 实施了出口政策。 每个 Tor 中继都具有出口政策,用于指定该中继允许或拒绝什么样的出站连接。 通过这种方式,每个中继可根据滥用可能性及其自身状况,决定允许连接到的服务、主机网络。 我们还有一个专门的团队,网络健康团队,负责调查不良中继节点的行为并将它们从网络中排除出去。

这一点很重要,需要注意的是,虽然我们可以打击网络中的某些滥用行为,比如不良中继节点,但我们不能看到或管理用户在网络上的活动,这是有意设计的。 这一设计通过尽可能提供人权活动家、记者、家暴幸存者、举报者、执法人员等人尽量多的隐私和匿名性,极大地支持有益的使用情景。 了解更多关于我们的用户和 Tor 的有益用途案例

如果你运行的 Tor 中继允许出口连接(例如默认出口政策),大概可以确定,迟早会有人投诉。 滥用投诉可能有很多形式。比如:

  • 有人连到 Hotmail 服务,给某公司发信勒索。FBI 给你发了一封很礼貌的邮件,你解释你运行了一个 Tor 中继,接着他们说“哦,好吧”,然后就不管你的事了。【80号端口】
  • 有人使用 Tor 连接到 Google 群组,并在 Usenet 上发布垃圾邮件,试图关闭你的中继,然后向你的 ISP 发送一封愤怒的邮件,说你如何摧毁整个世界。[端口80]
  • 有人连上 IRC 网络骚扰他人。你的 ISP 收到邮件说你的计算机被攻击,或者你的计算机被 DDoS 了。[端口 6667]
  • 有人使用 Tor 下载范·迪塞尔的电影,而你的 ISP 会收到 DMCA 删除通知。请参考 EFF 的 Tor DMCA 回复模板,它解释了你的 ISP 为什么可以忽视这些通知而不用负法律责任。[任何端口]

当涉及到 Tor 出口节点时,一些主机供应商相对更为友好。相关列表,请参阅 好坏 ISP 维基页面

如需各种滥用投诉的回复模板,可以参考模板集。 通过参考运行出口节点最少骚扰小技巧 以及简化出口政策,你可以主动减少滥用数量。

你可能也会发现,在访问一些网络站点或服务时, Tor 中继的 IP 被屏蔽了。 无论出口政策如何,这都可能会发生,因为有些组织似乎不知道或不在乎 Tor 的 出口政策。 (如果你有多余且未使用的 IP,可考虑用来运行 Tor 中继。) 总的来说,不建议使用家庭网络的连接架设 Tor 中继。

有时,一些愚顽之人通过 Tor 在 IRC 频道捣乱。 这种滥用导致针对 IP 的临时封禁(IRC 行话称为“klines”),因为网络管理员试图将捣乱者踢出他们的网络。

这种反应突显了 IRC 安全模型的根本缺陷: 他们假设 IP 地址对应一个特定的人,所以禁止 IP 地址就可以禁止这个人。 在现实中,情况并非如此--许多这样的捣乱者经常利用互联网上数以百万计的开放代理和被控制的计算机。 IRC 网络想要阻止所有这些节点的尝试,是一场注定失败的战斗。同时,基于这种有缺陷的安全模式,黑名单和反捣乱的作坊式行业快速兴起(与反病毒行业并无不同)。 Tor 网络只是冰山一角而已。

另一方面,对于 IRC 服务器的管理员来说,安全性并不是全有或全无的事情。 通过快速响应捣乱者或其他社交攻击,有可能降低攻击场景对攻击者的吸引力。 任何特定时间,在任何特定 IRC 网络上,大多数单独的 IP 地址等同于单独的个人。 也有例外,比如 NAT 网关可以作为作为特例来分配访问权限。 虽然禁止使用开放代理的尝试是一场失败的战斗,但一般来说,对一个行为不端的 IRC 用户不断地进行临时封禁,直到该用户感到厌烦而离开,也不算失败。

但是,真正的办法是实施应用层认证系统,欢迎行为良好的用户进入,并拒绝行为恶劣的用户。 这需要基于某些人为属性(比如他知道密码),而不是基于数据包传输方式的某些属性。

当然,并不是所有的 IRC 网络都禁止 Tor 节点。 毕竟,相当多的人私密地使用 Tor 连接 IRC,是为了进行正常的沟通,同时不关联其现实身份。 每个 IRC 网络都需要衡量,屏蔽坏人可用的数百万的 IP,而失去行为良好 Tor 用户的贡献,这样是否值得。

如果你被屏蔽了,可以联系网络管理员并向其做出解释。 他们可能根本就不知道 Tor,或者不知道临时禁止的主机名是 Tor 出口节点。 如果你对相关问题进行了解释,他们仍然认为应该屏蔽 Tor,那么你可以考虑转移到一个言论自由更开放的网络。 也许邀请他们来 irc.oftc.net 的 #tor 频道聊聊,有助于让他们知道我们并不是坏人。

最后,如果你发现 IRC 网络屏蔽了 Tor 或者单个 Tor 出口节点,请把这些信息补充到 Tor 浏览器 IRC 屏蔽跟踪器,以便大家可以分享交流。 至少有一个 IRC 网络会查询该页面,以 解除不经意间被屏蔽的出口节点。

尽管,Tor 对垃圾邮件发送并没用处,但一些过分热心的封杀者似乎认为,所有类似 Tor 这样的开放网络都是邪恶的。他们试图在政策、服务和路由问题上对网络管理员施加压力,然后向受害者索取费用。

如果服务器管理员通过黑名单拒收邮件,你应与他们沟通,解释 Tor 以及 Tor 的出口政策。

听到你想要禁用 Tor,我们感到非常遗憾。 某些情况下,屏蔽匿名用户访问互联网服务是合理的。 不过,在很多情况下,可以采取更简单的方法来解决问题,同时允许用户安全地访问你的网站。

首先,思考是否可从应用层来区分正常用户和恶意捣乱者。 例如,只有已注册用户可访问某些网站内容或获取某些权限(如发布内容)。 你可以很容易建立最新的 Tor IP 地址的列表,并允许它们连接你的服务器,这样你可以只针对 Tor 用户进行区分。 如此一来,你可以实现分层访问而无需全站屏蔽。

例如,Freenode IRC 网络曾面对一群恶意捣乱的人,他们加入频道巧妙地主导了对话;当他们将所有来自 Tor 节点的用户标记为“匿名”用户时,捣乱者无法再滥竽充数,于是这些人又转回使用公开代理和僵尸网络。

其次,每天成千上万的用户仅仅因数据安全而选择 Tor,例如,在进行日常活动的同时,避免数据被广告公司收集。 还有其他人使用 Tor,因为这是唯一突破本地防火墙的方式。 此时此刻,可能某些 Tor 用户正在使用你的服务,进行正常的活动。 禁用 Tor 网络之后,你的服务将失去这些用户以及未来潜在的合法用户。你需要权衡这样做是否值得。 (通常,没有人去留意有多少优秀的 Tor 用户在使用他们的服务,直到出现一个粗鲁的用户,否则你永远不会注意到他们。)

此时,你应该问你自己,对于少数 IP 地址背后聚集大量用户的其他服务,你将如何处理。 从这个角度来看,Tor 与 AOL 并没有多少差别。

最后,请记得 Tor 中继具有单独的出口政策 。 很多 Tor 中继根本不允许出口连接。 许多允许出口连接的中继,可能已经禁止连接你的服务。 当想要禁止节点时,你应该先分析出口政策,并只阻止允许这些连接的节点;需注意,出口政策(以及网络中节点的总列表)是可以改变的。

如果真的想要禁用 Tor 用户,我们提供 Tor 浏览器出口中继清单可查询的基于 DNS 的清单

(出于官方政策或某些滥用模式的原因,有些系统管理员屏蔽整个区段的 IP 地址,但也有管理咨询如何允许 Tor 出口中继,因为想要只允许通过 Tor 访问他们的系统。 这些脚本也可用于白名单。)

Tor 开发者没有追踪 Tor 用户的手段。 防止坏人破坏 Tor 匿名性的保护措施,同时也阻碍了我们弄明白发生了什么。

一些支持者建议我们重新设计 Tor,以便在里面加入后门程序 。 这个想法有两个严重的问题。 首先,从技术上来讲,这会大大弱化系统。 对于各种攻击者,通过中心化的方式将用户与其活动进行关联是一个巨大的漏洞。确保正确处理这一责任所需的政策机制是庞大且无解的。 其次,反正坏人也不会因此被抓,因为他们将使用其他手段来确保匿名性(盗取身份,破坏计算机并将其作为跳点等)。

最终这意味着,网站拥有者有责任保护他们不受来自任何地方的威胁和不受安全问题的影响。 这是享受互联网益处所需承受的代价。 不管危险可能来自何方,你必须要随时保护好自身的安全。 跟踪和强化监视并非防止滥用的解决方案。

但是要知道,这并不意味着 Tor 是绝对安全的。 传统的警察技巧对付 Tor 仍然非常有效,比如,侦察方式、动机、机遇、讯问嫌疑人、写作风格分析、内容技巧分析、卧底行动、键盘记录等其他线下侦察方式。 Tor Project 也乐意与任何人合作,包括执法机构,训练他们如何使用 Tor 软件,来安全地进行侦察或在线匿名活动。

Tor Project 未托管与控制这些服务,也没有能力找到 .onion 地址的拥有者或所在位置。 .onion 地址是来自洋葱服务的地址。 以 .onion 结尾的名称是洋葱服务的描述符。 这是自动生成的名称,可以位于互联网上的任何 Tor 中继或客户端上。 洋葱服务旨在通过不让用户和服务供应方发现对方的真实身份和具体位置来保护他们。 根据洋葱服务的设计,.onion 站点的拥有者和位置是隐藏的,即使我们也无法得知。

但请记得,这并不是说洋葱服务无懈可击。 传统的警察技巧对付他们仍然非常有效,比如,侦察方式、动机、机遇、讯问嫌疑人、写作风格分析、内容技巧分析、卧底行动、键盘记录等其他线下侦察方式。

如果想要投诉有关儿童虐待的内容,可向美国失踪和被剥削儿童中心报告,该中心是调查儿童色情制品的国家协调机构:http://www.missingkids.com/。 我们不会查看你提交的链接。

对于滥用,我们的态度是认真严肃的。 活动人士以及执法部门使用 Tor 调查滥用行为,并为幸存者提供支持。 我们与他们一起合作,帮助他们了解如何使用 Tor 来协助他们的工作。 有些情况下,发生了技术错误,我们帮助纠正错误。 由于幸存者社区一些人在意的是耻辱而不是同情心,寻求同路人的支持需要保护隐私的技术。

我们拒绝在 Tor 中建立后门和审查,不是因为不关心。 我们拒绝降低 Tor 的安全和隐私功能,原因在于,实体世界中儿童虐待和人口贩卖的打击活动,将因此而受损,同时这样将移除受害者在网络上的安全空间。 同时,犯罪分子仍然能够获取僵尸网络、被盗的手机、窃取的帐号、邮政系统、快递员、腐败官员以及任何新兴交易技术。 他们是技术的早期使用者。 面对这种情况,政策制定者认为屏蔽或过滤能够解决问题,这是很危险的想法。 我们更感兴趣的是帮助制止和防止虐待儿童,而不是帮助政治人士通过隐瞒虐待儿童的事实来赢得选民的支持。 腐败的危害尤其严重;请查看联合国对腐败在贩卖人口中的作用这一报告。

最后,当成人以儿童的名义制定政策时,儿童将要面对什么样的世界,考虑这一点至关重要。 如果儿童无法像成人一样安全地发表观点,他们会感谢我们吗? 如果他们试图揭露失责政府来保护其他孩子,将会如何?

Tor Metrics

实际上,我们计算的不是用户数量,而是客户端为了更新中继列表定期向目录发出的请求,然后根据这些请求,间接估计用户数量。

不是,我们可以看到哪一部分目录报告了这些数字,然后推断出网络中的总数量。

我们假设客户端平均每天发出 10 个这样的请求。 一个 24/7 保持连接的 tor 客户端,每天大约发出 15 个请求,但并并非所有客户端都是 24/7 连接的,于是我们选择 10 作为客户端平均值。 只要将目录请求除以 10 ,结果就是用户数量。 另一种方法是,假设每个请求代表一个客户端一天中有十分之一的时间在线,即 2 小时 24 分钟。

并发用户平均数,根据一天内收集的数据估计的。我们无法区分有多少不同的用户。

没有,报告这些统计数据的中继,以24小时为周期将请求按来源国进行汇总。 每小时用户数量需要的统计数据,过于详细,可能将用户置于风险之中。

那就把这些用户算作一个。我们计算的其实是客户端,但对大多数人来说,用户更为直观,所用我们说用户而不说客户端。

目录将 IP 地址解析为国家代码,并以汇总形式报告这些数字。 这也是 tor 为什么会有GeoIP 数据库的原因之一。

很少网桥报告关于传输或 IP 版本的数据。在默认情况下,我们认为请求使用默认的 OR 协议和 IPv4。 一旦更多的网桥报告这些数据,数字将变得更加准确。

中继和网桥以24小时的时间间隔报告一些数据,这些数据可能在一天中的任何时间结束。
而在这样的时间间隔结束后,中继和网桥可能还需要18个小时来报告数据。
我们从图表中把最后两天的数据删掉,因为我们想避最后一个数据点表明的最近趋势变化,实际上只是算法的一个伪命题。

原因是,一旦我们有足够的信心,认为用户数字不会再有明显变化,我们就会公布用户数字。 但是,数据发布几个小时后,又有目录报告数据,总是有可能发生这种事,所以图表会略有变化。

我们确实有在此之前的描述符档案,但这些描述符并不包含用来估计用户数量的所有数据。 请从 tarball 中获得更多内容:

Tarball

对于直接连接用户,我们包括了所有的目录,旧方法则没有。 我们还使用了只包含为回答目录请求而写入的字节记录,而这比使用一般的字节记录更精确。

那就说来话长了。我们写了 13 页的技术报告来淘汰旧方法的原因。
长话短说:在旧方法中,我们测量的是错误的对象,而现在我们测量的是正确的对象。

我们运行基于异常情况的审查检测系统,该系统查看几天内的估计用户数量,并预测未来几天的用户数量。 如果实际数字较高或较低,可能表明有审查事件审查放松。 更多详情,请阅读技术报告

Little-t-tor

注意:这些指南是为了验证 Tor 源代码。 请按照正确的指示来验证 Tor 浏览器的签名

数字签名用于确保某个程序包有其开发者生产并且没有被篡改。 下面我们解释为什么它很重要,以及如何验证你下载的 tor 源代码是我们创建的,没有被某些攻击者修改。

我们下载页面上的每个文件都附带两个文件,标签为“校验和”和“签名”,其名称与软件包相同,扩展名分别为“.sha256sum”和“.sha256sum.asc”。

.asc 文件将验证 .sha256sum 文件(包含软件包的校验和)没有被篡改。一旦签名被验证有效(见下面的方法),软件包的完整性就可以用以下方法验证:

$ sha256sum -c *.sha256sum

这些文件用于验证你所下载的文件正是我们希望你得到的文件。 一般来说,你可以通过右击 “签名”和“校验和”链接并选择“另存为”选项来下载该文件,不过这可能因网络浏览器而异。

例如,tor-0.4.6.7.tar.gz配有文件tor-0.4.6.7.tar.gz.sha256sum.asc。 这些是示例文件名,并下载文件不会完全相同。

下面将解释如何在不同的操作系统上验证下载文件的数字签名。 请注意,数字签名的日期指对程序包进行签名的时间。 因此,每次新文件上传时,将生产新的签名,并且日期不同。 只要你验证了签名,不必担心报告的日期可能有所不同。

安装 GnuPG

首先,验证签名之前,你需要安装 GnuPG。

对于 Windows 的用户:

如果使用 Windows,请下载 Gpg4win 并运行安装包。

为了验证签名,你需要在 Windows 命令行(cmd.exe)中输入一些命令。

对于 macOS 的用户:

如果使用 macOS,你可以安装 GPGTools

为了验证签名,你需要在终端(位于“应用程序”下)中输入一些命令。

对于 GNU/Linux 的用户:

如果使用 GNU/Linux,那么系统大概已安装 GnuPG,因为大多数 Linux 发行版都预装了该软件。

为了验证签名,你需要在 windows 命令行中输入几个命令。 如何做到这一点,将取决于你的发行版。

提取 Tor 开发者密钥

下面的密钥可以对 tarball 签名。不要期望都有签名,这可能取决于谁来发布。

可通过上述链接获得密钥,或通过:

$ gpg --auto-key-locate nodefault,wkd --locate-keys ahf@torproject.org
$ gpg --auto-key-locate nodefault,wkd --locate-keys dgoulet@torproject.org
$ gpg --auto-key-locate nodefault,wkd --locate-keys nickm@torproject.org

这应该显示类似结果(对于 Nickm):

gpg: key FE43009C4607B1FB: public key "Nick Mathewson <nickm@torproject.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
pub   rsa4096 2016-09-21 [C] [expires: 2025-10-04]
      2133BC600AB133E1D826D173FE43009C4607B1FB
uid           [ unknown] Nick Mathewson <nickm@torproject.org>
sub   rsa4096 2016-09-23 [S] [expires: 2025-10-04]
sub   rsa4096 2016-09-23 [E] [expires: 2025-10-04]

如果看到错误信息,那就是出了问题,你不能继续下去,直到你弄清楚为什么这不行。 也许可以使用 其他方法(使用公钥)部分来导入密钥。

导入密钥后,你可以将其保存到文件中(此处提供其指纹来指定):

$ gpg --output ./tor.keyring --export 0x2133BC600AB133E1D826D173FE43009C4607B1FB

该命令将密钥保存在路径为./tor.keyring的文件中,即当前目录。 如果运行这个命令后 ./tor.keyring不存在,就说明出了问题,不能继续操作,直到你弄清楚为什么出现错误。

验证签名

要验证你下载的软件包的签名,你需要下载相应的 .sha256sum.asc 签名文件和 .sha256sum 文件,并通过命令要求 GnuPG 验证你下载的文件来验证它。

以下示例假设已在“Downloads”文件中下载这两个文件。 请注意,这些命令使用示例文件名,而实际文件名是不同的:你下载的版本与 9.0 不同,并且没有选择英文(en-US)版本。

对于 Windows 的用户:

gpgv --keyring .\tor.keyring Downloads\tor-0.4.6.10.tar.gz.sha256sum.asc Downloads\tor-0.4.6.10.tar.gz.sha256sum

对于 macOS 的用户:

gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum

对于 BSD/Linux 用户:

gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum

该命令的结果应该产生这样的结果(取决于签名用的哪个密钥):

gpgv: Signature made Mon 16 Aug 2021 04:44:27 PM -03
gpgv:                using RSA key 7A02B3521DC75C542BA015456AFEE6D49E92B601
gpgv: Good signature from "Nick Mathewson <nickm@torproject.org>"

如果错误消息含有“No such file or directory”,上述某个步骤出错,或者未更改命令中的示例文件名。

另外,你可能想要了解更多 GnuPG 信息

验证校验和

现在我们验证了校验和的签名,接着需要验证软件包的完整性。

对于 Windows 的用户:

certUtil -hashfile tor-0.4.6.10.tar.gz.sha256sum SHA256

对于 macOS 的用户:

shasum -a 256 tor-0.4.6.10.tar.gz.sha256sum

对于 BSD/Linux 用户:

sha256sum -c tor-0.4.6.10.tar.gz.sha256sum

我们(尚未)采用的替代设计方案

由于以下原因,这将变得非常使用: 这将使 Tor 能够更好地处理 VoIP 等新协议。 它可以解决应用程序 socks 端口化的整体需求。 出口中继也不需要为所有的出口连接分配大量的文件描述符。

我们正朝着这个方向努力,但存在一些困难的问题:

  1. IP 数据包泄露操作系统的特征。 我们仍然需要对 IP 层数据包进行规范化,以阻止类似 TCP 指纹分析攻击的事件。 鉴于 TCP 堆栈的多样性和复杂性,以及设备指纹分析攻击,最好的选择似乎是搭建我们自己的用户空间 TCP 堆栈。

  2. 应用层流仍然需要擦除。 我们仍然需要像 Torbutton 这样的用户端应用程序。 这样将不再是:在 IP 层捕获数据包并对其进行匿名化。

  3. 有些协议仍然泄露信息。 例如,必须重写 DNS 请求,以便将其传递到不可关联的 DNS 服务器,而不是用户 ISP 的 DNS 服务器;因此,我们必须了解所传输的协议。

  4. DTLS (TLS 数据报) 基本上没有人在使用了,而 IPsec 又很大。 一旦我们选择了传输机制,由于开始允许丢包、重发等,就需要设计新的端到端 Tor 协议,以避免标记攻击和其他可能的匿名性和完整性问题。

  5. 任意 IP 数据包的出口政策都意味着建立一个安全的入侵检测系统(IDS)。 节点运营者告诉我们,出口政策是他们愿意运行 Tor 的主要原因之一。 添加 IDS 控制出口政策会增加 Tor 的安全复杂性,而且很可能无论如何都不会成功,整个 IDS 和反 IDS 领域的论文都证明了这一点。 由于 Tor 只传输有效的 TCP 数据流(而不是任意的 IP 数据流,包括不正常的数据包和 IP 洪水),许多潜在的滥用问题都被解决了。 由于我们能够传输 IP 数据包,出口政策变得更加重要。 我们也需要在 Tor 目录中精简地描述出口政策,所以客户端才能够预测哪些节点能允许它们的数据包退出。 客户端在选择出口节点之前,也需要预测它们想要在一个会话中发送的所有数据包!

  6. Tor 内部的空间名称需要重新设计。 当传递地址给 Tor 客户端时,我们进行拦截,从而可以支持洋葱服务“.onion”地址。 在 IP 层这样做,需要在 Tor 和本地 DNS 解析器之间建立更复杂的接口。

不可以,你不能信任网络选择的路径。 恶意中继可以将你的流量转发到他们串通好的朋友。 这将使对手有能力观察到你所有的端到端流量。

每个 Tor 用户成为中继有助于扩展网络以承载所有用户,并且运行 Tor 中继可能有助于你的匿名性。 然而,许多 Tor 用户不能成为良好的中继。例如,一些 Tor 客户端位于限制性防火墙后面,使用调制解调器连接,或无法转发流量。 为这些客户端提供服务,是为每个人提供有效匿名的关键部分,因为许多 Tor 用户受到此类限制,包括扩大匿名集合的客户端。

虽然如此,我们的确想要鼓励 Tor 用户运行中继,因此我们真正要做的是简化设置和维护中继的过程。 在过去的几年里,我们在简易配置方面取得了很大的进展:Tor 可很好地自动检测是否可访问以及可提供多少带宽。

不过,在做到这一点之前,我们需要解决四个问题:

  • 首先,对于允许使用多少带宽,我们需要更好地自动估计。 这种情况下, 切换到 UDP 传输可能是最简单的方案:可惜这个方案并不简单。

  • 第二,我们需要增加可扩展性,包括网络(如何停止要求所有 Tor 中继能够连接到所有其他 Tor 中继)和目录(如何停止要求所有 Tor 用户知道所有其他 Tor 中继)。 这样的改变将对潜在和实际的匿名性产生很大的影响。 详情见挑战一文的第 5 章节。 同样,UDP 传输在这里会有帮助。

  • 第三,我们需要更好地了解相关风险:允许攻击者通过你的中继发送流量,而同时你也在启动自己的匿名流量。 三篇 不同的 研究 论文描述了识别中继的方法,即运行流量通过候选中继,并在线路活动时寻找流量的低谷。 只要中继不是客户端,对 Tor 来说,这些堵塞攻击并不可怕。 但是,如果鼓励更多的客户端开启中继功能(作为网桥中继或正常的中继),那么我们需要更好地了解这种威胁,并学习如何降低它。

  • 第四,我们可能需要某种激励措施,鼓励人们转发他人流量,或成为出口节点。 这里是我们目前对 Tor 激励机制的想法

请为所有这些问题提供帮助!

如果中继运营商在他们的出口政策中说reject www.slashdot.org这样的话,而不是要求他们列出所有可能被该网站覆盖的 IP 地址空间(然后把这些 IP 地址上其他网站也屏蔽),听起来很不错。

然而,这样有两个问题。 首先,用户仍然能够绕过屏蔽。 比如,当从 Tor 网络退出时,他们可以请求 IP 地址而不是主机名。 也就是说,中继运营者仍然需要了解所有目标 IP 地址。

第二个问题是,它将允许远程攻击者屏蔽任意网站。 例如,如果 Tor 运营商封锁 www1.slashdot.org,然后一些攻击者污染 Tor 中继的 DNS 或以其他方式更改该主机名以解析到一个主要新闻网站的 IP 地址,这样突然间这个 Tor 中继就阻止了该新闻网站。

Mullvad 浏览器

Mullvad 浏览器是没有 Tor 网络的 Tor 浏览器。它可让任何人享用 Tor 提供的所有隐私功能。 如果想要使用可信的 VPN 连接该浏览器,他们可以轻易地实现。

该浏览器“现成”的配置和设置将屏蔽许多参数和功能,它们通常用于从个人设备提取信息,包括字体、渲染的内容和一些硬件 API 。 默认情况下,Mullvad 浏览器启用隐私模式,屏蔽第三方跟踪器和 cookie。

该浏览器是免费和开源的,由 Tor Project 和 Mullvad VPN 合作开发。 它由 Mullvad 发布,可以在他们的网站下载。

Mullvad 浏览器是免费的开源软件,通过 Mullvad 的加密 VPN 通道和 VPN 服务器连接到互联网(如果与 Mullvad VPN一起使用)。 该浏览器可以使用或不使用 VPN,但要确保使用可信的 VPN 供应商。 除了将用户连接到互联网的方式(Tor 网络与可信 VPN 连接)外,这两个浏览器差异非常小,更多是终端用户的个人偏好和使用情况。

使用 Tor 网络连接互联网的好处在于,各种 Tor 特有功能与 Tor 浏览器紧密结合,而 Mullvad 浏览器并不提供这些功能,包括:

  • 线路隔离与新身份整合
  • 访问洋葱服务(比如,洋葱网站、Onion-Location 重定向、洋葱验证和 SecureDrop整合)
  • 内置审查规避,并通过Tor 浏览器的连接设置和连接助手,提供独特的用户体验

我们这次合作的目的是为各种用户提供更多的在线隐私选择(例如,最大限度减少指纹识别、防止可关联性)。

如果正在寻找一个增强隐私的浏览器解决方案以连接到信任的 VPN ,那么应该使用 Mullvad 浏览器。 其默认设置和功能是为了对抗大型科技公司通常采用的大规模监控、数据挖掘和跟踪、或其他侵犯隐私的行为。

虽然 Mullvad 浏览器提供与 Tor 浏览器相似的隐私保护,但它最适合的威胁模式是大型科技公司实施的企业大规模监控。

与市场上的其他浏览器不同,Mullvad 浏览器的商业模式并不依赖于对用户行为数据的利用。 Mullvad 通过销售他们的 VPN 赚钱,而不是销售浏览器的用户数据。

Mullvad 浏览器由 Tor Project 开发,该机构在开发和部署免费开源的隐私保护技术领域具有良好信用。这些技术,如 Tor 浏览器、洋葱服务、Tor 网络等,帮助数百万来自风险社区的人捍卫了他们在网上的隐私权和匿名权。

对于任何支持要求,请发邮件至support@mullvad.net。 目前,用户支持仅支持电子邮件。

多年来,Mullvad 一直是 Tor 社区的一部分。 他们是 Tor Project 会员计划 紫洋葱级别会员(最高级别),并且是 Tor Project 会员计划的创始成员。

当 Mullvad 联系我们共同开发一个浏览器时,我们答应了,因为我们这两个机构在某些方面具有相同的价值观,即增强隐私技术的广泛地应用和突破大规模监视。

有些用户想要一种浏览器,具有和 Tor 一样优秀的隐私保护,但使用的是可信 VPN 而不是 Tor 网络,Mullvad 浏览器满足这些人的需求。 这种合作关系有助于为网络浏览提供更多免费的隐私选择,同时挑战了利用用户数据的商业模式。 这个浏览器展示了一种可能性:开发免费的技术,优先保护用户的隐私。 在互联网隐私和自由方面,Mullvad 拥有与 Tor 相同的价值观,同时致力于普及性的隐私增强技术,使得大规模监控无法实现。

与 Mullvad 的联合项目有助于解决 Tor 浏览器的遗留代码问题,并能够提供专门的资源来进行必要的改进,以使 Tor 和 Mullvad 浏览器都能受益。 在过去的几年里,Tor Project 推出了许多措施来增加我们技术的采用,并对产品的可用性进行了重大改进

不,Tor 浏览器将继续存在。 我们知道,世界各地数以万计的用户依靠 Tor 浏览器和 Tor Project 提供的其他解决方案,来安全地连接互联网,匿名在线浏览和规避审查制度。 因此,Tor 浏览器将继续存在。 继续维护和改进 Tor 浏览器有很多理由,由于使用 Tor 网络,它仍是少数几个在线匿名解决方案之一。 这种组合非常强大,有时,对于审查和监视的用户来说,这是其所在地区自由和安全地访问互联网的少数选择之一。 它对所有人免费,对于身处险境的人,这使其成为一种可获得的解决方案。

Mullvad 浏览器的开发实际上将使 Tor 浏览器更强大,因为这让我们继续解决遗留问题和代码,并修复漏洞。

完全不是,正如我们过去 5 年所做的那样,我们将继续投入提高 Tor 浏览器的可用性,不断发布新的版本,包括用户体验改进。 我们也在努力使 Android 版 Tor 浏览器与桌面版的功能相匹配。

Mullvad 浏览器的开发实际上将有助于使 Tor 浏览器更强大,因为它允许我们继续解决遗留问题和代码,并修复漏洞。 这并不会影响我们对 Tor 浏览器的关注和投入。

两年前,我们开始了一个类似 VPN 应用程序的项目,它能让 Android 用户连接到 Tor 网络。 我们知道,当用户使用移动端时,那些在桌面通过浏览器连接的许多网站和服务会变成一个应用程序。 应对这种使用案例对我们来说很重要,因为在世界各地大多数人只使用移动设备连接互联网,尤其是在南方世界和有风险的地区。 相对于连接到 Tor 网络,通过可信 VPN 连接互联网,这一浏览器迈出了重要的一步,在关注隐私的免费浏览器领域提供了更多选项,并且以后我们的“类似 VPN”应用程序发行时,这对 Tor 浏览器也是有益的。

是的,以下是 Mullvad 浏览器默认的全部请求列表:

  • 浏览器更新(Mullvad)
  • Mullvad 浏览器扩展更新(Mullvad)
  • Mullvad DoH(Mullvad)
  • NoScript/Ublock Origin 更新(Mozilla)
  • 证书 & 域名更新(Mozilla)
  • Ublock Origin 过滤器列表(各种列表)