中继操作者

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

如果那不能解决这个问题,您应该使用“地址”配置选项来具体说明您想选取的IP地址。如果您的计算机处于一个网络地址转换里,并只有一个内部IP地址,请查看以下关于如何进入动态IP地址的技术支持。

并且,如果您有许多地址,您可能也想要设置“OutboundBindAddress”,这样外部的连接就会来自您想要展示给世界的那个。

如果您的中继才刚刚开始运行,请给它一些时间。 Tor 根据带宽权威机构的报告来决定使用哪个中继服务器。这些机构测量您的中继服务器的容量,并随着时间推移,引导更多的通讯流量至您的中继服务器,直到它达到最佳运载量。 一个新的中继服务器的生命周期在[这个博客帖子] (https://blog.torproject.org/blog/lifecycle-of-a-new-relay) 里解释的更为详尽。 如果您运行中继服务器已经有一段时间了,并仍然有疑问,那么请尝试在tor-中继服务器名单 上提问。

如果您允许了出口节点连接,那么人们通过您的中继服务器连接的一些服务就会连接回来,以收集更多关于您的信息。比如,一些IRC服务器会连接回您的identd接口来记录哪些用户建立了连接。(这实际上并不会奏效,因为Tor不知道这些信息,但他们还是会试一试。)此外,从您的节点出去的用户也许会吸引其他在IRC服务器、网站等上的用户的注意,这些用户可能想要了解更多关于他们正在使用的这个中继服务器的主人的信息。

另一个原因是,在互联网上扫描公共代理的小组意识到有时Tor 中继服务器会将它们的socks接口暴露给全世界。我们推荐您将socks接口只与本地网络捆绑。

在任何情况下,您都需要保持您的安全措施是最新的。在[Tor中继服务器的安全措施] (https://trac.torproject.org/projects/tor/wiki/TorRelayGuide/Security) 上阅读这篇文章以获得更多建议。

  • 出口节点是需求最大的一种中继服务器,但同时,它也面临着最大程度上的法律曝光和风险(而且您不应该在您的家里运行它们
  • 如果您正想要运行一个最简单的中继,快速守卫中继也十分有用。
  • Followed by bridges.

当一个出口被错误地配置了,或是一个恶意出口,它会被分配给损坏出口标志。这会让Tor 避免将那个中继服务器作为出口。事实上,有着这个标志的中继服务器就相当于不存在。 如果您有了这个旗帜标志,那么说明我们在从您的出口节点路由通信时发现了问题或可疑活动,但无法联系上您。请与[问题中继服务器团队] (https://community.torproject.org/relay/community-resources/bad-relays/) 取得联系,这样我们才能整治问题。

在升级您的Tor中继服务器,或把它转移到另一台计算机上时,重要的是保持同样的身份密钥(存储于您的数据词典里的"keys/ed25519_master_id_secret_key" and "keys/secret_id_key")。 给身份密钥进行备份,这样您就可以在未来修复中继服务器。这是我们推荐的确保中继服务器的名誉不被浪费的方法。

这意味着,如果您正在升级您的Tor中继服务器,且您没有更改torrc和数据词典,那么升级过程不会出现问题,您的中继服务器会继续使用相同的密钥。 如果您需要选择一个新的数据词典,请确保复制了您旧的keys/ed25519_master_id_secret_key and keys/secret_id_key。

Note: As of Tor 0.2.7 we are using new generation identities for relays based on ed25519 elliptic curve cryptography. 最终它们会取代老的RSA身份,来确保老版本的兼容性,但这不会立即发生。 直到那时,每个中继服务器都会有一个ed25519身份(身份密钥文件:keys/ed25519_master_id_secret_key)和一个RSA身份(身份密钥文件:keys/secret_id_key)。 您需要将两者都拷贝 / 备份,以便恢复您的中继服务器,更改您的数据词典或将中继服务器移植到另一台计算机上。

We're looking for people with reasonably reliable Internet connections, that have at least 10 Mbit/s (Mbps) available bandwidth each way. If that's you, please consider running a Tor relay.

Even if you do not have at least 10 Mbit/s of available bandwidth you can still help the Tor network by running a Tor bridge with obfs4 support. In that case you should have at least 1 MBit/s of available bandwidth.

您是正确的,在大多数情况下,您的Tor中继服务器进一个比特就意味着要出一个比特,反之亦然。但也有几个例外:

如果您打开了您的DirPort,那么Tor的客户就会向您索要一份目录的拷贝。 他们发出的请求(一个HTTP GET)十分的小,然而回复有时会非常大。 这应该能解释大多数您的“写入”比特量与“读取”比特量之间的不符。

当您以出口节点运行,并阅读了来自出口连接的几比特信息(比如一则即时信息或ssh连接),把它包裹成一个完整的512比特包以便在Tor 网络里运输时,一个小小的例外会出现。

如果您的Tor中继服务器使用了比您预想中更多的记忆储存,这儿有几条减少足迹的贴士:

  • 如果您是Linux 操作系统,您也许会在glibc的动态内存分配操作里遇到记忆储存碎片故障。 这就是说,当Tor 将记忆储存释放回系统后,这些记忆储存的片段被分成了许多碎片,很难再被利用。 Tor 原始码是用OpenBSD的动态内存分配操作进行运输的,这个方法没有那么多的碎片故障(但代价是更高的CPU负荷)。 You can tell Tor to use this malloc implementation instead: ./configure --enable-openbsd-malloc.
  • 如果您正在运行一个高速中继服务器,这意味着您拥有许多TLS连接处于打开状态,您可能正有大量记忆储存流失到了OpenSSL的内部缓冲储存器里。(每个插口38KB+) 我们已经给OpenSSL打过了补丁,来[更激进地释放未使用的缓冲区记忆储存] (https://lists.torproject.org/pipermail/tor-dev/2008-June/001519.html). 如果您升级到OpenSSL 1.0.0或更新的版本,Tor 的构造进程会自动识别并使用这个特点。
  • 如果您仍然解决不了记忆存储加载的问题,不妨考虑一下减少您的中继服务器公布的带宽。 展示较少的带宽意味着您会吸引较少的用户,所以您的中继服务器的规模应该不会变得很大。 请查阅主页中的MaxAdvertisedBandwidth选项。

所有这些都说明,Tor 高速中继确实需要大量内存。高速出口节点占用500-1000 MB内存是不正常的。

我们旨在让搭建一个Tor 中继简单而又边界:

特别地,如果您正在使用Debian或Ubuntu,从Tor 项目的信息库 里安装Tor 会有许多好处。

  • Your ulimit -n gets set to 32768 high enough for Tor to keep open all the connections it needs.
  • 用户档案只为了Tor 创建,所以Tor 不需要root就能运行。
  • 一个启动脚本被包含在了里面,这样Tor就会在开机时自行启动。
  • Tor runs with --verify-config, so that most problems with your config file get caught.
  • Tor 可以捆绑低层级的接口,然后下放权限。

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

在许多司法管辖区,Tor 中继服务器运行者是受公共承运人法律保护的,这条法律保护互联网服务提供者免受潜在的传播第三方内容的法律风险。 过滤某些流量的出口节点将丧失那些保护。

Tor促进了免费无干扰的网络访问。 出口中继不得过滤通过中继的互联网流量。 被检测到过滤流量的出口节点会被打上劣质出口的标签。

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

推荐在支持 Tor 的商业实体(例如某些 VPS 服务商 —— 译者注)上搭建 Tor 的出口节点。 你的出口节点有一个独立的 IP 地址,而且不会传输你的流量。 当然,你应该避免在你运行出口节点的电脑上存储任何敏感或与你有关的信息。

  • 不要使用 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
    

想了解更深入了解如何运行一个中继服务器,请参阅中继服务器设置指南

简而言之,它这样工作:

  • 这里有一个主ed25519身份密钥文件,名称是"ed25519_master_id_secret_key". 这是最重要的一个,所以请确保您在安全的地方存有备份——这份文件十分敏感,应得到充分保护。 如果您手动生成它,Tor 会对它进行加密并在被要求时输入密码。
  • 一个叫"ed25519_signing_secret_key"的中期签名密钥已经被生成,供Tor 使用。 Also, a certificate is generated named "ed25519_signing_cert" which is signed by the master identity secret key and confirms that the medium term signing key is valid for a certain period of time. 默认有效期为30天,但这个时长可以在torrc里通过设置" 签名密钥有效时间 N 天|周|月 "来自行调节。
  • 这里还有一个主公钥:“ed25519_master_id_public_key”,这是在网络里公布出来的中继服务器的真正身份。 This one is not sensitive and can be easily computed from "ed5519_master_id_secret_key".

只要中期签名密钥和认证是有效的,Tor 只会需要它们的访问权限,所以主身份密钥可以保存在数据词典/ 密钥之外,如一个存储介质或另一台计算机上。 您不得不在中期签名密钥和认证过期前手动更新它们,否则中继服务器上的Tor 进程会在到期时立刻退出。

这个功能是可选的,您不需要使用它除非您想这么做。 如果您想让您的中继服务器处于长时间无人看管的运行状态,且无需手动定期更新中继条款签名密钥,您最好将主身份密钥放在数据词典/ 密钥里,并做一个备份,以防您需要重新安装它。 如果您想要使用这个特殊功能,请参考我们在这个话题上更[详细的指南] (https://trac.torproject.org/projects/tor/wiki/doc/TorRelaySecurity/OfflineKeys)。

既然它现在是一名守卫了,客户们在其他地方使用它的频率变低了,但还没有许多客户将他们已有的守卫移走并把它当作守卫使用。 在这篇[博客帖子] (https://blog.torproject.org/blog/lifecycle-of-a-new-relay) 里查阅更多详情,或查看[守卫的变迁:理解和优化Tor的入口守卫选项的框架] (https://www.freehaven.net/anonbib/cache/wpes12-cogs.pdf)

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

如果您真的决定要运行多个中继服务器,请打开每个中继服务器torrc上的“我的家庭”配置选项,列出在您控制下的所有中继服务器(用逗号隔开):

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

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

这样的话,Tor 客户就会记住不要在单个环路里使用超过一个您的中继服务器。 如果您有这些计算机或其网络管理上的控制权,您就应该设置我的家庭,即使它们不全在同一个地理位置。

torrc文件里的会计选项让您能够明确规定您的中继服务器在一段时间内使用的最大流量。

    AccountingStart day week month [day] HH:MM

这详细规定了计数器应该在何时被重置。比方说,要想设置可供服务一星期的比特量(这在每周三上午10:00点会重置),您会使用:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

这详细规定了您的中继服务器在一个计数周期内发送的最大数据量和接收的最大数据量。 当会计期间被(AcountingStart)重置后,AccountingMax的计数器会被重置为0.

比如:假设您想要每天每个方向设置50GB的流量,那么计数器就应该在每天中午重置。

    计数开始日 12:00
    AccountingMax 50 GBytes

请注意,您的中继服务器不会在每个会计期间的一开始恰好被唤醒。 它会跟踪记录它在上一个时期里使用额度的速度有多快,并在新的时间间隔里选择一个随机的点唤醒。 这样我们就能避免数百个中继服务器在每个月的一开始就同时运行,结果在月末就没有服务器运行的情况发生。

相较于您的连接速率,如果您只能贡献一小部分带宽,我们推荐您使用日常账户,这样您就不会在每个月的第一天就把一整个月的额度全用光。 只要将您每月的限额除以30即可。您也可以考虑将流量限速,把您的额度覆盖更多的时间:如果您想要在每个方向提供X GB, 您可以将中继服务器的带宽率设为20*X KB. 比如,如果您每种方法都有50GB可提供,您也许要将您的中继服务器带宽率调为1000 KBytes: 这样您的中继服务器就总是可保持每天起码有一半的时间可以使用。

    计数开始日 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # 允许更高的短时流量但是保持平均

Tor 进程的两个客户和中继服务器功能都适用于在[AccountingMax] (https://2019.www.torproject.org/docs/faq.html.en#LimitTotalBandwidth)和[带宽率] (https://2019.www.torproject.org/docs/faq.html.en#BandwidthShaping) 里分配的参数。 因此您可能会发现,一旦您的Tor进入休眠,您就不能进行浏览了,而且在日志里会出现这样一条记录:

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

解决方案是运行两个Tor 进程——一个中继和一个客户端,每一个进程使用自己的配置。 做到这一点(如果您是从一个正在工作的中继服务器设置开始的话)的一种方法如下:

  • 在中继的Tor torrc文件中,将SocksPort设置为0.
  • 从torrc.样例中创建一个新的用户torrc 文件,并确保它与中继服务器使用的不是同一个登陆文件。 一种命名约定可以是 torrc.client 和 torrc.relay。
  • 修改Tor 客户和中继服务器启动脚本来包括-f /path/to/correct/torrc
  • 在Linux/ BSD/ Mac OS X系统中,将启动脚本改为Tor.clientTor.relay可以使系统配置的分离变得更轻松。

很棒! 这就是我们实施出口政策的原因。

每个 Tor 中继拥有一条出口规则,用于指定允许或拒绝何种类型的出站连接通过该中继。 出口政策通过目录传送给Tor 的客户,所以客户会自动避免挑选会拒绝退出到他们想要到达的目的地的出口中继服务器。 这样一来,每个中继服务器都可以决定服务,主人和它想让连接到达的网络,这些都基于滥用的可能性和它自身的状况。 Read the Support entry on issues you might encounter if you use the default exit policy, and then read Mike Perry's tips for running an exit node with minimal harassment.

默认的出口中继协议允许许多流行服务的获取权(如网页浏览),但出于滥用的潜在风险,限制了一些服务(如邮箱),还有一些是因为流量大小超出了Tor网络的承受范围(如默认文件共享端口)。 您可以通过编辑您的torrc文件来更改您自己的出口策略。 如果您想避免大部分而不是所有滥用的可能性,将其设置为"拒绝 :". 这个设置意味着您的中继服务器只会被用来中继Tor 网络内部的通讯,而不是外部的网站连接或其他服务。

如果您确实允许任何出口连接,确保域名解析正常(也就是,您的电脑能正确解析网络地址)。 如果有任何您的计算机不能访问的资源(比如您被限制性防火墙或内容过滤器拦住了),请明确的在您的出口节点规定里驳回它们,否则其他Tor 的用户也会被影响。

Tor可以很好地处理使用动态IP地址的中继,这没有关系。 您只需要将您的torrc文件中的”Address“留空,然后Tor会猜出它来。

是的,您在一些攻击中确实能获得更好的匿名性。

最简单的例子是一个拥有一些数量Tor 中继的攻击者。 他们会看见一个来自您的连接,但他们不会知道这个连接是来自于您的电脑还是您的中继上的其他人。

有些情况下,它不能帮助我们:如果一个网络入侵者观看了你所有的来来往往的通信,那么他很容易发现哪些连接被转接了,哪些连接从你开始。 (在这个情况下,他们仍然不知道您的目的地址,除非他们也在观察它们,但您也没有比一个普通客户好到哪里。)

运行一个Tor中继也有一些坏处。 首先,我们只有几百个中继服务器,而您恰好在运行其中一个。这个事实对于攻击者来说就是一个信号,告诉他们您把匿名看的很重要。 第二,有一些更深奥的、没有被很好理解或测试的攻击利用了您正在运行中继服务器这一点——比如,一个攻击者即使不能真的看见您的网络,他也能通过使用您的Tor中继服务器发送消息并留意通信时间,从而“观察”到您是否在发送信息

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

关于如何用您的 NAT/路由设备进行端口转发的指导,参见 portforward.com

如果您的中继在内网运行,您需要设置端口转发。 转发 TCP 连接取决于系统,但是防火墙客户端的常见问题条目提供了一些如何做的例子。

另外,这还有一个说明如何在 GNU/Linux 下使用 iptables 操作的例子。

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

如果您有不同的(连接到互联网的)外部接口,您可能需要改动"eth0"。 因为您可能只有一个(除了环回接口)所以这应该不难找。

您有两种添加至 torrc 的方法:

带宽率是指条件允许的情况下,最大的长时间传输带宽(字节每秒)。 比如,您也许想要选择“10M带宽率”来获得10兆字节每秒的传输速率(十分快速的连接),或者“500KB带宽率”来获取0.5兆每秒的传输速率(相当于一个不错的有线电缆传输速率)。 最小的BandwidthRate是75kilobytes每秒。

BandwidthBurst是一个字节池,用于满足短期流量高于 BandwidthRate 但长期平均流量低于 BandwidthRate 的需求。 A low Rate but a high Burst enforces a long-term average while still allowing more traffic during peak times if the average hasn't been reached lately. 比如,如果您选择了“带宽突发传输率 500KBytes” 并应用到您的带宽率,那么您的网速就永运不会超过50万字节每秒;但如果您选择了一个更高的带宽突发传输率(如5 MBytes),它就会允许更多的数据通过,直到资源池已满。

如果您有不对称的连接(上传小于下载),比如一个电缆调制解调器,您应该把带宽率设置成小于您更小的那个带宽(通常就是上传带宽)。 否则,你可能会在最大带宽使用时掉包——你可能需要试验一下哪些值使你的连接顺畅。 然后设置BandwidthBurst与BandwidthRate相同。

基于 Linux 系统的 Tor 节点提供了另外一种选择:他们会优先将Tor置于其他运行网络之下,因此他们的私人网络运作不会被 Tor 影响。 [能实现这一点的脚本] (https://gitweb.torproject.org/tor.git/tree/contrib/operator-tools/linux-tor-prio.sh) 可以在Tor 资源发行版的贡献目录里找到。

此外,您可以使用冬眠选项来告诉tor在每个特定时间段里只服务一定的带宽(比如每月100GB)。这些选项在下方的冬眠入口里。

请注意,带宽率和带宽突发传输率都是以字节而不是比特为单位的。