TUN 模式
开启 TUN 模式,在 Windows、Linux 和 macOS 上授予 Throne 所需的权限,调整 TUN 设置,并解决常见的 TUN 问题。
在 TUN 模式下,Throne 会创建一个虚拟网卡,并让整台电脑的流量都经过它。这样可以覆盖忽略代理设置的应用,DNS 查询也同样涵盖在内。当系统代理不够用时,请使用 TUN 模式。两种模式的对比请参见该用哪种模式。
开启 TUN 模式
- 在主窗口勾选
Tun 模式(Tun Mode),或在托盘菜单中使用操作模式(Operation Mode)→Tun 模式(Tun Mode)。 - 第一次使用时,Throne 会请求 TUN 所需的权限。请接受该请求(见下文)。
- 如果没有配置档在运行,请启动一个配置档。
TUN 模式生效期间,窗口标题会显示 [Tun]。当 Throne 拥有 TUN 所需的权限时,标题以 [Admin] 开头。开启或关闭 TUN 模式都会重启正在运行的配置档。
TUN 模式只在配置档运行时生效。停止配置档后,你的应用会重新使用普通连接。Throne 没有断网保护(kill switch)功能;参见常见问题。开启 程序(Program)→ 记住上次的配置档(Remember last profile)后,Throne 启动时会再次启动上次的配置档;如果你退出时 TUN 模式处于开启状态,还会重新开启它。
第一次使用时会发生什么:
- Windows: Throne 会询问“请以管理员身份运行 Throne”。点击
是(Yes)。Throne 会关闭,并以管理员身份重新启动,同时开启 TUN 模式;在此之前,Windows 会先显示用户账户控制提示。之后 Windows 防火墙可能会询问是否允许ThroneCore。请允许:如果你阻止了它,TUN 虽然能连接,但什么都打不开。 - Linux: Throne 会询问“请赋予核心 root 权限”。点击
是(Yes),并在系统提示中输入你的密码。Throne 随后会为核心授予 root 权限。再次勾选Tun 模式(Tun Mode)。 - macOS: Throne 会询问“请赋予核心 root 权限”。点击
是(Yes)。终端(Terminal)会打开并运行一条sudo命令。在终端中输入你的密码,然后再次勾选Tun 模式(Tun Mode)。
权限
TUN 模式需要系统权限,才能创建网卡并更改电脑的路由。
Windows
- Throne 必须以管理员身份运行。第一次点击
Tun 模式(Tun Mode)时,Throne 会提出以管理员身份重新启动。 - Throne 以管理员身份运行过一次后,每次启动时都会请求管理员权限。要停止这种行为,请勾选
设置(Settings)→基本设置(Basic Settings)→安全(Security)→始终以标准用户身份启动(Always Start as Standard User)。之后每次你开启 TUN 模式时,Throne 都会再次请求权限。 - 如果你在 Throne 以管理员身份运行时开启
程序(Program)→随系统启动(Start with system),Throne 会在登录时以管理员权限启动,不会弹出提示。
另请参见常见问题。
Linux
- 只有核心
ThroneCore需要 root 权限。Throne 通过pkexec为它授予这些权限:把ThroneCore的所有者设为 root,并设置 SUID 位(chown root:root和chmod u+s)。 pkexec是 polkit 的一部分。如果缺少它,Throne 会显示“Please install "pkexec" first.”(请先安装 "pkexec"。)- 切勿用
sudo启动 Throne 本身。 - 除了使用 SUID 位,你也可以为核心授予以下五项能力(capabilities):
CAP_NET_ADMIN、CAP_NET_RAW、CAP_NET_BIND_SERVICE、CAP_SYS_PTRACE和CAP_DAC_READ_SEARCH。只有当核心同时具备这五项能力时,Throne 才会认为它已获得权限。
sudo setcap cap_net_admin,cap_net_raw,cap_net_bind_service,cap_sys_ptrace,cap_dac_read_search+ep /path/to/Throne/ThroneCore
有些第三方软件包无法自行修改核心。它们会显示“This installation cannot grant the core privileges by itself.”(此安装无法自行为核心授予权限。),并附上该软件包提供的说明。另请参见常见问题。
macOS
- 在开启 TUN 模式之前,请把
Throne.app移到/Applications。权限是通过终端设置的,而当应用位于Downloads中时,这一步可能会失败。 - Throne 会打开终端,并为核心运行一条
sudo chown root:wheel … && sudo chmod u+s …命令。在终端中输入你的密码,然后再次勾选Tun 模式(Tun Mode)。 sudo需要管理员账户。在标准账户下,你可以使用系统代理,但无法使用 TUN 模式。
关闭权限请求
设置(Settings)→ 基本设置(Basic Settings)→ 安全(Security)→ 禁止权限请求(Disable Privilege request)会让 Throne 不再请求权限。之后 Throne 会以它已有的权限启动 TUN 模式,日志中会显示“用户选择无权限请求,某些功能可能不起作用”。仅当你自行授予权限时才使用此选项,例如你总是以管理员身份启动 Throne,或者你已经设置了上文所示的能力。
TUN 设置
打开 设置(Settings)→ Tun 设置(Tun Settings)。如果在你点击 确定(OK)时 TUN 模式处于开启状态,Throne 会显示“重启 Tun 以生效。”请将 Tun 模式(Tun Mode)关闭后再重新开启。
| 设置 | 默认值 | 作用 |
|---|---|---|
Stack |
Windows 10 及更高版本和 Linux 上为 system,macOS 上为 gvisor |
核心处理网卡流量的方式。system 使用操作系统的网络协议栈,gvisor 使用核心内置的网络协议栈,mixed 对 TCP 使用 system、对 UDP 使用 gvisor。在 Windows 7 和 8 上始终为 gvisor。 |
MTU |
1500 |
网卡的最大数据包大小。可选择 1500 或 9000,也可以输入 1000 到 10000 之间的值。其他值会被替换为 9000。 |
Tun 启用 IPv6(Tun Enable IPv6) |
关闭 | 为网卡分配一个 IPv6 地址,使 IPv6 流量经过隧道。 |
严格路由(Strict Route) |
Windows 10 及更高版本上开启,其他系统上关闭 | 在 Windows 上,拦截试图绕过隧道的 DNS 查询。参见 Windows DNS 泄漏防护。 |
启用 Tun 路由(Enable Tun Routing) |
关闭 | 把路由设为 direct 的 IP 范围和 geoip-* 规则集排除在隧道之外,由系统绕过核心直接路由它们。大型规则集可能会在 Windows 上导致非常高的 CPU 占用。 |
自动重定向(Auto Redirect) |
开启 | 仅限 Linux。在较新的内核上,system 和 mixed 协议栈需要它。开启期间,这台电脑不能用作其他设备的网络网关。 |
L3 桥接绕过(L3 Bridge Bypass) |
关闭 | 把被规则设为 direct 的 UDP 和 ICMP 流量直接从网卡发出,而不是为其新建一个连接。这样速度更快,并能让游戏和 P2P 的 NAT 正常工作。TCP 仍走普通的直连路径。在 ARM 版 Windows 上不可用。 |
IPv4 CIDR |
172.19.0.1/24 |
网卡的 IPv4 地址。仅当它与你使用的某个网络冲突时才需要更改。恢复默认地址(Restore default addresses)会重置两个地址。 |
IPv6 CIDR |
fdfe:dcba:9876::1/96 |
网卡的 IPv6 地址。仅在开启 Tun 启用 IPv6 时使用。 |
私有地址范围绕过(Private Range Bypass) |
开启 | 不经过核心、直接走你的网卡的地址范围,每行一个。恢复默认范围(Restore default ranges)会恢复该列表。环回地址和广播地址始终绕过隧道。 |
排除故障(Troubleshooting)→ 重置(Reset) |
– | 重启核心进程。当 TUN 模式无法启动时使用。 |
默认的 私有地址范围绕过(Private Range Bypass)列表为 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。
副作用
局域网
开启 私有地址范围绕过(Private Range Bypass)后,你的电脑会在隧道之外直接访问打印机、网络驱动器、路由器的设置页面以及其他本地设备。如果关闭它,本地流量会经过核心,并由你的路由规则决定其去向。如果某条路由规则把某个私有地址范围发往代理或将其拦截,该范围就会保留在隧道内,使规则得以生效。
Windows 上的移动热点与连接共享
如果 Windows 移动热点或 Internet 连接共享共享的是你的普通网卡,Windows 会忽略那些让 Throne 自身连接不进入隧道的设置。此时 TUN 模式会失败,Throne 会警告“IPv4 forwarding breaks Tun mode”(IPv4 转发会破坏 TUN 模式)。请改为从 throne-tun 网卡共享热点:在 Windows 的移动热点设置中,将“Share my internet connection from”(从以下位置共享我的 Internet 连接)设为 throne-tun。或者在使用 TUN 模式时关闭热点。参见常用方案。
Docker、WSL 与虚拟机
容器和虚拟机有自己的虚拟网络。它们与你的电脑之间的流量使用私有地址,因此通常会绕过隧道。如果这类网络使用的地址范围不在 私有地址范围绕过(Private Range Bypass)列表中,请将其添加进去。在 Linux 上请注意,自动重定向(Auto Redirect)会使电脑无法用作网络网关。参见常用方案。
其他 VPN
同一台电脑上的两个 VPN 会争夺路由和 DNS。开启 TUN 模式时,请关闭其他 VPN 应用。如果需要同时访问公司网络,请参见常用方案。
IPv6
Tun 启用 IPv6(Tun Enable IPv6)默认关闭。仅当你的服务器支持 IPv6 时才开启它,否则可能会出现连接问题。
DNS
在 TUN 模式下,所有应用的 DNS 查询都会到达 Throne。对于被你的规则设为直连的网站,DNS 泄漏测试仍可能显示你的运营商的 DNS 服务器。这是预期行为;参见 DNS。
故障排除
打开 日志(Logs)标签页,查找 TUN 模式启动时的错误。通用步骤请参见故障排除。
Windows
已连接,但什么都打不开。 Windows 防火墙可能拦截了 ThroneCore。Windows 只会在你第一次开启 TUN 模式时询问一次。如果当时你阻止了它,请在 Windows 安全中心(Windows Security)→ 防火墙和网络保护(Firewall & network protection)→ 允许应用通过防火墙(Allow an app through firewall)中,为专用网络和公用网络允许 ThroneCore。
杀毒软件。 某些杀毒软件(例如 Avast 和 ESET)会拦截网卡或核心。请为 Throne 文件夹添加例外。
换一个协议栈。 在 Tun 设置(Tun Settings)中将 Stack 设为 gvisor,然后重试。
“严格的路由不可用”。 Windows 无法开启严格路由。在 Tun 设置(Tun Settings)中取消勾选 严格路由(Strict Route),然后重新启动配置档。没有它,DNS 查询可能会泄漏;参见 Windows DNS 泄漏防护。
“Tun 设备运行异常”。 点击 重置(Reset)重启核心,然后重新启动配置档。
崩溃或强制退出之后。 虚拟网卡可能会残留。请重启 Windows。
TUN 模式启动非常慢。 TUN 模式启动时,Throne 会清除 Windows 的 DNS 缓存。非常大的 HOSTS 文件(例如包含 100,000 条记录的广告拦截列表)会使这一步变得非常慢。请缩小 HOSTS 文件。
移动热点。 参见移动热点与连接共享。
Linux
“Please install "pkexec" first.”(请先安装 "pkexec"。) 使用包管理器安装 polkit,或者设置 Linux 权限中所示的能力。
TUN 模式启动时出现“file exists”(文件已存在)。 此错误来自 自动重定向(Auto Redirect),已在 1.2.2 中修复。如果你仍然遇到它,请关闭 自动重定向(Auto Redirect),并将 Stack 设为 gvisor。
使用 systemd-resolved 时没有 DNS。 如果 /etc/systemd/resolved.conf 中为所有接口开启了 DNSOverTLS,TUN 模式就会失效。请在那里将其关闭,或者在 Throne 网卡存在期间,为该网卡单独关闭它:
sudo resolvectl dnsovertls throne-tun no
来自 AUR、Nix 或其他软件源的软件包。 它们由社区维护。如果 TUN 模式在这些软件包中无法工作,请试用官方构建版本;参见常见问题。
Throne 是用 sudo 启动的。 请退出它,并以普通用户身份启动。只有核心需要 root 权限。
macOS
macOS 提示应用已损坏或无法打开。 移除隔离标记:
xattr -d com.apple.quarantine /Applications/Throne.app
权限请求失败。 把 Throne.app 移到 /Applications,从那里启动它,然后再次勾选 Tun 模式(Tun Mode)。
标准账户。 TUN 模式需要管理员账户。请使用系统代理,或者使用管理员账户登录。
关于 Windows 上的 DNS 泄漏加固,请参见 Windows DNS 泄漏防护。
Android 版
在 VPN 模式下,Throne for Android 的工作方式类似 TUN 模式。其设置位于 设置(Settings)→ TUN / VPN。在那里,默认协议栈为 gVisor,默认 MTU 为 9000,并且严格路由始终开启。参见 VPN 与代理模式。