全部指南
本页内容
要在 VPS 上运行 Tor 中继,请从 Tor 项目自己的软件仓库安装 tor,在 /etc/tor/torrc
以下步骤使用运行
在 VPS 上运行 Tor 中继之前:选择角色
| 角色 | 作用 | 滥用举报 | Tor 项目最低要求 | 建议起步套餐 |
|---|---|---|---|---|
| 中间中继或守卫中继 | 转发加密流量;之后可担任守卫,即第一跳 | 通常没有 | 上下行各 | Sloop: |
| 网桥 | 不公开的入口点,供处于受审查网络中的用户使用 | 不太可能 | 上下行各 | Dinghy: |
| 出口中继 | 最后一跳:目标站点看到的是您服务器的 IP 地址 | 预计会收到 | 建议 | Cutter: |
| 洋葱服务 | 您的网站使用 .onion 地址,只能通过 Tor 访问 | 仅针对您的内容 | 取决于您的网站需求 | 小型网站可选 Dinghy |
每个 VPS 套餐都包含中继所需的独立 IPv4 地址,并且在我们的
我们的可接受使用政策欢迎中继和网桥,并允许遵循 Tor 项目指南的出口节点。中继的地址和联系信息都是公开的:如果不能让中继追溯到您本人,请阅读如何匿名购买 VPS。地区决定了适用哪个国家的法律,网络页面则提供了延迟对比。
从 Tor 项目的软件仓库安装 Tor
Tor 项目推荐使用其自己的软件仓库,而不是 Debian 的 LTS 版本或 Ubuntu 的 universe 软件包,因为后者“未能得到可靠的更新”。该仓库提供当前的稳定系列 0.4.9:
apt update
apt install -y apt-transport-https gnupg wget
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null
. /etc/os-release
cat > /etc/apt/sources.list.d/tor.sources <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $VERSION_CODENAME
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
apt update
apt install -y tor deb.torproject.org-keyring
tor --version
/etc/os-releasetrixienoble
在 VPS 上运行 Tor 中间中继或守卫中继
将 /etc/tor/torrc
Nickname myNiceRelay
ContactInfo YOUR_CONTACT_ADDRESS
ORPort 443
ExitRelay 0
SocksPort 0
- Nickname
- 1 至 19 个字母和数字。
- ContactInfo
- 当中继出现异常时,他人联系您的方式。该信息会被公开,因此请使用专门为此准备的地址;如果您运行多个中继,则必须填写。
- ORPort
- 客户端和其他中继通过 IPv4 和 IPv6 连接的端口。任何空闲端口均可。
- ExitRelay 0
- 流量只在 Tor 网络内部传输。
- SocksPort 0
- 关闭软件包默认开启的本地客户端端口 9050。
开放端口,重启 tor 并查看日志。如果 UFW 尚未启用,请先按照加固指南放行 SSH。
ufw allow 443/tcp
systemctl restart tor@default
journalctl -e -u tor@default
可达性检查最多可能需要 20 分钟,结束时会显示 Self-testing indicates your ORPort ... is reachable from the outside. Excellent. Publishing server descriptor. 大约三小时后,可以在 Relay Search 上通过 /var/lib/tor/fingerprint
限制带宽(可选)
如需限制中继的带宽,请将以下任一配置段添加到 torrc
# average and burst rate, in each direction
RelayBandwidthRate 25 MBytes
RelayBandwidthBurst 50 MBytes
# or a monthly quota
AccountingStart month 1 00:00
AccountingMax 4 TBytes
Tor 按 2 的幂计算,因此每秒 25 MBytes 约等于
在 VPS 上运行 Tor 网桥
网桥是不在公开目录中的中继,因此更难被封锁。用户通过 obfs4 连接网桥,obfs4 是一种可插拔传输,它会对 Tor 流量进行变换以绕过审查。按照 Tor 项目网桥指南的说明,安装它并替换 torrc
apt install -y obfs4proxy
BridgeRelay 1
ORPort 8443
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:8080
ExtORPort auto
ContactInfo YOUR_CONTACT_ADDRESS
Nickname PickANickname
请使用两个不同的、大于 1024 的空闲端口,并避开 9001,因为审查者可能会扫描该端口;使用更低的端口需要执行指南中的两个额外步骤。开放这两个端口并重启:
ufw allow 8443/tcp
ufw allow 8080/tcp
systemctl restart tor@default
日志中应显示 Registered server transport 'obfs4';如果没有,请检查 ServerTransportPluginobfs4proxylyrebird/usr/bin/lyrebird
您的网桥配置行位于 /var/lib/tor/pt_state/obfs4_bridgeline.txt 中:补上 IPv4 地址、obfs4 端口以及 /var/lib/tor/fingerprintBridge obfs4 SERVER_IP:8080 FINGERPRINT cert=... iat-mode=0。除非您设置了 BridgeDistribution none
负责任地运行 Tor 出口中继
目标站点会将出口节点的 IP 地址视为流量来源,因此出口节点会招来滥用投诉;Tor 项目也指出,出口节点“在所有中继中面临最大的法律风险和责任”。只要您遵循 Tor 项目的出口节点指南并采用精简出口策略,我们的可接受使用政策就允许运行出口节点。按照 EFF 的建议,请为出口节点使用独立的 IP 地址,不在其上存放任何个人数据,并且绝不让您自己的流量经过它。
1. 申请反向 DNS 名称
在启用出口功能之前,请在客户中心服务器页面的服务器操作中选择设置反向 DNS(PTR),填写您自己域名下的主机名,例如 tor-exit.example.org
2. 准备出口告知页面
80 端口上的一个页面会告诉任何查看该地址的人:这是一个 Tor 出口节点;该页面的作者表示,此举“已被证明能非常有效地减少滥用投诉”。复制 tor 自带的模板:
cp /usr/share/doc/tor/tor-exit-notice.html /etc/tor/tor-exit-notice.html
最小化的 Ubuntu 镜像不包含文档文件。如果该文件不存在,请改为从软件包中提取:
cd /tmp && apt download tor
dpkg-deb --fsys-tarfile tor_*.deb | tar -xO ./usr/share/doc/tor/tor-exit-notice.html > /etc/tor/tor-exit-notice.html
然后编辑标有 FIXME 的部分:您的主机名、联系地址,以及仅适用于美国的章节(非美国运营者应将其删除)。
3. 配置出口节点
Nickname myExitRelay
ContactInfo YOUR_CONTACT_ADDRESS
ORPort 443
DirPort 80
DirPortFrontPage /etc/tor/tor-exit-notice.html
ExitRelay 1
ReducedExitPolicy 1
SocksPort 0
精简策略大约放行 65 个端口,其中包括网页、加密邮件和 SSH,但不包括 25 端口,我们的网络默认也会封禁该端口。ExitPolicyExitPolicy reject *:22IPv6Exit 1
4. 运行本地 DNS 解析器并启动
出口节点要为 Tor 用户解析域名,因此 Tor 项目要求使用本地的、带缓存并验证 DNSSEC 的解析器;其 Debian 和 Ubuntu 操作步骤使用的是 Unbound。我们额外添加的 rm/etc/resolv.conf
apt install -y unbound
systemctl enable --now unbound
cp /etc/resolv.conf /etc/resolv.conf.backup
rm -f /etc/resolv.conf
echo nameserver 127.0.0.1 > /etc/resolv.conf
chattr +i /etc/resolv.conf
ufw allow 443/tcp
ufw allow 80/tcp
systemctl restart tor@default
Unbound 默认只在 localhost 上响应;请保持这一设置,因为开放解析器违反我们的可接受使用政策。之后,访问 http://SERVER_IP/
我们如何处理针对您出口节点的投诉
针对 Tor 用户经由您的出口节点所发送流量的举报,会按照我们常规的投诉处理流程处理,而不是自动暂停服务。每一份举报都会依据服务器所在地的法律进行审查;外国通知(包括美国 DMCA 通知)会得到答复,但不予执行,我们也可以在客户中心将其实质内容转告您。如果是独立服务器或 GPU 服务器,请在启动出口节点之前通过工单告知我们,以便我们迅速将举报转交给您。
托管 Tor 洋葱服务(隐藏服务)
洋葱服务(tor 的配置中称为 Tor 隐藏服务)会在一个只能通过 Tor 访问的 .onion 地址上发布网站。它不需要开放任何端口,因为 tor 只向外发起连接,所以网站只需监听 127.0.0.1。安装 nginx,删除其默认站点(它会在所有地址上响应),然后在本地提供您的页面:
apt install -y nginx
rm /etc/nginx/sites-enabled/default
mkdir -p /var/www/onion
echo 'Hello from my onion site' > /var/www/onion/index.html
cat > /etc/nginx/conf.d/onion.conf <<'EOF'
server {
listen 127.0.0.1:8080;
root /var/www/onion;
server_tokens off;
}
EOF
nginx -t
systemctl reload nginx
在 torrc
HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 127.0.0.1:8080
systemctl restart tor@default
cat /var/lib/tor/my-website/hostname
用 Tor Browser 打开该地址。请将该目录保留在 /var/lib/torhs_ed25519_secret_key
不要泄露服务器的地址
- 保持 80 和 443 端口关闭,使这些页面无法通过服务器的公网 IP 被找到。
- 隐藏版本标识、错误详情、状态页面和调试输出(例如 PHP 的
),这些信息可能暴露服务器的真实名称和地址。phpinfo() - 注意出站连接,例如 DNS 查询、发送邮件或为访客抓取 URL:正如 Riseup 的洋葱服务指南所述,这些连接来自您的真实 IP。其余事项请参阅 Tor 项目的操作安全页面。
通过公开网站公布洋葱地址(可选)
如果该网站同时通过 HTTPS 公开运行,在其 HTTPS server 块中加入下面这一行后,Tor Browser 就会提示访客可以使用洋葱地址,详见
add_header Onion-Location http://YOUR_ONION_ADDRESS.onion$request_uri;
保持 Tor 中继健康运行
自动更新
让加固指南中配置的 unattended-upgrades 也一并更新 tor。按照 Tor 项目的更新指南,在 Debian 上将第一行添加到 /etc/apt/apt.conf.d/50unattended-upgrades 的 Unattended-Upgrade::Origins-Pattern 块中,在 Ubuntu 上则将第二行添加到 Unattended-Upgrade::Allowed-Origins 中,然后用 unattended-upgrade --debug --dry-run 进行测试。
"origin=TorProject";
"TorProject:${distro_codename}";
备份
/var/lib/torpt_statetar -xzf tor-backup.tar.gz -C /var/lib,这样可以保留文件的所有者和权限。
tar -czf /root/tor-backup.tar.gz -C /var/lib tor
使用 nyx 进行监控
nyx 是 Tor 项目的终端监控工具,可实时显示带宽、连接和事件。tor 软件包已经开启了 nyx 所用的控制套接字,因此以 root 身份运行 nyx 即可:
apt install -y nyx
nyx
多个中继:设置中继家族
将您的中继声明为同一个家族,这样客户端就不会在同一条线路中使用其中的两个中继。正如 Tor 项目的 FamilyId 指南所述,自 tor 0.4.9 起,同一家族的中继共享一个密钥;其安装后指南称旧的 MyFamilymyrelays.secret_family_keyFamilyIdtorrc
tor --keygen-family myrelays
install -o debian-tor -g debian-tor -m 600 myrelays.secret_family_key /var/lib/tor/keys/
systemctl reload tor@default
故障排查
tor 无法启动
按照服务每次启动前的检查方式来验证配置。它会输出被拒绝的内容,例如拼错的选项、无效的昵称或已被占用的端口(可用 ss -tlnp
tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /etc/tor/torrc --verify-config
ORPort 无法从外部访问
出现 Your server has not managed to confirm reachability for its ORPort(s) 表示该端口从外部无法访问,在端口可达之前,中继不会发布任何信息。请将 ufw statusORPortORPort 443 IPv4Only
常见问题
可以在 VPS 上运行 Tor 中继吗?
可以。中继需要一个 IPv4 地址和一个可访问的 TCP 端口;如果是中间中继或守卫中继,每个方向还需要至少
运行 Tor 中继合法吗?
这取决于国家,既包括您所在的国家,也包括服务器所在的国家。就美国而言,EFF 的中继运营者法律常见问题表示,据其所知,尚无人因运行中继而被起诉、遭到刑事追诉或被定罪,并认为根据美国法律,中继(包括出口节点)是合法的。出口节点面临的法律风险最大。
运行 Tor 中继会收到滥用投诉吗?
中间中继、守卫中继或网桥很少会收到:Tor 项目表示,守卫中继和中间中继通常不会收到投诉,网桥也不太可能收到。出口节点则会收到,因为访问目标看到的是出口节点的 IP 地址。我们按照投诉处理流程处理这些举报,而不是自动暂停服务。
Tor 中继需要多少带宽?
根据 Tor 项目的中继要求,中间中继或守卫中继每个方向至少需要
可以在同一台 VPS 上同时运行洋葱服务和普通网站吗?
可以:同一个 Web 服务器可以在服务器的 IP 地址上提供公开网站,在 127.0.0.1 上提供洋葱网站,只要两者都不响应对方的主机名即可。然后用