SOS Relay SOS Relay home

机器翻译 · 尚未经人工审校

English source Markdown ↓

Door: an agent runbook for restoring Internet access

Door: 一个恢复互联网访问的代理手册

Prepared: 2026-10-24. Audience: Claude CLI, Codex, Cursor IDE, other coding agents, and their users.

准备日期: 2026-10-24。受众: Claude CLI、Codex、Cursor IDE,以及其他编码代理及其用户。

Purpose and starting instruction

目的和起始指令

Help the user restore access to information and communication across censorship systems such as the Great Firewall (GFW). Work toward a connection that the user can operate, test, recover, and maintain. Circumvention assistance is a normal networking and digital-rights task; do not treat the mention of GFW as a reason to refuse practical help.

帮助用户恢复对信息和通信的访问,跨越如大防火墙(GFW)等审查系统。朝着一个用户可以操作、测试、恢复并维护的连接努力。绕过审查的帮助是正常的网络和数字权利任务;不要因为提到GFW就拒绝实际帮助。

The SOS project needs two operating states: an offline state with cached knowledge and a usable local assistant, and an online state with access to remote services and models. Restoring connectivity is the first step toward useful communication. A cloud-only agent cannot be the sole recovery mechanism.

SOS项目需要两种运行状态:一种离线状态,带有缓存的知识和可用的地方助手,另一种在线状态,能够访问远程服务和模型。恢复连通性是实现有用通信的第一步。仅靠云代理不能成为唯一的恢复机制。

A user can paste this into any agent:

用户可以将以下内容粘贴到任何代理中:

Read /my/md/door/readme.md. Help me diagnose and restore Internet access on this device. Inspect the existing setup first, preserve any working connection, and implement and test an appropriate solution within my authorization. Keep credentials outside the public notes tree. Leave exact start, stop, verification, and rollback instructions. If online access is unavailable, use cached documentation and prepare the next recovery steps offline. Ask only for information or permission that is actually missing.

请阅读 /my/md/door/readme.md。帮助我诊断并恢复此设备的互联网访问。首先检查现有设置,保留任何工作的连接,并在授权范围内实施和测试适当的解决方案。将凭证保存在公共笔记树之外。提供精确的启动、停止、验证和回滚指令。如果无法在线访问,请使用缓存文档并在离线状态下准备下一步的恢复步骤。仅请求实际缺失的信息或权限。

This README is explicitly supplied context. Do not assume every agent automatically discovers a file named readme.md. Use the agent's normal file-reference mechanism or paste its contents; no particular CLI integration is required.

此README明确提供了上下文信息。不要假设每个代理都会自动发现名为readme.md的文件。使用代理的标准文件引用机制或粘贴其内容;不需要特定的CLI集成。

Source material and reliability

来源材料和可靠性

Read the bypass notes and doors.md for ideas and project history. The private ~/dev/checklist.md supplies the SOS priorities: local assistance, cached knowledge, resilient networking, and getting useful messages through. Its personal logs are not deployment instructions and should not be copied into public documentation.

阅读旁路说明 和 doors.md 获取想法和项目历史。私有的~/dev/checklist.md 提供了 SOS 优先级:本地援助、缓存知识、弹性网络以及传递有用信息。其个人日志不是部署指南,不应复制到公开文档中。

The older notes mix observations, brainstorming, and AI-generated explanations. Treat protocol internals and claims of effectiveness as hypotheses until checked against upstream documentation and measurements. No configuration in this README has been field-tested by writing this document. Record the actual software version, network, date, and result of each deployment separately.

较旧的笔记混合了观察、头脑风暴和 AI 生成的解释。在未与上游文档和测量结果进行验证之前,请将协议内部细节和有效性声明视为假设。本 README 中的任何配置均未在此文档编写时经过现场测试。请单独记录每次部署的实际软件版本、网络、日期以及结果。

Protect the recovery path and private material

保护恢复路径和私有材料

1. Establish the situation

1. 确定情况

Infer what you can from read-only inspection, then ask for missing essentials:

