跳到主要内容

Debian 以稳定和朴素著称。它很少带来意外,可以在服务器上一跑多年,也出现在桌面电脑、家庭实验环境、旧笔记本和虚拟机里。正因为这份朴素,为别的系统写的 VPN 教程有时在它上面行不通:在 Ubuntu 上能用的命令,这里可能根本没有,可能需要你没装的软件包,或者依赖 Debian 默认并不启动的服务。

本文讲的是:想在 Debian 上用 VPN 时有哪些选择,以及怎样在其中挑选。共有三条路线:桌面应用、NetworkManager 网络菜单和纯命令行工具。随后处理 Debian 特有的问题,主要是 DNS 和基础的 kill switch。如果想了解这些工具背后的协议,请读 OpenVPN 详解;通用的步骤见 Linux 帮助指南。XPASS 用户使用免费的 VPNclient 应用,My Pass 页面会显示适用于你账号的内容。

Debian 有什么不同

在碰任何 VPN 软件之前,有三点差异很重要。

你运行的版本。 Debian 大约每两年发布一个稳定版,并在一段时间内继续支持上一个版本。稳定版里的软件包版本相对保守,对可靠性有利,但也意味着博客里提到的很新的功能,在你的机器上可能还没有。先确认版本:

cat /etc/os-release

管理员权限。 最小化安装的 Debian 可能没有 sudo,因为安装器允许你保留 root 账户并跳过创建 sudo 用户。如果没有 sudo,可以用 su - 切换成 root 执行本文的命令,或者以 root 身份安装 sudo,再把你的用户加入 sudo 组。不要为了图省事用 root 运行图形界面应用。

DNS 与网络。 Ubuntu 桌面版默认使用 systemd-resolved,而 Debian 桌面版通常使用 NetworkManager,由它自己写入 /etc/resolv.conf。Debian 服务器则可能用 ifupdown 或 systemd-networkd。任何“设置 DNS”的 VPN 工具都必须与现有的那一个配合,这就是 DNS 成为主要出问题环节的原因。

路线一:桌面应用

如果想要最简单的体验,就用带图形窗口的应用。对 XPASS 来说,就是适用于 Linux 的免费 VPNclient 应用,官方下载链接在 下载页面。大致流程如下。

  1. 只从官方链接下载 Linux 文件,不要用镜像站或论坛帖子里的链接。
  2. 按下载附带的安装说明和 My Pass 页面的设置提示操作。该应用以自包含安装程序的形式分发,使用前请确认它支持你的 Debian 版本。
  3. 使用 My Pass 里的 VPN 用户名和密码登录,这不是网站登录信息。
  4. 允许应用请求的系统权限提示,因为创建网络接口需要授权。
  5. 打开位置列表,选择一个,再点击连接按钮。菜单文字因版本而异,请按屏幕上实际所见来操作,不必死找某个固定词。

这条路线的优点:启动最快,没有配置文件,无需手动维护。局限:你依赖应用自带的功能,比如内置的 kill switch 或分流选项,也无法像命令行工具那样用脚本控制连接。除非客服建议更改,请保持应用的默认设置。

路线二:NetworkManager 加插件

如果你在 Debian 上运行 GNOME、KDE、Xfce 或其他桌面,NetworkManager 很可能已经在管理你的 Wi-Fi。它也可以通过插件管理 VPN 连接。

sudo apt install network-manager-openvpn-gnome

对于 WireGuard,较新版本的 NetworkManager 可以直接用 nmcli connection import type wireguard file 导入 .conf 文件。导入后,VPN 会出现在网络菜单中,可在面板上开关。

为什么这条路线适合笔记本:它能从容应对在不同 Wi-Fi 之间切换,把密码存入桌面密钥环,并通过管理你连接的同一个组件来设置 DNS,因此不会冲突。为什么它可能不适合你:它隐藏了日志细节,而且插件未必能理解复杂配置里的所有选项。如果导入失败,就转到路线三去读真实的错误信息。

路线三:命令行工具

对于服务器、无界面的迷你主机,以及喜欢精细控制的人来说,命令行最可预测。

sudo apt install wireguard-tools openvpn

