SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

在VPS上搭建obfs4 Tor Bridge:配置与验证

一台低价VPS即可运行obfs4 Tor bridge。本文涵盖torrc指令、端口选择、防火墙设置、确认成功的日志行,以及用户获取bridge line的方法。

Tor bridge 是什么,以及它为何存在

Tor bridge 是进入 Tor 网络的入口点,但其地址不会发布在公开的中继列表中。该列表称为共识(consensus),是一份任何人都可以下载的签名文档,审查者也会下载它。阻断列表中的 Tor 地址只需一个下午:获取共识,然后在边界处丢弃其中的每个地址。Tor bridge 的存在正是因为这个公开列表是薄弱点。Bridge 地址会分批少量发放,因此单次请求不会交出完整地址集。

未列出的地址只能解决一半问题。深度包检测(DPI)会根据流量内容而不是地址对流量分类,它可以通过 TLS(传输层安全)握手的特征识别 Tor 连接。即使没有地址列表,审查者仍然可以判断“这看起来像 Tor”,然后丢弃该连接。可插拔传输可以移除这一特征。它会在客户端将 Tor 数据流封装成其他形式,然后由您的 bridge 解封装。

obfs4 是大多数 bridge 使用的传输方式。它会将数据流转换为不带标头且没有固定握手的字节序列,因此 DPI 没有可匹配的模式。它还会对客户端进行身份验证。bridge line 中的 cert= 值是一个密钥。客户端必须证明自己持有该密钥,bridge 才会响应。这可以阻止主动探测:审查者连接到您的地址,以测试该地址是否提供 Tor 服务时,不会收到任何响应,也无法获知任何信息。

应运行哪种可插拔传输?

  • obfs4 需要一台 VPS、两个 TCP 端口,且不需要域名。这是最容易部署且实用的方案,也是本指南的主题。
  • WebTunnel 将连接隐藏在发往真实网站的普通 HTTPS 流量中。Tor Project 列出的要求包括静态 IPv4 地址、您控制的域名、可正常运行的 Web 服务器(例如 NGINX 或 Apache)、有效的 TLS 证书,以及至少 1 GB RAM,推荐 4 GB。它适合随机特征流量本身就容易引起怀疑的网络,因为即使一个限制严格、几乎只允许网页浏览的国家,通常仍会允许 HTTPS。
  • Snowflake 是另一种参与方式。志愿者运行短期 WebRTC 代理,因此入口点会不断变化,不存在审查者可以长期封锁的固定地址。您无需为它运行 bridge,而是运行 proxy,且不需要固定地址。

请从 obfs4 开始。之后可以在第二个地址上添加 WebTunnel bridge:如果两者使用同一个 IP,封锁一个地址就会同时导致两者不可用。

运行桥接节点需要承担哪些成本?

ChartTor Project published minimum bandwidth, August 2026
The data behind this chart
[
  {
    "label": "Bridge, minimum",
    "min_upstream_mbit": 1
  },
  {
    "label": "Guard or middle relay, minimum",
    "min_upstream_mbit": 10
  },
  {
    "label": "Guard or middle relay, recommended",
    "min_upstream_mbit": 16
  }
]

截至 2026 年 8 月,Tor Project 要求桥接节点至少提供 1 Mbit/s 的上行和下行带宽。Guard 或中继节点要求提供 10 Mbit/s,并建议提供 16 Mbit/s。这些是公布的要求,不是实际测量值。新桥接节点通常会在数周内远低于最低要求。同一要求页面还要求中继节点每月至少产生 100 GByte 的出站流量,而最小规格的方案已经足以满足这一要求。因此,在选择更大规格之前,请先阅读小型 VPS 每月的实际成本

滥用风险较低,这是最容易被误解的地方。桥接节点是第一个跳点。离开您服务器的流量会前往另一个 Tor 中继节点,而不会直接前往用户选择的网站。您的 IP 地址不会作为请求来源出现在陌生网站的 Web 日志中,因此出口中继运营者处理的投诉邮件不会发到这里。不过,仍应检查服务提供商的可接受使用政策,因为有些主机商会将任何 Tor 服务视为特殊情况。