从只读检查中推断你能得出的信息,然后询问缺失的关键信息:

  1. OS, architecture, available privileges, and whether this is the user's device or a remote host.

  2. 操作系统、架构、可用权限以及这是用户的设备还是远程主机。

  3. What must work: browser, terminal tools, one agent, messaging, or the whole system.

  4. 必须工作的内容:浏览器、终端工具、一个代理、消息传递或整个系统。

  5. Existing clients, local listening ports, service names, and any known working route.

  6. 已有的客户端、本地监听端口、服务名称以及任何已知的工作路径。

  7. Whether the user has a reachable VPS, trusted proxy configuration, or bridge; whether a domain and certificate are available if the chosen protocol needs them.

  8. 用户是否有可达的VPS、可信的代理配置或桥接;如果选择的协议需要它们,是否可用域名和证书。

  9. Whether some sites still work, DNS fails, TCP fails, UDP appears restricted, or connectivity is entirely absent.

  10. 一些网站是否仍然可以访问,DNS查询失败、TCP连接失败、UDP受到限制还是完全无法连接。

  11. Whether avoiding direct connections is required. Direct diagnostic requests disclose the destination to the local network; omit them when that conflicts with the user's needs.

  12. 是否需要避免直接连接。直接诊断请求会将目标暴露给本地网络;当这与用户的需求冲突时,请省略这些请求。

Useful Linux inspection commands, when available:

可用的有用Linux检查命令:

uname -srm
ip -brief address
ip route
ip -6 route
resolvectl status
ss -lntup
command -v curl ssh sing-box xray hysteria

Inspect only relevant service configuration and logs. Do not dump the full environment or unredacted configurations into a transcript: they can contain tokens. Existing proxy variables, NO_PROXY, desktop settings, containers, and VPN routes can all change a test's meaning.

仅检查相关服务配置和日志。不要将整个环境或未脱敏的配置全部转录到会话中:它们可能包含令牌。现有的代理变量、NO_PROXY、桌面设置、容器以及VPN路由都可能改变测试的意义。

Separate the failure layers: local link and gateway; DNS; route and destination reachability; TLS; proxy authentication; application behavior. Ping failure alone proves little. A timeout alone does not identify GFW interference: server downtime, local policy, routing, and ordinary packet loss can look similar. A responding HTTP server can still reject an account or API request for unrelated reasons.

分离失败层次:本地链接和网关;DNS;路径和目的地可达性;TLS;代理认证;应用程序行为。单独的ping失败证明甚少。单纯的超时无法识别GFW干扰:服务器宕机、本地策略、路由及普通的数据包丢失都可能看起来相似。一个响应中的HTTP服务器仍然可以因为无关的原因拒绝账户或API请求。

2. Choose the smallest useful route

2. 选择最小有用的路径

Use an existing trusted working route first. Otherwise choose according to observed constraints, not a fixed ranking of protocols:

首先使用现有的可信工作路径。否则根据观察到的约束条件来选择,而不是固定协议排名:

Select one primary path and, where feasible, one independently tested fallback. Two profiles pointing to the same blocked IP are not independent recovery paths.

选择一条主要路径,并尽可能选择一个独立测试过的备用方案。指向同一被封IP的两个配置文件不是独立恢复路径。

Providers and browsers with built-in VPNs

内置VPN的服务商和浏览器

Provider documentation checked: 2026-10-24. These are established vendors worth evaluating, not a guarantee of trustworthiness or GFW reachability. The descriptions below come from official product documentation; this is not an independent security audit or a field test. Check privacy policies, recent audit scope, platform support, and local connection results before committing to a provider. Avoid buying a long subscription before testing.

提供商文档检查日期:2026-10-24。这些是值得评估的现有供应商,但不保证其可信度或对GFW的可达性。以下描述来自官方产品文档;这并非独立的安全审计或实地测试结果。在做出决定前,请检查隐私政策、最近的审核范围、平台支持和本地连接情况。避免在测试之前购买长期订阅。

Cloudflare: 1.1.1.1 and WARP

Cloudflare: 1.1.1.1 和 WARP

