VPN 与代理模式

在 VPN 模式和仅代理模式之间做出选择,指定哪些应用使用 Throne,与其他设备共享代理,并调整 TUN 和入站设置。

Throne for Android 有两种运行模式。VPN 会将应用的流量经由 Throne 发送。仅代理(Proxy only)会运行一个本地代理,只有你配置过的应用才会使用它。本页介绍这两种模式、分应用代理、与其他设备共享代理,以及 TUN 和入站设置。

选择运行模式

在 设置(Settings)→ General → 运行模式(Service mode)中设置模式。

模式 作用 适用场景
VPN(默认) Android 会创建一个 VPN。Throne 通过虚拟网络接口(TUN)接收所有应用的流量,或仅接收你所选应用的流量。 你希望所有应用都使用 Throne。这是通常的选择。
仅代理(Proxy only) Throne 只在 127.0.0.1 上开启一个本地代理(SOCKS5 和 HTTP),默认端口为 2080。不会创建 VPN。 另一个 VPN 应用必须保持连接;你只需要在带有代理设置的应用中使用 Throne;或者你的设备无法授予 VPN 权限。

更改模式会停止正在运行的连接。再次点按连接按钮即可以新模式启动。

VPN 模式

在 VPN 模式下,Android 会把应用的网络流量发送给 Throne。Throne 随后按照路由配置的规定,将每个连接经由代理发送、直接发送或阻止。

  • 首次连接时,Android 会请你允许 VPN。参见 VPN 权限。
  • Android 同一时间只运行一个 VPN。当 Throne 以 VPN 模式连接时,其他任何应用的 VPN 都会断开。
  • 连接到手机热点的设备不会使用该 VPN,因为 Android 不会把它们的流量经由 VPN 应用发送。要让它们使用代理,请使用局域网共享。
  • 要让某些应用不走 VPN,或只让某些应用走 VPN,请使用分应用代理。

VPN 的 HTTP 代理

在 Android 10 及更高版本上,Throne 还会将其本地代理(127.0.0.1 和 代理端口(Proxy port))设为 VPN 网络的 HTTP 代理。遵循系统代理设置的应用(例如大多数浏览器)会将其网页流量直接发送到该代理。这部分流量仍然遵循你的路由配置。

  • 要让某些域名不使用该代理,请将它们添加到 设置(Settings)→ Inbound → HTTP 代理绕过列表(HTTP proxy bypass list)。每行写一个条目,例如 *example.com。以 # 开头的行是注释。应用访问这些域名时不经过代理。
  • 禁用混合入站(Disable mixed inbound)会移除该 HTTP 代理。

仅代理模式

在 仅代理(Proxy only)模式下,Throne 只运行一个本地代理,不做其他事情。Android 不会请求 VPN 权限,状态栏中也不会出现 VPN 钥匙图标。只有你设置为使用该代理的应用才会使用 Throne。在此模式下,TUN 设置和分应用代理不起作用。

  1. 打开 设置(Settings)→ General → 运行模式(Service mode),选择 仅代理。
  2. 返回配置列表,点按连接按钮。
  3. 在需要使用 Throne 的应用中设置 SOCKS5 或 HTTP 代理,服务器为 127.0.0.1,端口为 2080(或你设置的 代理端口(Proxy port))。
  4. 如果开启了 Enable authorization,还需要输入用户名和密码。

本地代理在同一端口上同时接受 SOCKS5 和 HTTP。

在此模式下,Throne 自己的请求也会经由本地代理发送,就像开启了 设置(Settings)→ 订阅(Subscriptions)→ Use proxy 一样。因此,订阅更新和 WARP 注册需要有正在运行的配置。没有运行的配置时,它们会失败并显示“Request with proxy but no profile started.”(请求需要经过代理,但没有启动任何配置。)

禁用混合入站(Disable mixed inbound)在 仅代理 模式下不起作用,因为本地代理是进入 Throne 的唯一途径。

分应用代理

分应用代理决定哪些应用使用 VPN。它只在 VPN 模式下有效。

打开 设置(Settings)→ TUN / VPN → 分应用代理(Apps VPN mode),应用列表随即打开。在列表顶部选择一种模式:

模式 效果
关闭(Off) 关闭分应用代理,所有应用都使用 VPN。选择它会关闭列表。
代理(Proxy) 只有所选应用使用 VPN,其他所有应用直接连接。
绕过(Bypass) 所选应用跳过 VPN,直接连接;其他所有应用使用 VPN。

打开列表即会开启分应用代理,首次打开时预选 绕过(Bypass)。要关闭分应用代理,请再次打开列表并选择 关闭(Off)。如果没有选择任何应用,那么在两种模式下所有应用都会使用 VPN。

选择应用:

  1. 点按一个应用以选中它,再次点按则取消选中。
  2. 使用 搜索…(Search…)按名称、包名或用户 ID 查找应用。
  3. 关闭 显示系统应用(Show system apps)可隐藏系统应用。默认会显示系统应用。

每一行显示应用名称、包名,以及括号中的用户 ID。共享同一用户 ID 的应用会被一起选中。打开列表时,已选中的应用排在最前面。已选中但未安装的包会保留在列表中,并标记为“(not installed)”(未安装)。

自动选择需要代理的应用(Auto select proxy apps)会从一个内置列表中选择应用。该列表包含约 390 个常需要代理的应用,例如 Google 应用、YouTube、Facebook、Instagram 和 Netflix。它会替换对已安装应用的选择。你按名称添加的包或未安装的包仍保持选中。在 代理(Proxy)模式下,它会选中该列表中的应用;在 绕过(Bypass)模式下,它会选中其他所有应用。在这两种情况下,该列表中的应用都会使用 VPN,其他应用则不会。用户 ID 为 1000 的应用(Android 系统)被视为该列表中的应用。Throne 会先询问“Auto select proxy apps?”(自动选择需要代理的应用?)。点按 Replace 继续。

列表的工具栏和 ⋮ 菜单中有以下操作:

操作 作用
反选(Invert selections) 选中所有未选中的应用,并取消选中其他应用。
清空(Clear selections) 清除全部选择。
Add package name… 按包名添加应用,例如列表无法显示的应用。多个包名之间可用空格、逗号或换行分隔。
导出到剪切板(Export to clipboard) 复制模式和所选包名。
从剪切板导入(Import from clipboard) 用复制的列表替换模式和选择。

剪贴板格式为纯文本。第一行为 true 表示 绕过(Bypass),为 false 表示 代理(Proxy)。之后每一行是一个包名:

false
com.google.android.youtube
org.telegram.messenger

导入时,第一行不区分大小写。第一行为 true 以外的任何内容都会选择 代理。

如果 Throne 已连接,新的选择会在连接重新加载后生效。请停止并重新启动连接,或在 Throne 显示“重载代理服务以应用修改”时点按 应用(Apply)。

如果列表一直为空,请参见已安装应用。

要把某个应用发送到特定出站、同时让它留在 VPN 中,请改用带有 Apps 条件的路由规则。桌面版没有应用列表。在桌面版上,你需要使用按进程名匹配的路由规则。参见路由。

局域网共享

局域网共享可以让同一网络中的其他设备(例如笔记本电脑或电视)把你手机上的 Throne 用作代理。它在两种运行模式下都有效,也适用于连接到你手机热点的设备。

  1. 打开 设置(Settings)→ Inbound,开启 允许来自局域网的连接(Allow connections from the LAN)。此后 Throne 会在所有网络接口上监听,而不仅仅是 127.0.0.1。
  2. 开启 Enable authorization,并设置 用户名(Username)和 密码(Password)。
  3. 记下 代理端口(Proxy port),默认是 2080。
  4. 如果 Throne 已连接,请在 Throne 显示“重载代理服务以应用修改”时点按 应用(Apply),或重新连接。
  5. 查找手机的 IP 地址。它显示在 Android Wi-Fi 设置中所连接网络的详细信息里。对于连接到你热点的设备,请使用该设备在其连接信息中显示的路由器(网关)地址。
  6. 在另一台设备上设置 SOCKS5 或 HTTP 代理,填写手机的 IP 地址、端口、用户名和密码。

当你恢复一份允许局域网连接的备份中的 Settings 部分时,Throne 会关闭 允许来自局域网的连接(除非它原本就已开启),并显示警告。

