# 桌面与路由器设置

SecurQbit 为没有应用程序的机器提供了命令行客户端：Linux 服务器和桌面、Windows、FreeBSD，以及 OpenWrt 路由器。它使用与手机应用完全相同的 VPN 和账号 — iOS 与 Android 请参阅[安装 SecurQbit](/installation)。

安装会放入两个程序：

| 程序 | 是什么 |
| --- | --- |
| `securqbitd` | 后台服务。它保管你的会话、建立隧道并配置系统路由。它以系统权限运行，因为创建隧道设备需要这些权限。 |
| `sqctl` | 你输入的命令。它请求服务做事，并把过程展示给你。它不保存任何凭据，自身也不需要权限。 |

你打交道的是 `sqctl`。全部命令见 [CLI 参考](/cli-reference)。

## 一条命令完成安装

在 Linux、macOS、FreeBSD 和 OpenWrt 上：

```bash
curl -fsSL https://cdn.securqbit.com/securqbitd/install.sh | sudo sh
```

安装就到此为止。脚本会判断这台机器需要哪个包，下载它，与已发布的 SHA-256 校验和比对，把两个程序放到位，并向本机负责守护长期进程的组件注册服务 — systemd、OpenRC、runit、SysV init、procd、rc.d 或 launchd。其他什么都不用配置。

完成之后：

```bash
sqctl login              # 打开一个链接，在浏览器中批准
sqctl connect --fastest
sqctl status
```

> **你需要一个已有的账号。** 桌面客户端通过浏览器批准登录，无法创建账号。请先在 [iOS 或 Android 应用](/installation)中创建 — 包括[访客账号](/anonymous-accounts)，它可以用恢复码登录 accounts.securqbit.com 并在那里批准。

### 选项

安装程序接受几个参数，写在 `sh -s --` 之后：

```bash
curl -fsSL https://cdn.securqbit.com/securqbitd/install.sh | sudo sh -s -- --no-start
```

| 参数 | 作用 |
| --- | --- |
| `--version <v>` | 安装指定版本，而非当前版本。 |
| `--from <path>` | 从已下载的压缩包安装，不联网。 |
| `--prefix <dir>` | 安装到 `/usr/local` 以外的位置（OpenWrt 上是 `/usr`）。 |
| `--no-start` | 注册服务但不启动。 |
| `--no-router` | 在 OpenWrt 上安装，但不把 LAN 放到隧道后面。 |
| `--uninstall` | 移除服务和两个程序。 |

## 支持的平台

| 系统 | 架构 |
| --- | --- |
| Linux | x86-64、arm64、armv7 |
| Windows | x86-64、arm64 |
| FreeBSD | x86-64、arm64 |
| OpenWrt | x86-64、arm64、armv7 |
| macOS | Apple 芯片、Intel |

采用静态编译，因此同一个 Linux 包同时适用于 glibc 和 musl — Debian、Ubuntu、Fedora、Arch、Alpine 和 Void 用的是同一个文件。

> **没有 MIPS 版本，将来也不会有。** 这类路由器只有 8–16 MB 闪存，而 SecurQbit 需要大约 40 MB，所以为它们做的包只会在你等完下载之后失败。ARM 或 x86-64 路由器可以正常使用。

> **在 macOS 上请优先用应用程序。** Mac 上的产品是 App Store 里的 SecurQbit 原生应用。命令行客户端能在 macOS 上编译运行，是为了便于在那里开发；它不是 Mac 用户该安装的东西。

## 校验下载文件

安装程序已经会把压缩包和旁边发布的校验和比对，不一致就拒绝继续。若要手动校验，或离线安装：

```bash
V=$(curl -fsSL https://cdn.securqbit.com/securqbitd/latest)
BASE=https://cdn.securqbit.com/securqbitd/$V

curl -fsSLO $BASE/securqbit-$V-linux-amd64.tar.gz
curl -fsSLO $BASE/SHA256SUMS

sha256sum --check --ignore-missing SHA256SUMS
```

然后从刚刚校验过的文件安装：

```bash
tar -xzf securqbit-$V-linux-amd64.tar.gz
sudo ./securqbit-$V-linux-amd64/install.sh
```

从解压后的目录里运行 `install.sh`，安装的就是*那个*压缩包，全程不联网 — 这正是给尚未接通互联网的机器安装的方法。

> 校验和与安装包走的是同一条 HTTPS 连接，因此它证明的是文件完整送达，而不是服务器诚实。让这条连接可信的是 TLS。不要通过明文 `http` 安装。

## 不用 `sudo` 使用

