VPN · 指南

WireGuard 配置文件使用教程

更新于 September 23, 2026 3 分钟阅读

本页内容
  1. .conf 文件里有什么:逐行解读
  2. Windows:导入隧道
  3. Android 和 iPhone:扫描二维码或导入文件
  4. macOS 和 Linux
  5. 装在路由器上,全家设备都覆盖
  6. 能连上但打不开网页,以及其他常见问题
  7. 配置文件从哪里来
  8. 常见问题

一条 WireGuard 连接就是一个文本文件。真的就这么简单——寥寥几行,写着你的密钥、服务器地址,以及哪些流量要走隧道的规则。拿到这个文件之后,连接 WireGuard VPN 服务器只需要把它交给你所用设备上的 WireGuard 应用。

本指南做两件事。首先,逐行解读一份真实的配置文件,让你明白每项设置的作用,出问题时知道该改哪一行。然后,介绍如何在 Windows、Android、iPhone、macOS、Linux 和路由器上导入这个文件并连接,最后讲解几乎所有 WireGuard 问题背后的那几种情况:握手始终无法完成,以及隧道连上了却打不开任何网页。

.conf 文件里有什么:逐行解读

每份 WireGuard 配置都由同样的两部分组成。[Interface] 描述隧道你这一端[Peer] 描述你要连接的那台机器。下面是一份完整的客户端配置,其中的机密信息已替换为占位符:

[Interface]
PrivateKey = YOUR_PRIVATE_KEY_KEEP_THIS_SECRET
Address    = 10.7.0.4/32
DNS        = 10.7.0.1

[Peer]
PublicKey           = THE_SERVER_PUBLIC_KEY_FROM_YOUR_PROVIDER
Endpoint            = 198.51.100.10:51820
AllowedIPs          = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
上面的两个密钥都是占位符,地址 198.51.100.10 是 RFC 5737 保留的文档专用地址——这些内容都连不上任何东西。请使用你自己文件里的值。

[Interface] 部分:你这一端

  • PrivateKey——这就是你在 VPN 上的身份。谁拿到它,谁就能冒充你。它由 44 个 base64 字符组成,以 = 结尾;如果你的长度不对,说明文件在复制过程中被截断了。
  • Address——你的设备在隧道内部使用的 IP,而不是你的公网 IP。/32 表示“只有这一个地址”,对客户端来说很正常。
  • DNS——隧道开启期间使用的解析服务器。没有这一行,设备会继续向原来的解析服务器查询,既会泄露你在查什么,也常常解析不了隧道另一端的任何地址。
  • MTU——可选项,却是最值得了解的一行。大多数文件里没有它,因为默认值就是对的;默认值不对的情况请看故障排查

[Peer] 部分:服务器那一端

  • PublicKey——服务器的公钥。你自己的公钥从不出现在你的文件里,它保存在服务器上。
  • Endpoint——数据包发往何处,格式为 host:port。WireGuard 只使用 UDP,51820 是惯用端口,并非必须。
  • AllowedIPs——哪些目的地走隧道。0.0.0.0/0, ::/0 表示全部流量,这正是隐私 VPN 的用途。范围更窄的列表——比如只包含公司内网网段——只让这部分流量走隧道,其余仍走你平常的连接。这种方式叫作分流隧道(split tunnel),是有意为之的选择,而不是坏掉的全局隧道。
  • PersistentKeepalive——每 25 秒发送一个小数据包,让你和服务器之间的 NAT 设备保持回程通道畅通。只要你在 NAT 后面就需要它,而用手机或家庭宽带时你总是在 NAT 后面。
一个能解释常见困惑的细节。AddressDNS 根本不是 WireGuard 的设置——它们是给 wg-quick 这个辅助工具的指令,由它来配置你的网络接口。WireGuard 本身从来看不到这两行。你可以亲眼验证:wg-quick strip wg0 会打印出内核实际收到的配置,这两行直接消失了。如果你改用 wg setconf 而不是 wg-quick 来配置隧道,这一点就很重要,因为那样没有任何东西为你分配地址或解析服务器,隧道启动后什么也连不上。

