自己搭建节点教程:WireGuard 部署后连不上怎么验收与排查
简答:自己搭建节点时,WireGuard 连不上应先确认公网 IPv4、UDP 端口、双方公钥和 AllowedIPs,再分层检查握手、隧道地址、转发、DNS、IPv6 与 MTU。按本文验收后,可明确问题位于服务器、网络还是客户端。
定义:本文所说的“自己搭建节点”,特指在自有或租用的 VPS 上部署 WireGuard,用于个人设备互联、远程办公或访问自有网络资源,不覆盖面向他人共享的节点服务和其他协议方案。
先试这一步:用 5 项检查判断卡在哪里
如果客户端显示已开启,但网页或远程设备仍无法访问,不要先换脚本或反复更换端口号。先在服务器执行 sudo wg show,再依次检查公网地址、UDP 监听、隧道地址、路由转发和 DNS。WireGuard 官方资料说明,AllowedIPs 同时参与发送路由和接收来源限制,双方密钥、Endpoint 与地址范围必须相互匹配。
| 检查项 | 命令或位置 | 通过标准 |
|---|---|---|
| 握手 | sudo wg show | 出现最近握手时间,收发字节会增长 |
| UDP 监听 | sudo ss -lunp | 能看到配置中的 UDP 端口号处于监听状态 |
| 隧道地址 | ip addr show dev wg0 | 服务器和客户端地址位于同一示例私有网段且不冲突 |
| 路由与转发 | ip route、sysctl net.ipv4.ip_forward | 目标网段有正确路由;需要转发时结果为 1 |
| DNS 与 IPv6 | resolvectl status、分别测试 IPv4/IPv6 | 解析器和地址族符合你的设计,没有把未配置的 IPv6 当成已保护 |
普通 TCP 测试不能证明 WireGuard 的 UDP 握手成功。Test-NetConnection 只能检查 TCP 服务;UDP 是否完成握手,应以 WireGuard 状态、系统日志和必要时的抓包结果判断。
本文范围与准备条件:只处理 WireGuard 首次连通
本站是第三方使用指南站,不是 Candytally(糖果云)官方。本文只覆盖一台已具备 SSH 登录条件的 VPS,以及一台需要接入的电脑或手机;不覆盖云厂商选购、其他协议、面向他人共享服务或绕过网络管理措施的做法。
你需要准备:一台允许运行 VPN 的 VPS、可用的公网入口、客户端设备、服务器管理员权限,以及一个不与家庭 Wi-Fi、公司网络或其他隧道重复的私有网段。下面用 10.66.66.0/24 作示例,它只是示例私有网段,不能直接照搬到已经使用相同网段的网络。
| 情况 | 建议 |
|---|---|
| VPS 有独立公网 IPv4 | 可按本文进行基础的点到站点配置 |
| 只有 NAT 或端口映射 | 需要先确认映射的 UDP 端口号和云平台规则,不能照搬独立公网 VPS 配置 |
| 只有 IPv6 | 服务器、客户端和中间网络都必须支持 IPv6,本文的 IPv4 验收不能替代 IPv6 验收 |
| 只想少维护服务器 | 应评估组织提供的 VPN 或合规托管服务,而不是默认选择自建 |
WireGuard 官方安装页列出了 Windows、macOS、Android、iOS、Ubuntu 和 Debian 等平台的安装入口,安装前应从WireGuard 官方安装页面核对当前平台与版本信息。
服务端基础配置:密钥、监听端口号与 peer
以下命令在 Ubuntu 或 Debian 服务器的 SSH 终端执行。先更新软件包并安装 WireGuard 工具:sudo apt update && sudo apt install wireguard。不要把来源不明的脚本直接通过 curl | bash 交给 shell;如果必须使用脚本,应先查看完整内容、确认来源和版本、记录修改项,并在执行前保留快照或可回滚配置。
生成服务器密钥时,使用受保护的文件权限:
sudo install -m 700 -d /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
服务器配置文件可保存为 /etc/wireguard/wg0.conf:
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = 服务器私钥
[Peer]
PublicKey = 客户端公钥
AllowedIPs = 10.66.66.2/32
上面的地址、端口号和密钥均为示例。服务器端的 AllowedIPs 应填写该客户端在隧道内使用的地址,不能把多个设备随意共用同一个地址。Ubuntu 的WireGuard 概念与配置说明解释了私钥、公钥、Endpoint、AllowedIPs 和 wg-quick 的关系。
检查配置文件权限后启动接口:sudo chmod 600 /etc/wireguard/wg0.conf && sudo wg-quick up wg0。确认正常后设置开机启动:sudo systemctl enable wg-quick@wg0。需要撤销本次变更时,可执行 sudo wg-quick down wg0,再恢复备份配置。
客户端配置:先用窄范围 AllowedIPs 完成首次验收
客户端配置至少需要自己的地址和私钥,以及服务器公钥、Endpoint 和 UDP 端口号。首次验收建议只访问隧道网段,不要一开始就配置全流量:
[Interface]
Address = 10.66.66.2/32
PrivateKey = 客户端私钥
DNS = 服务器可用的 DNS 地址
[Peer]
PublicKey = 服务器公钥
Endpoint = 服务器公网 IP:端口号
AllowedIPs = 10.66.66.0/24
PersistentKeepalive = 25
完成导入后,先连接服务器的隧道地址 10.66.66.1。如果隧道地址可达,再根据目标逐步加入远程内网网段;只有在转发、NAT、DNS 和 IPv6 都已验证时,才考虑全流量路由。PersistentKeepalive 不是“加速开关”,它主要用于需要周期性发包以维持 NAT 映射的场景,具体是否需要取决于网络拓扑。
手机端可以使用配置文件或二维码导入。Ubuntu 官方的WireGuard 常用任务文档说明了移动端二维码配置方式;二维码包含私钥,应当按密码材料保护,不能上传到公开位置。
分层验收:握手、路由、DNS、IPv6 与 MTU
- 先看握手:服务器执行
sudo wg show。如果没有最近握手时间,优先检查服务器公网 IP、客户端 Endpoint、双方公钥、UDP 端口号、云平台安全组和服务器防火墙。 - 再看监听:执行
sudo ss -lunp,确认 WireGuard 监听的是配置中的 UDP 端口号。只看到 TCP 端口开放,不能证明 WireGuard 可用。 - 测试隧道地址:客户端先访问或 ping
10.66.66.1。若握手存在但隧道地址失败,检查两端Address、AllowedIPs、本地网段冲突和客户端路由。 - 检查转发:服务器执行
sysctl net.ipv4.ip_forward。如果要让客户端访问服务器之外的网络,通常还需要正确路由和 NAT;Ubuntu 的默认网关配置文档展示了 IPv4 转发与源地址伪装的关系。 - 检查 DNS:服务器或客户端执行
resolvectl status,确认当前 DNS 服务器是否符合设计。先用 IP 地址测试,再用域名测试,避免把 DNS 故障误判成隧道故障。 - 单独检查 IPv6:如果只配置了 IPv4,不要据此宣称 IPv6 也经过隧道。双栈环境应分别查看 IPv6 地址、路由和出口;如果不需要 IPv6,可在明确理解影响后单独处理,而不是默认忽略。
- 最后检查 MTU:如果能握手、能访问小页面,但大页面或文件传输卡顿,可在 Windows 使用
ping -f -l 数值 目标地址,在 Linux 使用ping -M do -s 数值 目标地址逐步降低数据长度比较。不要仅凭一次测试直接固定 MTU,需在同一网络和目标下复测。
WireGuard 的握手、路由和地址状态应结合命令输出判断,而不是只看客户端开关。Ubuntu 的WireGuard 故障排查文档建议核对密钥、AllowedIPs、ip route、接口地址和 IPv4 转发;如果仍无法定位,可查看 sudo journalctl -u wg-quick@wg0,必要时再启用短时内核调试日志,排查完成后关闭。
常见故障对照:不要把握手问题和网页问题混在一起
| 现象 | 优先核对 | 判断方向 |
|---|---|---|
| 没有最近握手 | Endpoint、公钥、UDP 端口号、安全组、防火墙 | 先处理入口和密钥,不要先改 DNS |
| 有握手但隧道地址不通 | Address、AllowedIPs、路由、网段冲突 | 问题多在隧道内地址或路由层 |
| 隧道地址通,远程内网不通 | IPv4 转发、NAT、回程路由、目标网段 | 问题多在服务器转发或远程网络回程 |
| IP 可访问但域名打不开 | DNS 地址、解析状态、客户端分流 | 先确认 DNS,再判断应用层问题 |
| 小页面正常,大页面卡顿 | MTU、丢包、IPv6 路由、服务器负载 | 使用同一目标和网络做对照测试 |
| 切换 Wi-Fi 或移动网络后断开 | Endpoint 更新、NAT 映射、PersistentKeepalive | 观察切网后的握手更新时间和收发字节 |
云平台、运营商网络、NAT 类型、双栈配置和服务端拓扑都会影响结果,因此本文的顺序是缩小范围的方法,不是对所有环境必然有效的保证。
安全与回滚:配置能连通后还要做什么
- 保护私钥:服务器私钥、客户端私钥、二维码和完整配置文件都不应发布到公开仓库、工单或聊天群。
- 最小暴露:云平台安全组和服务器防火墙只放行 SSH 管理端口,以及实际使用的 WireGuard UDP 端口号。
- 记录版本:安装前记录系统版本、WireGuard 工具版本、配置变更时间和端口号,避免出现问题后无法还原。
- 先备份再改动:修改
/etc/wireguard/wg0.conf前保存受保护的备份,每次只改一项,然后执行sudo wg-quick down wg0和sudo wg-quick up wg0验证。 - 逐个撤销设备:设备丢失或配置泄露时,删除对应 peer,并为新设备生成新密钥,不要继续共享旧私钥。
- 遵守条款:使用前阅读所在地法律法规、组织安全制度和云服务商可接受使用政策。自建 WireGuard 不会自动改变这些要求。
如果你只需要连接自有设备或远程办公,点到站点配置通常比一开始追求全流量更容易验收;如果你没有时间维护系统、密钥和日志,应重新评估自建是否适合自己。
最后核对:2026-10-26
完成后,至少应能确认:服务器 UDP 端口号正在监听;双方公钥没有混淆;客户端能够完成最近握手;隧道地址可以访问;需要转发时 IPv4 转发、NAT 和回程路由已配置;DNS 与 IPv6 结果符合预期;大流量场景没有明显 MTU 或丢包问题。
如果你只有“客户端开关已打开”这一条证据,不能说明节点已经部署完成。建议保存一份不含私钥的排障记录,写明测试网络、时间、握手状态、路由、DNS 和 MTU 结果,后续修改时一次只改变一个变量。
如需减少自建 VPS、密钥和网络维护工作,可在完成需求评估后了解边界云加速的办公网络方案,具体服务范围以官网为准。
常见问题
自己搭建节点一定要购买域名吗?
不一定。基础 WireGuard 点到站点配置可以直接使用服务器公网 IP 和 UDP 端口号。域名主要用于便于管理、替换地址或配合其他服务,是否需要取决于你的拓扑和维护方式。
没有独立公网 IPv4,还能完成 WireGuard 自建吗?
可能可以,但要先确认 NAT VPS 是否提供可用的 UDP 端口映射,或者确认服务器和客户端都具备稳定的 IPv6 连通条件。NAT 和仅 IPv6 环境不能直接照搬独立公网 IPv4 的配置。
有 latest handshake,但网页仍然打不开,说明密钥错了吗?
不一定。握手只说明 peer 之间完成了加密通信,网页访问还依赖 AllowedIPs、路由、转发、NAT、DNS、IPv4/IPv6 和 MTU。应按隧道地址、远程网络、DNS 和大流量顺序分层测试。
可以直接执行网上找到的 curl 一键安装命令吗?
不建议盲目执行。先查看脚本全文、来源、版本、权限和修改项,确认是否安装未知软件、开放额外端口或修改 SSH;同时保留快照、原始配置和回滚步骤。
为什么 Test-NetConnection 成功,却不能证明 WireGuard 已连接?
因为 Test-NetConnection 主要检查 TCP 连接,而 WireGuard 使用 UDP。应使用服务器上的 <code>sudo wg show</code>、监听检查、系统日志或必要时的抓包判断是否完成 WireGuard 握手。
IPv6 没有配置,会影响 WireGuard 的 IPv4 连接吗?
不一定。IPv4 WireGuard 隧道可以单独工作,但双栈环境仍应单独核对 IPv6 路由和出口,否则可能出现 IPv4 经过隧道而 IPv6 走本地网络的情况。
相关阅读
参考资料
- Ubuntu WireGuard 概念与配置说明(ubuntu.com)
- Ubuntu WireGuard 常用任务文档(ubuntu.com)
- Ubuntu WireGuard 默认网关、转发与源地址伪装文档(ubuntu.com)
- Ubuntu WireGuard 故障排查文档(ubuntu.com)