不要将现有的公网中继节点在同一个地址上转换为桥接节点。Tor Project 对这种情况的建议是更改“IP 地址、名称和指纹”,因为审查方下载的共识中已经包含旧地址。上周还是公网中继节点的桥接节点,已经可能出现在封禁列表中。

在线时间比速度更重要。中继节点要求指出:“如果您的中继节点每天停止运行超过 2 小时,其作用就会受到限制”。在这一点上,桥接节点的情况比中继节点更差,因为每个客户端只有一个地址,没有备用地址。一次重启就会断开其上的所有用户。请通过 在 Uptime Kuma 中设置 TCP 端口检查监控 obfs4 端口,这样它停止响应当天您就能发现。

从 Tor Project 软件源安装 Tor

发行版软件包通常滞后,而网桥属于应保持最新的安全软件。请先添加项目自己的软件源。

sudo apt update
sudo apt install -y apt-transport-https gnupg wget lsb-release
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

现在创建源文件。Suites: 行必须包含您的发行版代号,因此应从系统读取,而不是凭记忆填写。

sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $(lsb_release -cs)
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring obfs4proxy

如果 apt update 报告该软件源没有适用于您的代号的 Release 文件,说明 Tor Project 不提供该发行版。删除 /etc/apt/sources.list.d/tor.sources,再次运行 sudo apt update,然后安装发行版提供的 tor 软件包。下面的内容完全相同。

obfs4proxy 软件包由 Debian 和 Ubuntu 官方提供(截至 2026 年 8 月,Debian 13 中的版本为 0.0.14)。请确认二进制文件的安装位置,因为其路径需要写入配置:

command -v obfs4proxy || command -v lyrebird

上游项目已更名为 lyrebird,因此较新的软件包可能会安装 /usr/bin/lyrebird。请使用该命令输出的路径。

配置 /etc/tor/torrc 中的网桥

BridgeRelay 1
ORPort 8443
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:9443
ExtORPort auto
ContactInfo you@example.com
Nickname PickANickname
BridgeDistribution any

这些行中的每一行都可能导致故障,因此请逐行处理。

BridgeRelay 1 告诉 tor 将其描述符发送到网桥权威,而不是发送到公共共识。正是这一行使中继不出现在公开列表中。

ORPort 是实际的 Tor 端口。它必须可从互联网访问,因为 tor 会测试该端口,并在测试通过前拒绝发布描述符。

ServerTransportPlugin 指定要运行的命令。tor 将 obfs4proxy 作为子进程启动,并通过管道与其通信。因此,obfs4proxy 没有自己的服务单元,也不会出现在 systemctl status 中。

ServerTransportListenAddr 固定 obfs4proxy 的监听端口。省略这一行后,obfs4proxy 会在启动时选择一个空闲端口;大多数重启后,它会选择另一个端口。这样,您之前分发的每一行网桥配置都会指向一个没有进程监听的端口。客户端会收到连接被拒绝的错误,并停止重试。

ExtORPort auto 打开扩展 ORPort。这是 obfs4proxy 用于将已建立的连接及客户端地址交还给 tor 的回环通道。Tor Project 的配置指南要求每个网桥都包含这一项,因为没有它,该传输无法将客户端地址报告给 tor。

ContactInfoNickname 都是公开信息。请使用您会查看的地址,因为 Tor Project 会通过它联系您,告知网桥发生故障。如果您希望保持低调,请选择不会透露身份的昵称。

BridgeDistribution 选择向用户分发您地址的分发器。可接受的值包括 httpsemailtelegramsettingsnoneany。对于第一个网桥,请使用 any,让系统自动决定。对于由您自行分发的私有网桥,请使用 none,这样地址完全不会进入公开分发流程。

端口选择为何重要

两个端口都不要使用 9001。Tor Project 已明确说明这一点,因为 9001 是传统的 ORPort,审查者会在互联网中扫描该端口。两个端口也必须彼此不同,因为 tor 和 obfs4proxy 分别绑定各自的监听端口。

443 是最合适的 obfs4 端口。几乎所有受限网络都允许出站 443 流量,持续连接到该端口看起来也像普通的 Web 会话。绑定 1024 以下的端口需要额外执行一个步骤,因为 obfs4proxy 不以 root 身份运行:

sudo setcap cap_net_bind_service=+ep /usr/bin/obfs4proxy
sudo systemctl edit tor@.service tor@default.service

在每个打开的编辑器中添加以下两行:

[Service]
NoNewPrivileges=no

仅设置 capability 还不够。systemd 的 NoNewPrivileges 会阻止进程获得其父进程没有的任何权限,而文件 capability 正属于这类权限。因此,只要该设置保持启用,obfs4proxy 就无法绑定 443。

如果不想执行这一步,可以选择一个不引人注意的高位端口,并记录下来。无论选择哪个端口,之后都不要更改 obfs4 端口。桥接线路会将地址、端口、指纹和证书绑定在一起,因此用户浏览器中已经保存的每一份配置都会在端口变更后立即失效。

在两侧防火墙上开放端口

sudo ufw allow 8443/tcp
sudo ufw allow 9443/tcp
sudo ufw status

两个端口都必须开放。大多数服务商还会在控制面板中运行第二层防火墙,而 ufw 无法感知该防火墙。仅在服务器上存在、但未在控制面板中配置的规则,会导致桥接服务始终无法访问,也不会发布描述符。如果其中任一部分对您来说是新内容,请参阅新 VPS 所需的 ufw 规则Linux 上监听端口的实际含义。同时,使用密钥并强化 sshd 配置来限制 SSH 访问。在启用密码 SSH 的服务器上,即使桥接服务未列出,该服务器仍然启用了密码 SSH。

启动服务,然后查看日志

sudo systemctl enable --now tor.service
sudo systemctl restart tor.service
sudo journalctl -e -u tor@default

Debian 和 Ubuntu 提供两个单元。tor.service 是一个轻量包装器,tor@default.service 才是执行实际工作的进程。因此,journalctl -u tor 的内容几乎为空,而您要查看的日志位于 tor@default 下。

以下两行表示运行成功:

Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Registered server transport 'obfs4' at '0.0.0.0:9443'

第一行表示可达性测试通过,描述符已发送到桥接机构。如果该行始终不出现,说明互联网与您的服务器之间的某个环节正在丢弃发往 ORPort 的流量。第二行必须显示您配置的端口。如果其中显示的是其他端口,说明 tor 从未应用 ServerTransportListenAddr。通常的原因是传输名称不匹配:两条指令都必须写为 obfs4

确认两个监听器都存在:

sudo ss -lntp | grep -E 'tor|obfs4|lyrebird'

桥接线路在哪里?

obfs4proxy 会在 tor 的数据目录中写入一个模板:

sudo cat /var/lib/tor/pt_state/obfs4_bridgeline.txt

该目录属于 tor 用户,权限模式为 700。因此,如果没有 sudo,您会看到 Permission denied。该文件包含如下格式的一行:

Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0

<IP ADDRESS> 替换为服务器的公网地址,将 <PORT> 替换为 obfs4 端口,而不是 ORPort;将 <FINGERPRINT> 替换为 tor 写入其数据目录的身份指纹:

sudo cat /var/lib/tor/fingerprint
sudo cat /var/lib/tor/hashed-fingerprint

第一个文件包含您的昵称,以及应写入桥接线路的身份指纹。第二个文件包含经过哈希处理的指纹。您可以将该指纹粘贴到 中继搜索 中,以确认桥接是否正在运行,以及大致有多少客户端连接到它。二者不能互换。桥接线路中如果使用经过哈希处理的值,就无法匹配桥接所提供的身份密钥,因此客户端会拒绝刚刚建立的连接。

桥实际上如何触达用户?

您不应将桥接线路交给任何人。描述符到达桥接权威服务器后,分发系统(rdsys,BridgeDB 的后继系统)会将您的桥分配给一个分发器,用户再向该分发器请求桥接线路。截至 2026 年 8 月,可用方式如下:

  • 访问 bridges.torproject.org/options 提交 Web 表单。通过验证码后,页面会提供桥接线路。
  • 使用 Gmail 或 Riseup 地址向 bridges@torproject.org 发送邮件,系统会回复桥接线路。限制邮箱服务商是因为无限量的免费账户会让审查者枚举出所有桥。
  • 使用 Telegram 机器人 @GetBridgesBot。发送 /start,然后发送 /obfs4/webtunnel
  • 直接使用 Tor Browser,在“设置”中进入“连接”,选择“请求桥接”,通过 moat 通道获取桥接线路。