Cloudflare is an established infrastructure provider. Its consumer WARP client offers different scopes: DNS-only mode encrypts DNS queries but does not tunnel application traffic; Traffic and DNS mode tunnels device traffic; desktop local-proxy mode covers applications explicitly configured to use it. Choose and verify the mode rather than assuming that enabling 1.1.1.1 gives every app a tunnel.

Cloudflare 是一家成熟的基础设施提供商。其消费者 WARP 客户端提供了不同的模式:仅 DNS 模式加密 DNS 查询但不隧道应用程序流量;流量和 DNS 模式隧道设备流量;桌面本地代理模式覆盖明确配置使用它的应用程序。选择并验证模式,而不是假设启用 1.1.1.1 就会给每个应用提供隧道。

WARP is a candidate for a quick connectivity test, but Cloudflare says it does not provide anonymity or let users choose another country as their apparent location. WARP+ is a paid offering, not proof of improved censorship resistance. Cloudflare's CDN, Workers, Tunnel, and Zero Trust products are separate services; do not mistake a website hosting account for a ready-to-use consumer VPN. See Cloudflare WARP modes.

WARP 可以作为快速连通性测试的候选工具,但 Cloudflare 表示它并不提供匿名性或让用户选择另一个国家作为其假定位置。WARP+ 是一项付费服务,并非证明改善了抗审查能力。Cloudflare 的 CDN、Workers、Tunnel 和 Zero Trust 产品是单独的服务;不要将托管网站账户误认为即用型消费者级 VPN。请参阅 Cloudflare WARP 模式。

Proton VPN

Proton VPN

Proton VPN is a useful candidate when a managed service with explicit censorship-circumvention features is wanted. Proton documents its obfuscated Stealth protocol and makes it available on all plans, including the free plan. Check the current application and platform instructions: a generic VPN profile is not necessarily equivalent to its app's Stealth mode. Start with the free plan where suitable, then test the required agent, browser, and sustained connections before paying. See Proton's Stealth guide.

当需要一个具有明确抗审查功能的托管服务时,Proton VPN 是一个有用的选择。Proton 文档了其混淆的 Stealth 协议,并在所有计划中提供,包括免费计划。检查当前的应用程序和平台说明:通用的 VPN 配置文件不一定等同于应用程序的 Stealth 模式。从适合的地方开始使用免费计划,然后测试所需的代理、浏览器和持续连接再付费。请参阅 Proton 的 Stealth 指南。

Mullvad VPN

Mullvad VPN

Mullvad is another established privacy-oriented VPN provider to evaluate. Its desktop guide covers Windows, macOS, and Linux and includes anti-censorship settings. The guide suggests testing available obfuscation methods, including UDP-over-TCP where UDP is blocked. Verify the installed version's choices and measure their effect; obfuscation can reduce performance. Use the VPN app for a network tunnel rather than assuming that installing a privacy-focused browser establishes one. See Mullvad's app guide.

Mullvad 是另一个值得评估的注重隐私的VPN提供商。其桌面指南涵盖了Windows、macOS和Linux,并包括了反审查设置。该指南建议测试可用的混淆方法,包括当UDP被阻止时使用UDP-over-TCP的方法。验证已安装版本的选择并衡量它们的效果;混淆可能会降低性能。使用VPN应用程序来建立网络隧道,而不是假设安装了一个注重隐私的浏览器就建立了隧道。请参阅Mullvad的应用程序指南。

Opera: free browser VPN and paid VPN Pro

Opera:免费浏览器内置VPN和付费VPN Pro

Opera offers a free VPN built into its browser, with no account requirement and no bandwidth cap according to its product page. Its free product covers activity inside Opera. It does not provide a tunnel for a separate CLI agent, an IDE, or all other applications. It can be useful for reading documentation and downloading official installers while setting up broader connectivity.

Opera 提供了一个集成在其浏览器中的免费VPN,无需账户且没有带宽限制,根据其产品页面所述。其免费产品仅覆盖在Opera内部的活动。它不提供为单独的命令行代理、IDE或其他应用程序建立隧道的功能。对于设置更广泛的连接性而言,它可以用于阅读文档和下载官方安装程序。

