Linux服务器搭建Tor中继与退出节点教程

本教程旨在帮助有一定Linux服务器运维经验的用户搭建Tor网络的中继(Middle Relay)或退出节点(Exit Node)。在开始之前,请确保您已了解运行Tor节点的意义和相关责任。

目录

  1. 前置准备
  2. 安装Tor
  3. 核心配置 (/etc/tor/torrc)
  4. 配置为中级服务器 (Middle Relay)
  5. 配置为退出节点 (Exit Node)
  6. 高级配置(推荐)
  7. 启动并验证Tor服务
  8. 【高危警告】运行退出节点的责任与风险
  9. 在Tor网络上找到你的节点

1. 前置准备

  • 一台拥有公网IP地址的Linux服务器。
  • root用户访问权限。
  • 稳定的网络连接和充足的带宽(建议至少100 Mbps)。
  • 明确的认知:运行一个Tor节点,特别是退出节点,会消耗大量带宽,并可能使您的服务器IP收到网络滥用投诉。请务必获得服务器提供商(IDC/ISP)的许可。

2. 安装Tor

为了获取最新、最安全的Tor版本,我们强烈建议使用Tor Project官方的软件源,而不是发行版自带的旧版本。

Debian / Ubuntu

  1. 安装必要的工具:

    apt updateapt install apt-transport-https gpg
  2. 创建Tor软件源的配置文件:

    # 获取你的发行版代号,例如 bullseye, focal 等DEBIAN_CODENAME=$(lsb_release -sc)# 写入源信息echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${DEBIAN_CODENAME} main" > /etc/apt/sources.list.d/tor.list
  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和密钥环:

    apt updateapt install tor deb.torproject.org-keyring nyx -y
    • nyx 是一个非常强大的Tor命令行监控工具,推荐安装。

CentOS / RHEL / Fedora

  1. 创建Tor软件源的配置文件:
    /etc/yum.repos.d/Tor.repo 创建文件并写入以下内容。请注意将 __OS_MAJOR_VERSION__ 替换为你的系统主版本号 (例如 RHEL/CentOS 8, Fedora 36)。

    [tor]name=Tor Project Repobaseurl=https://rpm.torproject.org/centos/__OS_MAJOR_VERSION__/enabled=1gpgcheck=1gpgkey=https://rpm.torproject.org/centos/__OS_MAJOR_VERSION__/GPG-KEY-torproject.org.asc

    示例 (CentOS 8):

    [tor]name=Tor Project Repobaseurl=https://rpm.torproject.org/centos/8/enabled=1gpgcheck=1gpgkey=https://rpm.torproject.org/centos/8/GPG-KEY-torproject.org.asc
  2. 安装Tor:

    • 对于使用dnf的系统 (CentOS 8+, Fedora):
      dnf install tor nyx -y
    • 对于使用yum的系统 (CentOS 7):
      yum install tor nyx -y

3. 核心配置 (/etc/tor/torrc)

Tor的主要配置文件是 /etc/tor/torrc。在修改前,建议先备份一份。

cp /etc/tor/torrc /etc/tor/torrc.bak

使用你喜欢的文本编辑器(如vimnano)打开它:

nano /etc/tor/torrc