之后可以手动运行任一工具,也可以交给 systemd 管理。WireGuard 使用 wg-quick up 名称 和单元 wg-quick@名称;OpenVPN 使用 openvpn --config file.ovpn,以及单元 openvpn-client@名称,配置需保存为 /etc/openvpn/client/名称.conf。两者都需要由服务商或你自己的服务器提供配置。关于该选哪个,请看 WireGuard 与 OpenVPN 对比;官方文档在 WireGuard 项目官网 和 OpenVPN 社区资源。

命令行工具让你看到完整日志,可用脚本控制,自启也很干净。代价是 DNS 要手动处理,对凭据和文件权限需要更加小心。

该选哪条路线

你的情况 最佳路线 原因
经常移动、用 Wi-Fi 的 Debian 笔记本 应用或 NetworkManager 适应漫游,开关方便
家里接网线的 Debian 台式机 都可以 凭喜好选,应用启动最快
无界面服务器或家庭实验机 命令行 没有桌面,可脚本化,用 systemd 自启
用于测试的虚拟机 命令行 可重复,易于做快照
需要针对某些应用的分流规则 带分流功能的应用,或自行配置路由 参见分应用隧道的文章
多人共用的电脑 每位用户各自的应用或 NetworkManager 不必把凭据放在共享文件里

如果拿不准,就先从应用或 NetworkManager 插件开始。以后随时可以转向命令行,实际使用的体验会告诉你真正需要什么。

Debian 上的 DNS:隧道最常出问题的地方

当 VPN 已连接却打不开任何网站时,DNS 是头号嫌疑。在 Debian 上,请按顺序检查。

  1. 看系统在用什么。 运行 cat /etc/resolv.conf。在 NetworkManager 桌面上,它列出 NetworkManager 当前认定的服务器。如果里面只有你的路由器,说明 VPN 的 DNS 还没有被应用。
  2. 让工具与环境匹配。 wg-quick 需要 resolvconf。如果没有且确实需要,就安装 resolvconf 或 openresolv 再试。OpenVPN 需要更新脚本才能应用下发的 DNS 服务器,除非由 NetworkManager 代劳。
  3. 用数字地址测试。 ping 一个已知的数字地址。如果能通而域名不行,就是 DNS;如果都不通,就是路由或隧道的问题。
  4. 避免两个管理者。 如果 NetworkManager 和手动脚本都写 /etc/resolv.conf,它们会互相覆盖。只保留一个主人。
  5. 检查泄漏。 域名能解析之后,确认查询确实走了隧道。文章 什么是 DNS 泄漏 介绍了方法,分流 DNS 则解释了为什么有些配置会有意把特定域名送往别处。

用 nftables 做基础 kill switch

Debian 默认使用 nftables 作为防火墙框架。kill switch 是一条规则:隧道断开时阻止普通流量,这样就不会有数据意外经由开放的互联网离开。请先读 什么是 VPN kill switch。下面是适用于命令行 OpenVPN 配置的最小示例,请按你的情况调整接口名和服务器地址。

sudo nft add table inet vpnguard
sudo nft add chain inet vpnguard out '{ type filter hook output priority 0 ; policy drop ; }'
sudo nft add rule inet vpnguard out oifname "lo" accept
sudo nft add rule inet vpnguard out oifname "tun0" accept
sudo nft add rule inet vpnguard out ip daddr 203.0.113.10 udp dport 1194 accept
sudo nft add rule inet vpnguard out udp dport 67 accept

这些规则的作用:丢弃所有出站数据包,除非它走回环接口、走隧道、发往 VPN 服务器本身(以便隧道能重连),或者是 DHCP 请求。要移除它:

sudo nft delete table inet vpnguard

有三点提醒。第一,请在你能直接操作的机器上测试,因为错误的规则可能让你无法再登录远程服务器。第二,这会同时阻断本地网络里的打印机和共享,如有需要请为家庭网段添加规则。第三,这样的规则在重启后会消失,除非保存进 nftables 配置;而应用路线可能已有自己的 kill switch,那就不需要这些规则了。

Debian 上的故障排查

现象 可能原因 可以尝试
sudo: command not found 最小化安装没有 sudo 使用 su -,或以 root 安装 sudo
wg-quick: resolvconf: command not found 没装 DNS 辅助工具 安装 resolvconf 或 openresolv
已连接,域名解析失败 DNS 未被应用 检查 /etc/resolv.conf,见 DNS 一节
隧道开机启动后失败 网络尚未就绪 延迟该单元,或改用 NetworkManager
菜单里没有插件 软件包未安装,或会话未重启 安装插件,注销后重新登录
握手或 TLS 错误 endpoint 错误、时钟不对或端口被拦 检查时间,换个网络试试
连接后变慢 距离、拥塞或 MTU 不合适 参见 为什么我的 VPN 很慢