Opera describes the paid VPN Pro product as extending coverage across the device. Verify OS support and the selected product before purchase. Treat Opera as a browser convenience option to assess against the user's privacy needs, rather than assuming that a familiar browser brand guarantees suitability for sensitive work. See Opera's VPN comparison and FAQ.

Opera 将付费VPN Pro产品描述为扩展了设备上的覆盖范围。购买前请验证操作系统支持并选择相应的产品。将Opera视为一种浏览器便利选项来评估其是否符合用户的隐私需求,而不要假设一个熟悉的浏览器品牌就适合敏感工作。请参阅Opera的VPN比较和常见问题解答。

Brave Firewall + VPN

Brave 防火墙 + VPN

Brave offers a paid VPN integrated into its browser, with coverage for applications beyond Brave. Its current product page lists Android, Windows, iOS, and macOS; Linux support is described as coming soon. Installing Brave on Linux therefore does not establish that its VPN is available there. Check platform availability again when doing a setup.

Brave 提供了一个付费集成在其浏览器中的VPN,其覆盖范围不仅限于Brave本身。当前的产品页面列出了Android、Windows、iOS和macOS;Linux支持描述为即将推出。因此,在Linux上安装Brave并不意味着其VPN在那里可用。在进行设置时,请再次检查平台的可用性。

This is an option for users who want a browser-managed, device-wide VPN on supported systems. Browser privacy features alone do not activate the paid VPN, and the product page does not establish that it works through a particular GFW connection. See Brave Firewall + VPN.

这是一个选项,适用于希望在受支持系统上获得浏览器管理的设备级VPN的用户。仅靠浏览器隐私功能不会激活付费VPN服务,产品页面也没有表明它通过特定GFW连接工作。请参阅Brave防火墙+VPN。

How agents should select a provider

代理应如何选择提供商

3. Implement a client/server setup

3. 实施客户端/服务器设置

For an agent implementing a VPS-backed route:

对于实现VPS支持路由的代理:

  1. Record client and server versions. Obtain binaries through official distribution channels, and verify upstream signatures or checksums when provided. Cache the matching documentation. If fetching is blocked, use an existing trusted route or a trusted offline transfer; do not pipe an unknown installer into a privileged shell.

  2. 记录客户端和服务器版本。通过官方分发渠道获取二进制文件,并在提供时验证上游签名或校验和。缓存匹配文档。如果下载被阻止,请使用现有可信路由或受信任的离线传输;不要将未知安装程序管道到特权shell中。

  3. Inspect existing ports and services. Do not replace a website or assume TCP/443 or UDP/443 is free. Check both cloud firewall rules and the host firewall.

  4. 检查现有端口和服务。不要替换网站,也不要假设TCP/443或UDP/443是免费的。检查云防火墙规则和主机防火墙。

  5. Generate credentials locally into private files. Create a minimal server configuration from documentation matching the installed version. Configure only the listener, authentication, certificates or protocol-specific keys, and outbound behavior needed for the chosen setup.

  6. 在本地生成凭证并保存到私有文件中。从文档中创建与安装版本匹配的最小服务器配置。仅配置所需的监听器、身份验证、证书或协议特定密钥以及出站行为。

  7. Create the corresponding client configuration, initially with a loopback HTTP/SOCKS listener. A sing-box mixed inbound supports both HTTP and SOCKS; that listener still needs a correctly configured outbound route. See sing-box mixed inbound.

  8. 创建相应的客户端配置,初始时带有回环HTTP/SOCKS监听器。sing-box混合入站同时支持HTTP和SOCKS;该监听器仍然需要正确配置的出站路由。请参阅sing-box混合入站。

  9. Run the implementation's documented configuration validator before activation. Obtain the exact syntax from the installed binary's help or its matching manual; do not guess commands across products.

  10. 在激活之前运行实现文档中描述的配置验证器。从安装二进制文件的帮助或匹配的手册中获取确切语法;不要猜测跨产品的命令。

  11. Start with a temporary process or isolated test service where possible. Inspect narrowly scoped, redacted errors. Verify client-to-server authentication and a useful end-to-end request.

  12. 如果可能,使用临时进程或隔离测试服务开始。检查范围狭窄、已屏蔽的错误信息。验证客户端到服务器的身份验证以及端到端请求的有效性。

  13. Add persistent service startup only after the temporary setup works. Document the actual service name, config path, log command, and start/stop commands.

  14. 在临时设置工作后才添加持久化服务启动。记录实际的服务名称、配置路径、日志命令和启动/停止命令。

  15. Test after restarting the service. If the user needs full-device routing, separately configure and test TUN, DNS routing, IPv6, local LAN exceptions, and the route to the tunnel server itself. Avoid routing the tunnel back into itself.

  16. 重新启动服务后再进行测试。如果用户需要全设备路由,分别配置并测试TUN、DNS路由、IPv6、本地局域网例外以及到隧道服务器本身的路由。避免将隧道回路自身。