在桌面版上,相同的功能叫做 允许其他设备连接(Allow other devices to connect)。参见系统代理、TUN 与局域网共享。

TUN / VPN 设置

这些设置位于 设置(Settings)→ TUN / VPN。它们只在 VPN 模式下生效。如果更改设置时 Throne 已连接,请在 Throne 显示“重载代理服务以应用修改”时点按 应用(Apply)。

设置 默认值 作用
TUN 实现(TUN implementation) gVisor 处理 VPN 接口流量的网络协议栈:gVisor、System 或 Mixed。如果某些应用无法正常工作,请尝试其他选项。
MTU 9000 VPN 接口的最大数据包大小。可从列表中选择 1500 或 9000,也可以长按该设置项输入 1000 到 10000 之间的任意值。
Tun IPv6 关闭 为 VPN 接口分配 IPv6 地址,并通过它路由 IPv6。关闭时,Throne 运行期间 IPv6 连接会立即失败,因此应用会使用 IPv4。仅当你的服务器支持 IPv6 时才开启。
Tun routing 关闭 将路由配置发往 direct 的 IP 范围排除在 VPN 接口之外,使这部分流量不经过 Throne。
Bypass private ranges 开启 将 Private ranges 排除在 VPN 接口之外,以便直接访问本地网络中的设备。
Private ranges 8 个地址范围 排除在外的地址范围。每行一个地址或 CIDR。仅在开启 Bypass private ranges 时可用。
Restore default ranges — 恢复默认的私有地址范围列表。
分应用代理(Apps VPN mode) 关闭 分应用代理。参见分应用代理。
IPv4 CIDR 172.19.0.1/24 VPN 接口的 IPv4 地址。
IPv6 CIDR fdfe:dcba:9876::1/96 VPN 接口的 IPv6 地址,在开启 Tun IPv6 时使用。
Restore default addresses — 恢复两个默认地址。

默认的私有地址范围为 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、169.254.0.0/16、224.0.0.0/4、fc00::/7、fe80::/10 和 ff00::/8。如果某条路由规则将某个私有地址范围中的地址发往 direct 以外的出站,或拒绝这些地址,Throne 会把整个私有地址范围保留在 VPN 接口之内,以便该规则生效。

严格路由(strict route)在 Android 应用中始终开启,没有对应的设置项。在桌面版上它是一个设置项。参见 TUN 模式。

MTU

Android 版的默认 MTU 为 9000,桌面版的默认值为 1500。除非遇到问题,否则请保留默认值。如果某些应用或网站无法访问而其他的正常,请将 MTU 设为 1500 并重新连接。当你恢复桌面版备份中的设置时,桌面版的 MTU 也会随之恢复。除非你在桌面版中更改过,否则该值为 1500。

入站设置

设置(Settings)→ Inbound 控制 Throne 的本地代理,即混合入站(mixed inbound)。它在一个端口上同时接受 SOCKS5 和 HTTP。

设置 默认值 作用
禁用混合入站(Disable mixed inbound) 关闭 在 VPN 模式下,Throne 不开启本地代理。这也会移除 VPN 的 HTTP 代理和局域网共享。在 仅代理 模式下不起作用。
代理端口(Proxy port) 2080 本地代理的端口。在工作资料或其他 Android 用户中,默认值为 2080 加上该用户的编号。
Random port 关闭 每次启动连接时选择一个空闲端口,并将其保存为 代理端口。
允许来自局域网的连接(Allow connections from the LAN) 关闭 在所有网络接口上监听,而不仅是 127.0.0.1。参见局域网共享。
HTTP 代理绕过列表(HTTP proxy bypass list) 空 不使用 VPN 的 HTTP 代理的域名。每行一个条目。
Enable authorization 关闭 客户端必须提供 用户名(Username)和 密码(Password)。这适用于所有客户端,包括本机上使用 VPN 的 HTTP 代理的应用。
Custom inbound {"inbounds": []} 以 JSON 形式提供的额外 sing-box 入站。Throne 会将 inbounds 数组原样添加到其配置中。

开启 禁用混合入站 时,本界面上除 Custom inbound 以外的所有其他设置都会被禁用。

桌面版也有类似的设置。参见入站设置。