如果你的症状不在表里,日志就是最好的帮手。对服务来说,sudo journalctl -u 单元名 -e 会显示最新几行。求助时请复制原始消息,切勿附上密码或私钥。

习惯与限制

  • 只从官方来源下载。 对于你信任并让它处理流量的系统,安装程序和配置文件应当受到与密码同等的谨慎对待。
  • 保持 Debian 更新。 安全更新对网络栈和 VPN 工具都很重要。
  • VPN 不是防火墙或杀毒软件。 它保护你与 VPN 服务器之间的路径,参见 VPN 无法保护你的哪些方面。
  • 不要同时运行多个 VPN。 它们会争抢路由和 DNS。
  • 记录你的配置。 用三行笔记记下选了哪条路线、配置放在哪里,半年后能省下好几个小时。

总结

在 Debian 上有三种运行 VPN 的方式:追求简单用桌面应用,笔记本用带插件的 NetworkManager,服务器和精细控制则用命令行工具。Debian 精简的默认设置意味着 sudo 可能不存在,DNS 可能不由 systemd-resolved 处理,而 nftables 是你做 kill switch 要用的防火墙。选一条符合机器用途的路线,有意识地处理 DNS,并在依赖它之前测试好一切。

当你准备尝试以应用为主的简单方案时,价格页面 列出了可搭配免费 VPNclient 应用的预付通行证。

常见问题

在 Debian 上配置 VPN 和 Ubuntu 有区别吗?

工具相同,但默认设置不同。最小化安装的 Debian 可能没有 sudo,可能不使用 systemd-resolved 处理 DNS,网络则取决于安装方式,由 ifupdown 或 NetworkManager 管理。照搬为 Ubuntu 写的命令之前,请先检查这些。

在 Debian 上用 VPN 一定要用命令行吗?

不用。桌面环境下可以使用 VPN 应用或 NetworkManager 的网络菜单。命令行主要用于服务器、无界面机器和排障。

Debian 笔记本该选哪条路线?

对于经常切换网络的笔记本,应用或 NetworkManager 插件通常最省事,因为它们都能适应漫游,也可以在界面上直接开关 VPN。需要精细控制或机器没有显示器时,再使用命令行工具。

VPN 掉线时怎样避免流量泄漏?

如果应用提供 kill switch 就用它,或者添加防火墙规则,只允许流量经隧道以及发往 VPN 服务器。请谨慎测试,最好能直接操作这台机器,因为错误的规则可能把你自己锁在外面。

为什么 VPN 已连接,Debian 上域名却解析不了?

多半是 VPN 下发的 DNS 服务器没有被应用。Debian 默认往往没有 systemd-resolved,请检查 /etc/resolv.conf,如果工具需要,就安装 resolvconf 或 openresolv,并用数字地址测试,以区分是 DNS 还是路由问题。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

VPN 安全

什么是 VPN 断网保护(Kill Switch)?

Kill Switch 能防止 VPN 断开时设备悄悄改用不受保护的连接。本文介绍它的原理,以及如何检查它是否有效。

阅读约 12 分钟

VPN 安全

WireGuard 与 OpenVPN 有什么区别

WireGuard 和 OpenVPN 都能建立加密隧道,但设计、复杂度和灵活性不同。本文用通俗的方式比较,并说明该怎样选择。

阅读约 9 分钟

VPN 安全

VPN 的 Split DNS(分流 DNS)是什么

Split DNS 让设备按域名选择不同的解析器:内部名称走 VPN,其他名称走平时的解析器。本文介绍原理、使用场景和检查方法。

阅读约 9 分钟

VPN 安全

OpenVPN 详解:TCP、UDP 与安全性

OpenVPN 如何建立隧道、TCP 与 UDP 为何手感不同、怎样的配置才算安全,以及连接失败时如何一步步排查。

阅读约 9 分钟

VPN 基础

什么是 VPN 协议?

VPN 协议规定了你的设备与 VPN 服务器如何连接并保护流量。本文用通俗的语言讲清楚它的含义和主要取舍。

阅读约 9 分钟