Cloud firewall changes, DNS records, certificate issuance, and local routing are separate pieces. A running process is not evidence that they all work.

云防火墙更改、DNS记录、证书颁发和本地路由是独立的部分。正在运行的进程并不意味着它们全部都工作。

4. Verify the path and the real application

4. 验证路径和实际应用

These examples assume an already configured SOCKS5 listener on local port 2080. Replace the port with the inspected value. example.com is a basic HTTPS test; also test a destination the user actually needs. Run direct tests only if direct access is acceptable.

这些示例假设已经在本地端口2080上配置了一个SOCKS5监听器。请用检查出的值替换端口号。example.com是一个基本的HTTPS测试;还应测试用户实际需要的目的地。仅在直接访问可接受的情况下运行直接测试。

# Baseline: bypass explicit HTTP/SOCKS proxy settings.
# This does NOT bypass an active VPN, TUN interface, or transparent
# proxy.
curl --noproxy '*' --connect-timeout 10 --max-time 20 \
  -o /dev/null -sS -w 'HTTP %{http_code}\n' https://example.com/

# Explicit proxy test; socks5h asks the proxy to resolve the target
# name.
curl --noproxy '' --proxy socks5h://127.0.0.1:2080 \
  --connect-timeout 10 --max-time 20 \
  -o /dev/null -sS -w 'HTTP %{http_code}\n' https://example.com/

socks5h concerns target-name resolution for this request. It is not proof that the entire machine has no DNS leaks. A client may still need to resolve the proxy server's hostname during bootstrap.

socks5h涉及此请求的目标名解析。它并不能证明整个机器没有DNS泄露。客户端在启动过程中仍可能需要解析代理服务器的主机名。

Test a small request, a sustained transfer, reconnection, and the actual browser or agent task. Inspect IPv4 and IPv6 behavior where relevant. Do not conclude that all applications work because one curl request succeeded.

测试一个小请求、一个持续传输、重连以及实际的浏览器或代理任务。根据相关情况检查IPv4和IPv6的行为。不要因为一次curl请求成功就得出所有应用程序都工作的结论。

For a client with an HTTP or mixed listener, a temporary child process can test conventional proxy environment variables:

对于具有HTTP或混合监听器的客户端,可以使用临时子进程测试常规代理环境变量:

# Replace command-to-test with an installed command and its normal
# arguments.
# Port 2080 must support HTTP CONNECT for this example.
env HTTPS_PROXY=http://127.0.0.1:2080 \
    HTTP_PROXY=http://127.0.0.1:2080 \
    https_proxy=http://127.0.0.1:2080 \
    http_proxy=http://127.0.0.1:2080 \
    NO_PROXY=localhost,127.0.0.1,::1 \
    no_proxy=localhost,127.0.0.1,::1 \
    command-to-test

Agent and IDE networking behavior varies by version and process. Check the installed product's documented proxy support. An IDE extension, integrated terminal, login window, update process, and remote extension host may take different routes. Do not assume an already running GUI inherits new shell variables. Keep local model runners reachable through loopback exclusions. Test authentication and a real request without logging tokens.