需要一份可导入的配置文件?HytHost VPN 服务为你提供现成的 WireGuard 配置,每月 €0.99 起。

查看 VPN 套餐

Windows:导入隧道

Windows 有官方的 WireGuard 应用,把文件导入进去就完成了全部工作。

  1. 安装 WireGuard,下载地址 wireguard.com/install
  2. 点击左下角的 新建隧道,会打开一个筛选为 配置文件 (*.zip, *.conf) 的文件选择框。选中你的 .conf,它就会出现在隧道列表中,名称与文件名相同。
  3. 也可以直接粘贴。新建隧道 旁边的箭头提供 新建空隧道… (E),会给你一个文本框——配置是通过消息发来而不是文件时很有用。文本框里会预填一个新的私钥,把那一行删掉,再把你自己的配置整段粘贴进去。
  4. 点击 连接 (A)状态变为 已连接,面板开始统计传输的字节数。这个字节计数器是最快的自检手段:如果只看到数据发出、没有数据返回,说明握手没有完成。
这个应用里有两个选项值得了解。隧道编辑界面中的 拦截未经隧道的流量 (kill-switch) (B),会在隧道断开时阻止任何流量绕过隧道发出——如果你用 VPN 的目的就是不让任何流量漏出去,这正是该开的设置。而 导出日志 则是应用用通俗语言告诉你隧道为何启动失败的地方。

Android 和 iPhone:扫描二维码或导入文件

在手机上有两种方式,而二维码之所以存在,正是因为在触摸屏上输入 44 个字符的密钥实在太折磨人。

Android

  1. 从 Play Store 安装 WireGuard,然后点按 + 按钮。
  2. 创建 WireGuard 隧道 界面提供 扫描二维码导入配置或压缩包,以及从零创建。根据你拿到的东西选择对应的方式。
  3. 如有提示,给隧道起个名字,然后打开开关。Android 会询问一次是否允许添加 VPN 配置——这个提示来自操作系统,而不是应用。

iPhone 和 iPad

  1. 从 App Store 安装 WireGuard,点按 添加隧道
  2. 新建 WireGuard 隧道 下,选择 扫描二维码导入配置或压缩包。扫描界面的标题是 扫描二维码;扫描成功后会要求你为隧道命名。
  3. 打开开关,并在 iOS 询问时允许添加 VPN 配置。

用已有的配置文件生成二维码

二维码不一定要由服务商提供——它不过是把你的配置文件画成了一张图,你自己用一条命令就能生成。WireGuard 应用本身就给出了这个建议:

# prints the code straight into the terminal, ready to scan off the screen
qrencode -t ansiutf8 < wg0.conf

# or write it to an image file
qrencode -o wg0.png < wg0.conf

在 Debian 或 Ubuntu 上,用 apt install qrencode 安装 qrencode;在 macOS 上,用 brew install qrencode

WireGuard 二维码里包含你的私钥。它不是链接,也不是标识符——而是完整的配置(包括密钥),以任何摄像头都能读取的形式呈现。永远不要把它发到 Discord 服务器、论坛帖子或工单里,截图时也要小心。如果你是从屏幕上扫码,扫完就关掉。对待这张图片,要像对待配置文件本身一样。

macOS 和 Linux

macOS

从 Mac App Store 安装 WireGuard。Mac 版应用并不是放大了的 iPhone 版:它常驻在菜单栏,主窗口从 管理隧道 打开。点击 从文件导入隧道(菜单栏里也有同样的功能,名为 从文件导入隧道…),选中你的 .conf,然后选中该隧道并点击 启动。Mac 上没有二维码扫描功能——二维码是给手机用的——所以请直接使用文件,或选择 添加空隧道… 后把配置粘贴进去。

如果你更习惯用终端,brew install wireguard-tools 会提供和 Linux 上相同的 wg-quick 命令,下文会介绍。