新桥接在完成设置约 3 小时后会出现在 Relay Search 中。用户出现所需的时间要长得多:Tor Project 的原文是:“直到您看到一组稳定的用户,可能需要几天或几周。”最初两周没有明显流量属于正常情况,不代表出现故障。

设置 BridgeDistribution none 会退出上述所有分发方式。此后,桥接线路由您发送给需要它的人,并应通过审查者无法读取的渠道发送。

出现问题时

日志中没有自检行。 ORPort 无法访问。使用 nc -vz your.ip 8443 从另一台机器测试。连接一直等待表示数据包被丢弃,因此检查 ufw 和服务商控制面板。连接被拒绝表示 tor 未监听,因此检查 ss -lntp,并查看日志中是否存在配置错误。

已注册的传输显示了一个未选择的端口。 tor 忽略了 ServerTransportListenAddr。传输名称必须与 ServerTransportPlugin 中的名称完全匹配,并且两者都必须为 obfs4

obfs4proxy 无法绑定端口 443。 使用 getcap /usr/bin/obfs4proxy 确认权限,然后使用 systemctl show tor@default -p NoNewPrivileges 确认覆盖配置已应用到该单元。如果输出 NoNewPrivileges=yes,说明 drop-in 配置写入了一个未运行的单元。

/var/lib/tor/pt_state/ 中没有任何内容。 tor 从未启动该传输,这表示 ServerTransportPlugin 中的路径错误。将其与 command -v obfs4proxy 的输出进行比较。

更改后客户端停止连接。 更改地址或 obfs4 端口会使已经分发的所有网桥配置行失效。同时检查服务器的公网 IP 是否也发生了变化。某些服务商在重建服务器时会出现这种情况。

tor 完全无法启动。 运行 sudo -u debian-tor tor --verify-config -f /etc/tor/torrc。该命令会解析文件,输出出错的行,但不会影响正在运行的服务。

FAQ

VPS 提供商会因运行 Tor 桥接而投诉吗?

桥接是入口,因此离开服务器的流量会发送到其他 Tor 中继,而不会发送到用户选择的网站。您的 IP 地址不会作为请求来源出现在任何人的 Web 日志中;这正是出口中继运营者需要处理投诉的原因。托管规则仍各不相同,一些提供商会将任何 Tor 服务视为特殊情况。因此,启动前请阅读可接受使用政策,并将您查阅到的地址填入 ContactInfo

Tor 桥接会使用多少带宽?

公布的最低带宽要求是上下行 1 Mbit/s,而守卫或中间中继为 10 Mbit/s。实际使用量一开始接近 0,因为您的桥接只承载分发器发送给它的用户流量。如果需要设置硬性上限,请在 torrc 中设置 RelayBandwidthRateRelayBandwidthBurst

为什么没有人连接到我的新桥接?

桥接大约需要 3 小时才会出现在 Relay Search 中。Tor Project 的指导是,形成稳定的用户群需要数天或数周。请确认描述符已发布;在 journalctl -u tor@default 中,这是自检行。然后在 Relay Search 中查找经过哈希处理的指纹,并确认 BridgeDistribution 未设置为 none

应该运行 obfs4 还是 WebTunnel?

如果这是您的第一个桥接,请运行 obfs4:需要 1 台 VPS、2 个端口,不需要域名或证书。如果随机流量本身会被阻断,请运行 WebTunnel,因为它需要您控制的域名、真实的 Web 服务器、有效的 TLS 证书,以及至少 1 GB 的 RAM。如果同时运行两者,请为它们使用不同的地址,否则 1 个被阻断的 IP 会同时使 2 个桥接失效。

之后更改 obfs4 端口会发生什么?

已经分发的每一条桥接线路都会停止工作。桥接线路会将地址、端口、指纹和证书绑定在一起,因此持有旧线路的客户端会连接到一个没有进程监听的端口,然后放弃连接。服务器的公网 IP 发生变化时也一样。请在设置期间选择端口,之后不要更改。