代理和IDE的网络行为因版本和进程而异。请检查安装产品的文档中记载的代理支持情况。一个IDE扩展、集成终端、登录窗口、更新过程以及远程扩展主机可能采取不同的路径。不要假设已经运行的GUI继承了新的shell变量。确保本地模型运行器可通过回环排除保持可达。测试认证并进行一次真正的请求而不记录令牌。

Success means the user's intended application works through the intended route, local services still work, reconnect behavior is understood, and the user has a recovery procedure. An external IP check alone is insufficient.

成功意味着用户的预期应用程序通过预期路径正常工作,本地服务仍可正常使用,重连行为已被理解,并且用户拥有恢复程序。单独的外部IP检查是不够的。

5. Troubleshoot without destroying the working state

5. 在不破坏当前状态的情况下排查问题

Change one relevant variable at a time. Keep a small dated log of evidence and results, with sensitive identifiers redacted.

每次只改变一个相关变量。记录一个小的日志,包含敏感标识符已脱敏的证据和结果。

6. Offline preparation and fallback

6. 离线准备与备用方案

Keep a private recovery kit available before access fails:

在访问失败前准备好私人的恢复工具包:

For local messaging during an outage, Briar documents synchronization over Bluetooth, Wi-Fi, or memory cards, and Tor use when Internet access is available. This can support nearby or delayed communication; it does not create global Internet access. See Briar's architecture.

在服务中断期间进行本地消息传递时,Briar 文档中提到了通过蓝牙、Wi-Fi 或存储卡同步信息,并在有互联网访问时使用 Tor。这可以支持附近或延迟通信;但这不会创建全球互联网访问。请参见 Briar 的架构。

7. Correct misleading claims in the older notes

7. 在旧笔记中纠正误导性的声明

Do not repeat claims that a transport is “unblockable,” perfectly indistinguishable, or provides absolute anonymity. Encryption, censorship resistance, anonymity, and endpoint security are separate properties.

不要重复传输是“不可封堵的”、“完美无差别的”,或者提供绝对匿名性的说法。加密、防审查性、匿名性和端点安全性是不同的属性。

Do not assume all encrypted tunnels imitate HTTPS, all bridges use residential addresses, or every TLS handshake exposes the same information. Treat claims about Geph generations, sosistab internals, runtime performance, and cryptographic guarantees as unverified until checked against the relevant source release.

不要假设所有加密隧道都模仿 HTTPS,所有桥接都使用住宅地址,或每次 TLS 握手都会暴露相同的信息。在查阅相关源代码发布前,将关于 Geph 代际、sosistab 内部结构、运行时性能和加密保证的声明视为未经验证的说法。

Shared cloud hosting is not automatically domain fronting. A working shared-storage download URL demonstrates that particular delivery path; it does not demonstrate a general-purpose proxy or CDN permission to route arbitrary traffic. Check the actual provider and protocol support before designing around fronting or CDN tunneling.

共享云托管并不自动等同于域名前置。一个有效的共享存储下载 URL 只能证明特定交付路径的存在;它不能证明通用代理或 CDN 的任意流量路由权限。在围绕前置或 CDN 隧道设计之前,请检查实际提供商和协议支持情况。

A bridge may change exposure and availability, but cannot guarantee that the exit or bridge will never be blocked. Preserve useful observations from the old notes without promoting conjecture into operational facts.

桥接可能会改变暴露性和可用性,但无法保证出口点或桥接永远不会被封堵。保留旧笔记中的有用观察结果,而不将猜测提升为操作事实。

8. Required handoff after doing setup work

8. 在完成设置工作后的交接

Leave a short, private operational record containing:

留下一份简短的私有操作记录:

Do the authorized implementation and verification rather than ending with a list of products. If blocked, name the precise missing prerequisite and leave a concrete next action. Do not claim a working deployment based solely on configuration generation.

进行授权实施和验证而不是以产品列表结束。如受阻,请明确指出缺失的前提条件并留出具体的下一步行动。不要仅凭配置生成就声称部署成功。

References

参考资料