Linux

  1. 安装工具。在 Debian 或 Ubuntu 上:sudo apt install wireguard。大多数发行版都有同名软件包。
  2. 把文件放到 wg-quick 查找的位置。这是最容易出错的一步,因为文件名会变成接口名
    sudo install -m 600 -o root -g root wg0.conf /etc/wireguard/wg0.conf
    600 很重要——文件里有你的私钥,不应让这台机器上的其他用户读取。名称要简短简单,它必须是一个合法的网络接口名。
  3. 启动隧道:
    sudo wg-quick up wg0
    sudo wg show
    wg show 是最值得记住的一条命令。它会打印对端、端点、一行 latest handshake 以及流量计数。如果握手时间始终不出现,就是下一节所讲问题的典型特征。
  4. 开机自动启动:sudo systemctl enable --now wg-quick@wg0。要手动关闭隧道,运行 sudo wg-quick down wg0
有两个错误值得一眼认出。wg-quick: `/etc/wireguard/wg0.conf' does not exist 表示你输入的名称与该目录下的文件不匹配——你要的是 wg0,文件却叫别的名字。另外,如果隧道启动失败并报 resolvconf 相关错误,那是 DNS 这一行的问题:wg-quick 需要系统中有 resolvconfsystemd-resolved 才能应用它。安装其中一个,或者删掉 DNS 行、自己设置解析服务器。

装在路由器上,全家设备都覆盖

把隧道放到路由器上,就能覆盖它后面的所有设备,包括那些根本装不了 VPN 应用的设备——游戏机、电视、智能音箱。能不能做到,完全取决于你的固件。

固件WireGuard 支持在哪里设置
OpenWrt支持,需安装软件包安装 luci-proto-wireguard,然后添加一个协议为 WireGuard VPN 的接口,按你的文件填写各字段
Asus(较新的原厂固件)许多型号支持VPN 设置中有 WireGuard 客户端,可直接导入 .conf
Asuswrt-Merlin支持思路相同,路由控制更精细
Mikrotik RouterOS 7支持内置 WireGuard;RouterOS 6 完全没有
运营商提供的普通路由器通常不支持没有 WireGuard,也无法添加——见下文

如果你的路由器就是宽带运营商给的那台,现实的办法是在它后面再接一台你能控制的路由器,或者继续在每台设备上单独配置。两者都不算失败;按设备配置往往反而更好,因为不需要隧道的设备可以不开。

不要重复使用已经装在另一台设备上的配置。一个配置文件就是一个对端(peer),一个对端就是一台设备。把手机的配置加载到路由器上,两者会争抢同一个身份,两边的连接都会变得不稳定。请再订购一份配置,或在你自己的服务器上添加第二个对端。

在让全家流量都走隧道之前,有一件事要先想好:那样所有流量都会经过它。不喜欢境外地址的银行网站、会检查地区的流媒体,以及任何需要与你本地网络中设备通信的东西,都可能表现异常。这正是范围更窄的 AllowedIPs 发挥作用的地方——只让需要的流量走隧道,其余保持不变。

能连上但打不开网页,以及其他常见问题

WireGuard 出错时异常安静,这是有意的设计——未经认证的数据包得不到任何回应,扫描器也就无法判断是否有服务在监听。副作用是:密钥错误、端口错误和网络被封锁,在你这一端看起来一模一样——一片沉默。所以要从症状入手。

你看到的现象通常的原因检查哪里
始终没有握手;发送字节不断增加,接收一直为零没有任何回应,或回应无法返回Endpoint、服务器的 PublicKey、UDP 是否被封锁
握手正常,小的请求能用,网页加载到一半卡住MTU[Interface] 中添加 MTU
已连接,但什么都解析不了DNSDNS 行,以及 Linux 上的 resolvconf
已连接,也能解析,但流量没有走隧道AllowedIPs 范围太窄[Peer] 中的 AllowedIPs
能用,但闲置一两分钟后就断了NAT 映射过期PersistentKeepalive = 25

“Handshake did not complete”

你的设备发出了握手发起包,却没有收到任何回应。请按以下顺序检查:

  • 端点。主机正确、端口正确,并且端口是 UDP。这里打错一个字,就会恰好出现这个症状,而且只有这个症状。
  • UDP 是否能出去。访客 Wi-Fi、酒店网络、部分企业网络以及少数移动运营商,只允许常用端口上的 TCP。如果同一份配置在家里能用、在某个特定网络上不能用,那配置没问题,问题出在网络。
  • 密钥没有放反。[Peer] 中的 PublicKey服务器的公钥,而服务器那边必须另外持有与你的 PrivateKey 对应的公钥。为另一台设备复制来的配置会卡在这里。
  • 你的时钟。WireGuard 握手中包含时间戳,偏差太大会被拒绝。这种情况很少见,但在时间丢失的设备上确实会发生。

如果隧道在家里能用、用移动网络却从来连不上,原因可能在你的运营商那边而不在你——运营商级 NAT(CGNAT)之类的安排会改变哪些连接能到达你。端口转发指南讲解了如何在几分钟内通过自己的路由器判断这一点。

MTU 问题:值得彻底弄懂一次

这就是经典的“连上了但网络是坏的”情况,特征非常明显:ping 通、DNS 正常、小网页能打开,而任何稍大的内容都会一直卡住。

原因在于大小。为隧道封装流量会增加头部,原本刚好适合你普通连接的数据包,进入 WireGuard 后就放不下了。小包畅通无阻,大包被丢弃。正常情况下网络会通知发送方改用更小的包,但负责通知的那条消息经常被过滤掉,于是你等不到报错,只能干等。

解决办法是从一开始就让 WireGuard 使用更小的包。wg-quick 已经在尝试这么做:它取你普通路由的 MTU,减去隧道开销的 80 字节,所以在普通的 1500 字节连接上会得到 1420。如果这还是太大——某些移动网络,以及大多数本身已经跑在另一条隧道上的连接——就显式设置并逐步调低:

[Interface]
MTU = 1420      # what wg-quick would have picked
# still stalling? try 1380, then 1280

1280 是值得尝试的下限,因为这是 IPv6 要求所有链路都必须能承载的最小包大小,几乎在任何路径上都能通过。它会损失一点效率,但远比一条会卡死的隧道好。

隧道已开启,但没有流量经过

先检查 AllowedIPs。它不是防火墙,也不是权限列表——它决定的是哪些目的地会被路由进隧道。如果其中不包含 0.0.0.0/0,那么发往互联网其他地方的流量本来就不走隧道,你的连接正是按配置在运行。在 Linux 上,ip route show table all | grep wg0 可以显示实际路由了哪些内容。

如果路由没问题,只是域名解析不了,那就是 DNS 行的问题——要么缺失,要么写了但因为没装 resolvconf 而没有生效。

配置文件从哪里来

以上内容都假定你已经有了文件。获取文件的方式恰好只有两种。

自己搭建服务器

你生成一对密钥,在一台有公网地址的机器上安装 WireGuard,把你的设备添加为对端,再手动编写客户端配置。这并不难,也确实值得学习。代价是长期的:要为服务器付费并持续打补丁,而且每增加一台设备都要在两端手动修改——别忘了,一个对端就是一台设备。

从服务商获取

另一种方式是由服务商为你生成文件,你只需下载。使用 HytHost VPN(每月 €0.99 起),文件就在这里:

  1. 订购服务并登录客户中心,然后从列表中打开你的 VPN 服务。
  2. 找到 WireGuard Configuration 部分。这里有两个按钮——Copy to Clipboard 会把配置文本复制到剪贴板,Download Configuration 则直接给你现成的文件。
  3. 如果你选择了复制,把它粘贴到纯文本编辑器中,以 .conf 扩展名保存——wg0.conf 就是个好名字。注意编辑器没有在末尾自动加上 .txt
  4. 导入文件,按照上文对应你设备的部分操作。在手机上,先用 qrencode 把它转成二维码。

同一个页面还会显示隧道当前是否已连接到服务器,在你开始改设置之前,就能回答“是我的问题还是他们的问题”。页面上没有二维码按钮——请自己用文件生成,这也意味着二维码永远不会被传到不该去的地方。

需要一份可导入的配置文件?HytHost VPN 服务为你提供现成的 WireGuard 配置,每月 €0.99 起。

查看 VPN 套餐
常见问题

常见问题解答

安装官方 WireGuard 应用,导入服务器或服务商给你的配置文件,然后打开隧道。在 Windows 上就是点击 新建隧道,再点击 连接 (A);在 Android 和 iPhone 上,你可以把文件当作二维码扫描,而不必导入;在 Linux 上,把文件放到 /etc/wireguard/,然后用它的名称运行 wg-quick up。应用中出现握手时间并有接收数据,就说明连接已建立。

一个纯文本文件,通常以 .conf 结尾,包含两个部分。[Interface] 描述你的设备:它的私钥、在隧道内使用的地址,以及要使用的解析服务器。[Peer] 描述服务器:它的公钥、主机和 UDP 端口,以及哪些目的地应通过隧道路由。这个文件就是整条连接——你的设备上不会在别处保存任何其他东西。

不能稳定使用,原因值得了解。一份配置就是一个对端,由一对密钥标识,而服务器为每个对端只记录一个当前位置。用同一个文件同时连接手机和笔记本电脑,服务器会把回程流量发给最近一次握手的那台设备,于是两边的连接都会时断时续。每台设备都需要自己的配置和自己的一对密钥。

用你已有的配置文件自己生成——WireGuard 二维码就是把这个文件编码成了图片。运行 qrencode -t ansiutf8 < wg0.conf 可以直接在终端里显示并从屏幕上扫描,运行 qrencode -o wg0.png < wg0.conf 则保存为图片。由于二维码包含私钥,应当把它和文件本身同等对待:永远不要公开发布。

不可以。私钥是你的设备在 VPN 上的身份标识,任何拿到文件的人都能以你的身份连接。它永远不应出现在聊天、论坛、问题跟踪系统或工单中,二维码和文件截图也一样。如果配置已经泄露,正确做法是生成新的密钥对并替换对端,而不是指望没人看到。

这条消息表示握手发起包已发出,却没有任何回应,而 WireGuard 无法告诉你原因,因为它从未收到回复。检查 Endpoint 的主机和端口,确认你所在的网络允许出站 UDP,并确认 [Peer] 下的 PublicKey 是服务器的公钥,同时服务器持有与你私钥对应的公钥。如果同一个文件在其他网络上能用,说明文件没问题,是当前网络在过滤 UDP。

这种情况——握手正常、ping 正常、网页卡住——几乎总是 MTU 的问题。流量为隧道封装后,每个数据包都会变大,原本放得下的包会被丢弃,而通常负责报告这一情况的消息又常被过滤。在 [Interface] 中添加一行 MTU:1420 是 wg-quick 在普通连接上会算出的值,如果仍然太大,可以用 1380 或 1280。

只是使用配置文件的话不需要。客户端向服务器发起出站 UDP 连接,回应会沿着这条连接建立的映射返回——PersistentKeepalive 保持打开的正是这条映射。只有运行 WireGuard 服务器、需要接受入站连接的那一方才需要开放端口。

找一家为你生成配置的服务商。HytHost VPN 服务每月 €0.99 起,客户中心里有 WireGuard Configuration 部分,提供复制配置文本的按钮和下载现成文件的按钮。之后即可导入任意设备上的 WireGuard 应用,同一页面还会显示隧道当前是否已连接。

一份属于你的配置文件

HytHost VPN 为你提供 WireGuard 配置,下载一次即可导入任意设备——Windows、Android、iPhone、macOS、Linux 或你的路由器。每月 €0.99 起。

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

这篇指南对你有帮助吗?