服务以 root 运行。它监听的套接字属于安装程序创建的 `securqbit` 组，因此该组成员无需密码即可操作 VPN：

```bash
sudo usermod -aG securqbit "$USER"    # Linux
sudo pw groupmod securqbit -m "$USER" # FreeBSD
```

注销后重新登录，新组才会生效。macOS 上对应的组是 `admin`，管理员本来就在其中。Windows 上对应的是 `SecurQbit Users` 组，与 SYSTEM 和 Administrators 并列。

在此之前，`sqctl` 会告诉你它没有权限，并打印上面的命令。

## Windows

Windows 从压缩包安装，而不是用那条单行命令。

1. 从 [cdn.securqbit.com/securqbitd](https://cdn.securqbit.com/securqbitd/) 下载 `securqbit-<version>-windows-amd64.tar.gz` 并解压。
2. 把与你的架构相符的隧道适配器驱动 `wintun.dll` 放到 `securqbitd.exe` 旁边。SecurQbit 不随包分发它；请从 [wintun.net](https://www.wintun.net) 下载。
3. 在解压出的目录中，从**管理员权限**的 PowerShell 提示符运行：

```powershell
.\install.ps1
```

这会把两个程序复制到 `%ProgramFiles%\SecurQbit`，注册服务，并把该目录加入系统 `PATH`，让 `sqctl` 在任何终端都能用。之后请打开一个新终端，让它读到新的 `PATH`。

要卸载，在同一个管理员提示符下运行 `.\uninstall.ps1`。

## OpenWrt：让整个网络走 VPN

在路由器上，SecurQbit 保护网络里的一切 — 手机、笔记本、游戏机、智能电视 — 而它们上面什么都不用装。

```bash
curl -fsSL https://cdn.securqbit.com/securqbitd/install.sh | sh
sqctl login
sqctl connect --fastest
```

安装还会配置防火墙：在隧道设备上建立一个带 NAT 的区域，把 LAN 流量转发进去，并拒绝 LAN 发往 WAN 的 IPv6。这在路由器上是默认行为，因为一台只保护路由器自身流量的 VPN 路由器，并不是任何人装它的目的。如果你确实只想那样，用 `--no-router`。

**开始之前，请确认三件事。**

- **闪存。** 需要约 90 MB 可用空间。多数家用路由器没有，安装程序会拒绝，而不是把 overlay 填满 — overlay 满了的路由器无法通过网络修复。解决办法是在 U 盘或 SD 卡上做 [extroot](https://openwrt.org/docs/guide-user/additional-software/extroot_configuration)。
- **tun 模块。** OpenWrt 默认固件不含它：`opkg update && opkg install kmod-tun`（或 `apk add kmod-tun`）。缺了它，失败的是第一次连接，而不是安装。
- **curl。** 有些固件既没有 curl，也没有能正确处理 HTTPS 的 wget：`opkg install curl`。

用 `logread -f -e securqbitd` 查看日志。日志刻意只留在内存里 — 每天往路由器闪存里写几十兆，正是闪存损坏的原因。

> **IPv6 是被拒绝而不是丢弃，这是有意的。** 隧道走的是 IPv4，把 LAN 的 IPv6 留在 WAN 上，会让每台设备一半的流量绕开 VPN。拒绝能让客户端立刻退回 IPv4，而不是每个请求都要等超时。`--allow-ipv6` 会关掉这个保护并接受泄漏。

## 开机自动连接

```bash
sqctl set autoconnect on
```

服务随机器启动，一旦有网络就建立隧道。配合 `sqctl set country`，路由器或服务器重启后即已受保护，无需任何人登录。

## 保持更新

```bash
sqctl update
```

这会下载当前版本、校验它、替换两个程序并重启服务。SecurQbit 也会每天自行检查一次，有新版本时告知你 — 显示在 `sqctl status` 下面：

```text
    Update         v1.1.0 available — run: sqctl update
```

它只会告知。它从不自行安装，因为完成更新意味着重启，而重启会断开正在使用的隧道。`sqctl set updates off` 可停止检查；`sqctl update` 仍然可用。

## 卸载

```bash
curl -fsSL https://cdn.securqbit.com/securqbitd/install.sh | sudo sh -s -- --uninstall
```

它会先断开隧道，把你的路由和 DNS 恢复原状，然后移除服务和两个程序。在路由器上，它添加的防火墙配置也会一并移除。你的配置文件和日志会原地保留。

## 下一步

- [CLI 参考](/cli-reference) — 每条命令及其作用。
- [连接到服务器](/connecting) — 选择你出现的位置。
- [故障排除](/troubleshooting) — 出问题的时候。