以下是一些所有类型节点都应该配置的基础信息。找到并取消注释(删除行首的#)或添加以下行:

# 给你的节点起一个独一无二的昵称Nickname <你的节点昵称># 提供一个联系方式,强烈建议提供。当出现问题时,Tor官方或其他人可以联系到你。# 这不是为了暴露你的身份,而是为了网络健康。请替换邮件地址中的 "@" 和 "."。ContactInfo <你的邮箱地址,例如 user at example dot com># 日志记录。建议记录notice级别以上的日志到文件。Log notice file /var/log/tor/notices.log

4. 配置为中级服务器 (Middle Relay)

中继节点只在Tor网络内部转发流量,不直接访问公共互联网,因此风险较低。这是贡献Tor网络最安全的方式。

torrc 文件中,确保以下配置生效:

# 监听来自其他Tor节点的连接端口。9001是标准端口。ORPort 9001# 这是关键:设置退出策略为全部拒绝。# 这明确告诉Tor网络,你的节点不是一个出口。ExitPolicy reject *:*
  • ORPort: 其他Tor节点将通过此端口连接到你的中继。
  • ExitPolicy reject *:*: 拒绝将任何流量转发到任何地址和端口,从而使你的节点成为一个非退出节点。

5. 配置为退出节点 (Exit Node)

警告: 运行退出节点意味着你的服务器IP将是Tor用户访问互联网的最终出口。你将承担所有相关的法律和滥用风险。**请务__必阅读本教程末尾的【高危警告】部分。

torrc 文件中,进行如下配置:

# 监听来自其他Tor节点的连接端口。ORPort 9001# 监听一个目录端口,帮助你的节点更快地被网络发现和使用。DirPort 9030# 这是关键:设置一个开放的退出策略。# 这条策略允许出口到所有IP的80和443端口(HTTP/HTTPS)。ExitPolicy accept *:80ExitPolicy accept *:443ExitPolicy reject *:*
  • DirPort: 你的节点会提供一份Tor网络目录的副本,有助于提升网络的鲁棒性。
  • ExitPolicy accept/reject: 这是一个简单的退出策略示例,仅允许常见的网页浏览流量。强烈建议使用后面章节提供的“缩减版”策略来降低风险。

6. 高级配置(推荐)

设置带宽限制

为了不让Tor耗尽你服务器的所有带宽,影响其他服务,设置带宽限制是明智的。

torrc 文件中添加:

# 每秒平均带宽限制 (例如 500 KBytes/s 或 10 MBytes/s)RelayBandwidthRate 10 MB# 突发带宽限制 (峰值)RelayBandwidthBurst 20 MB
  • 单位可以是 KB, MB, GB

设置MyFamily

如果你运行了多个Tor节点,将它们声明为同一家族(MyFamily)是一个好习惯。这可以帮助Tor客户端避免在同一条线路中同时使用你的多个节点,从而提高用户的匿名性。

在你的所有节点的 torrc 文件中,添加相同的MyFamily行,内容是每个节点的身份指纹(Fingerprint),用逗号隔开。

你可以在Tor启动后,在日志文件 /var/log/tor/notices.lognyx 中找到每个节点的指纹。

# 格式:MyFamily <指纹1>,<指纹2>,...MyFamily <你的第一个节点的指纹>,<你的第二个节点的指纹>

7. 启动并验证Tor服务

启动与自启动

# 启动Tor服务systemctl start tor# 设置为开机自启动systemctl enable tor# 查看服务状态systemctl status tor

如果状态显示为 active (running),则表示Tor已成功启动。

查看日志

Tor启动后,需要几分钟到半小时不等的时间来完成自检并发布其描述符到网络。你可以通过查看日志来确认进度。

# 查看实时日志journalctl -e -u tor.service -f# 或者查看我们之前配置的日志文件tail -f /var/log/tor/notices.log

当你看到类似下面这行的日志时,说明你的节点已经成功连接到Tor网络并且端口是可访问的:

[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.

使用nyx监控

nyx 是一个功能强大的Tor实时监控工具。直接在终端运行:

nyx

它会显示你的节点的实时带宽、连接数、日志摘要、配置信息和指纹。按 h 可以查看帮助。

8. 【高危警告】运行退出节点的责任与风险

在将你的服务器作为退出节点之前,请务必仔细阅读并理解以下内容!

法律与滥用投诉风险

  • 所有经由你节点的Tor流量,其源头IP都是你的服务器IP。 这意味着如果有人使用Tor通过你的节点进行非法活动(如网络攻击、发布垃圾邮件、发表非法言论等),网络服务提供商、网站管理员或执法机构看到的都是你的IP地址。
  • 极有可能 会收到来自你的主机提供商(IDC/ISP)的滥用投诉(Abuse Complaint)。你必须准备好如何专业地回应这些投诉,解释你正在运行一个Tor退出节点。
  • 在某些国家或地区,运行退出节点可能会带来法律风险。请确保你了解并遵守当地的法律法规。

使用“缩减版”退出策略

为了最大限度地减少滥用投诉,不要使用 ExitPolicy accept *:* 这样的完全开放策略。Tor项目官方提供了一个经过深思熟虑的“缩减版”策略,它阻止了最常被滥用的端口(如邮件、SSH、一些P2P文件共享端口等),同时保留了大部分正常的网页浏览功能。

强烈建议你在 torrc 文件中使用以下策略替换掉之前的 ExitPolicy 设置:

# 推荐的缩减版退出策略ExitPolicy accept *:20-21     # FTPExitPolicy accept *:43        # WHOISExitPolicy accept *:53        # DNSExitPolicy accept *:80-81     # HTTPExitPolicy accept *:110       # POP3ExitPolicy accept *:143       # IMAPExitPolicy accept *:194       # IRCExitPolicy accept *:443       # HTTPSExitPolicy accept *:464-465   # SMTPSExitPolicy accept *:531       # IRC/SExitPolicy accept *:563       # NNTPSExitPolicy accept *:587       # SMTP SubmissionExitPolicy accept *:706       # SILCExitPolicy accept *:873       # rsyncExitPolicy accept *:902-904   # VMWareExitPolicy accept *:981       # Remote AUTHExitPolicy accept *:989-995   # FTPS, POP3S, IMAPS, etc.ExitPolicy accept *:1194      # OpenVPNExitPolicy accept *:1220      # QT ServerExitPolicy accept *:1293      # PKT-KRB-IPSecExitPolicy accept *:1500      # ISP fasttrackExitPolicy accept *:1533      # SametimeExitPolicy accept *:1677      # GroupwiseExitPolicy accept *:1723      # PPTPExitPolicy accept *:1755      # RTSPExitPolicy accept *:1863      # MSNExitPolicy accept *:2082-2083 # cPanelExitPolicy accept *:2086-2087 # cPanelExitPolicy accept *:2095-2096 # cPanelExitPolicy accept *:2102-2104 # ZephyrExitPolicy accept *:3128      # SquidExitPolicy accept *:3389      # RDPExitPolicy accept *:3690      # SubversionExitPolicy accept *:4321      # rwhoisExitPolicy accept *:4643      # Virt-ManagerExitPolicy accept *:5050      # Yahoo! MessengerExitPolicy accept *:5190      # AOLExitPolicy accept *:5222-5223 # XMPP, JabberExitPolicy accept *:5228      # Android PushExitPolicy accept *:5900      # VNCExitPolicy accept *:6660-6669 # IRCExitPolicy accept *:6679      # IRC SSLExitPolicy accept *:6697      # IRC SSLExitPolicy accept *:8000      # IcecastExitPolicy accept *:8008      # HTTP alternateExitPolicy accept *:8080      # HTTP alternateExitPolicy accept *:8082      # HTTPS alternateExitPolicy accept *:8087-8088 # Second LifeExitPolicy accept *:8443      # HTTPS alternateExitPolicy accept *:8888      # HTTP alternateExitPolicy accept *:9418      # gitExitPolicy accept *:9999      # ShoutcastExitPolicy accept *:10000     # WebminExitPolicy accept *:11371     # OpenPGPExitPolicy accept *:19294     # Google TalkExitPolicy accept *:19638     # EnsimExitPolicy reject *:*

再次强调,ContactInfo 在退出节点上至关重要,它能帮助你处理可能出现的各种问题。

9. 在Tor网络上找到你的节点

一旦你的节点稳定运行2-3小时后,它应该会出现在Tor网络的公共列表中。你可以通过Tor Project的官方查询页面来搜索你的节点:

在搜索框中输入你的节点昵称(Nickname)IP 指纹(Fingerprint),就可以看到它的状态、带宽、在线时长等详细信息。


至此,你已经成功搭建并运行了一个Tor中继或退出节点。感谢你为互联网自由和隐私保护做出的贡献!请持续关注节点的运行状态和可能的滥用投诉。