开启 3 天免费试用
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。


WireGuard 服务端搭建不能只看近期握手。本文在 Ubuntu 24.04 LTS 上配置 IPv4 互联网网关,使用另一台 Ubuntu 24.04 LTS 客户端,分别核对转发、DNS、拒绝、撤销、重启及恢复。只使用自有或获授权的专用主机;命令是读者操作步骤,不是作者部署记录。
关键要点
- peer 连接不等于互联网转发和 DNS 正常。
- 保留独立管理连接和可恢复的防火墙基线。
- 示例只覆盖 IPv4,有效的另一条 IPv6 路径需要单独处理。
- 撤销要同时删除运行态 peer 和持久配置。
- 限定任务与恢复检查通过后,才开启自动启动。
先用自建规划指南确定谁管理主机、凭据、更新与停用。如果只代理一个明确设置的应用,VLESS/REALITY 部署教程提供另一条路线,不是本文前提。全隧道与应用代理比较解释流量覆盖选择。
只需日常公网连接、不想管理 peer 时,AethoVPN 提供受支持终端路线。Windows 上使用官方 .exe,通过邮箱验证码继续,在 App 选择实际可用位置后连接。用 出口 IP 核对工具核对这次请求的可见出口,再重复原浏览或上传任务。
租主机之前先比较 VPS 和 VPN 责任。Standard 支持一台移动设备;Pro 支持两台桌面加两台移动设备;Premium 支持八台设备,不区分类型。
该方法不创建你的主机,也不承诺兼容本文 WireGuard 配置。新用户仅有一次三天 Pro 试用,删除账户重新注册不会重置。试用托管日常出口。
选择具有可达公网 IPv4 端点的专用 Ubuntu 24.04 LTS 服务端及另一台授权 Ubuntu 客户端。主机位于 NAT 后时,还需要获授权的上游 UDP 映射,只有私有地址不够。预留 UDP 51820、隧道网段 10.77.0.0/24、服务端 10.77.0.1 与客户端 10.77.0.2;与已有网络重叠时更换。WireGuard peer 机制说明两端关系。[1]
修改前,记录 ip address、ip route、ip rule、ip -6 address、ip -6 route、resolvectl status、sysctl net.ipv4.ip_forward 和相关防火墙配置,私下保存。通过独立供应商控制台或恢复路径建立一条新的管理连接;已经打开的终端不够。原配置备份不进入公开仓库。
此防火墙示例要求 iptables,且没有竞争的 UFW、firewalld 或独立 nftables 管理器。查看 sudo iptables-save 并明确规则所有者。其他管理器负责规则时,停止套用此示例,改由该管理器实现同一窄策略。绝不清空规则表。
用 ip -4 route get 1.1.1.1 记录真实出站接口;此命令显示路由选择,不发送探测。下文 EGRESS_IF 是占位符,不是实际接口名。
使用没有可用 IPv6 默认路径的受控客户端。基线检查发现有效路径时,停止本 IPv4 练习,独立设计 IPv6 路由与失败策略。不要为了结果好看而关闭共享主机 IPv6。本文也没有断网保护:隧道停止后恢复普通路由。
图中分开隧道、服务端转发/NAT 和公网目的地。隧道失败时管理路径仍须可用;这是解释图,不是实测流量证据。
两台主机均从 Ubuntu 配置的可信软件源安装。项目的 Ubuntu 安装路线使用 apt。[2]
sudo apt update
sudo apt install wireguard iptables
sudo install -d -m 700 /etc/wireguard
sudo -i
cd /etc/wireguard
umask 077
wg genkey > wg-exit.private
wg pubkey < wg-exit.private > wg-exit.public
exit
每端分别生成。私钥只留在自己的主机,交换对应公钥。[1]
文件由 root 所有且权限私密;不发布可用配置、二维码、截图或密钥。下文名称是替换标记,不是示例秘密。把公钥添加到服务端之前,记录所属设备。
用私密编辑器创建服务端 /etc/wireguard/wg-exit.conf,替换密钥和 EGRESS_IF。钩子规则带识别注释,只服务这一个客户端;wg-quick 在接口生命周期中执行它们。[3]
[Interface]
Address = 10.77.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -I INPUT 1 -p udp --dport 51820 -m comment --comment wg-exit-lab -j ACCEPT
PostUp = iptables -I FORWARD 1 -i %i -o EGRESS_IF -s 10.77.0.2/32 -m comment --comment wg-exit-lab -j ACCEPT
PostUp = iptables -I FORWARD 1 -i EGRESS_IF -o %i -d 10.77.0.2/32 -m conntrack --ctstate ESTABLISHED,RELATED -m comment --comment wg-exit-lab -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -s 10.77.0.2/32 -o EGRESS_IF -m comment --comment wg-exit-lab -j MASQUERADE
PreDown = iptables -D INPUT -p udp --dport 51820 -m comment --comment wg-exit-lab -j ACCEPT
PreDown = iptables -D FORWARD -i %i -o EGRESS_IF -s 10.77.0.2/32 -m comment --comment wg-exit-lab -j ACCEPT
PreDown = iptables -D FORWARD -i EGRESS_IF -o %i -d 10.77.0.2/32 -m conntrack --ctstate ESTABLISHED,RELATED -m comment --comment wg-exit-lab -j ACCEPT
PreDown = iptables -t nat -D POSTROUTING -s 10.77.0.2/32 -o EGRESS_IF -m comment --comment wg-exit-lab -j MASQUERADE
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.77.0.2/32
供应商安全组放行同一 UDP 端口,并保留管理访问。客户端公网来源稳定时,应对 INPUT 规则和安全组增加来源限制;使用 -s CLIENT_PUBLIC_IPV4/32 时,添加与删除规则都必须包含相同限制。云安全组与主机防火墙不是同一层。
转发规则允许该客户端访问经 EGRESS_IF 可达的目的地。主机有私有路由时,可能包含内部服务:使用没有敏感内部目的地的专用主机,或先建立明确审查的目的地策略。认证不等于目的地访问控制。
NAT 提供公网回程,不授权其他 peer。Ubuntu 默认出口说明要求转发和地址转换。[4]
sudo chmod 600 /etc/wireguard/wg-exit.conf
sudo chown root:root /etc/wireguard/wg-exit.conf
先记录转发原值,并确认路径未占用,再新建专用 /etc/sysctl.d/70-wg-exit.conf,内容为 net.ipv4.ip_forward=1。只应用这一文件:
sudo sysctl -p /etc/sysctl.d/70-wg-exit.conf
sudo wg-quick up wg-exit
sudo wg show wg-exit
启动钩子执行一半失败时,重试前先查接口和规则状态;用准确匹配的删除命令移除遗留规则。重复插入会产生重复项。不要添加 SaveConfig=true:手册说明它会在关闭时将运行态写回,覆盖配置文件。[3]
创建客户端私密 /etc/wireguard/wg-exit.conf:
[Interface]
Address = 10.77.0.2/32
PrivateKey = CLIENT_PRIVATE_KEY
PostUp = resolvectl dns %i AUTHORIZED_DNS_IPV4
PostUp = resolvectl domain %i ~.
PreDown = resolvectl revert %i
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IPV4:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
替换公网端点,并选择自己获授权使用且可达的 DNS。文件设置 root 所有、模式 600,再运行 sudo wg-quick up wg-exit。
AllowedIPs 同时涉及路由与 peer 地址,服务端 /32 与客户端默认路由职责不同。修改前阅读AllowedIPs 指南。默认路由下 wg-quick 使用策略路由,不能只看主路由表,应核对 ip rule 和相关各表。[3]
Ubuntu systemd-resolved 可用 resolvectl 设置接口 DNS 和 ~. 路由域。[5]这里特意不填 DNS=,因为 wg-quick 会把它交给 resolvconf。应用钩子之前,确认客户端解析器确实使用 systemd-resolved。
应用自己的加密 DNS 需独立检查。Keepalive 对部分 NAT 映射有用,不是速度优化;没有必要时省略。[1]
按表验收,私下记录实际观察、版本和时间。下列是预期现象,不是作者结果。
| 检查项 | 方法 | 预期现象 | 失败处理 |
|---|---|---|---|
| 接口与 peer | 两端运行 sudo wg show wg-exit 和 ip -4 address show dev wg-exit[6] | 公钥配对正确;服务端 10.77.0.1/24、客户端 10.77.0.2/32 | 改路由前先修归属 |
| 认证 | 发授权任务请求,查看握手时间 | 请求之后出现近期握手 | 查 UDP 可达性与密钥 |
| 数据与出口 | 重复授权公网任务,比较计数及出口记录 | 计数增加,看到预期服务端出口 | 查转发、NAT 和回程 |
| DNS | resolvectl status wg-exit;resolvectl query TASK_HOST | 预期解析器/接口成功回答 | 修解析范围,另查应用 DNS |
| IPv6 范围 | 重查基线地址与路由 | 客户端无另一条可用 IPv6 路径 | 停止 IPv4 验收 |
| 未登记 peer | 服务端未登记的一次性新客户端密钥 | 无认证握手及任务转发 | 停止暴露,查有效 peer 表 |
| 撤销 | 移除运行态与持久 peer,再尝试流量 | 设备无法认证或继续隧道数据 | 找重建 peer 的来源 |
撤销时,使用该设备真实公钥:
sudo wg set wg-exit peer CLIENT_PUBLIC_KEY remove
然后删除服务端文件中的 peer 块。不要用整个运行配置覆盖钩子。被撤销客户端重试,核对服务端有效 peer 表;后续授权测试使用替换凭据。只删除客户端配置不能撤销服务端权限。
恢复一个获授权的一次性 peer 并完成检查后,在各专用主机启用开机启动:
sudo systemctl enable wg-quick@wg-exit.service
只重启获准重启的主机。核对 systemctl status wg-quick@wg-exit.service、wg show、转发值、精确防火墙规则、解析范围和新任务请求。容器重启不能替代此整机生命周期。不能重启时,该验收项保持未验证。
没有握手先查密钥、端点、监听或 UDP 过滤。有握手没任务响应,再查客户端路由、服务端转发、NAT 与回程策略。IP 请求正常而名称失败,查 DNS。
按已连接但无法上网清单,一次改一层并重复同一任务。另一 VPN 正常不能定位此故障。
保持软件受支持,每台可撤销设备分配独立 peer,相关变化后重复拒绝与恢复检查。供应商网络变化也要记录。无法解释某规则、失去独立管理或需要改变共享生产策略时,应停止。
客户端执行 sudo wg-quick down wg-exit,启用过开机服务则再禁用。服务端若由活跃服务管理,用 sudo systemctl disable --now wg-quick@wg-exit.service;手动启动的接口用 sudo wg-quick down wg-exit。先看真实状态;禁用非活跃服务不会移除手动接口。钩子失败后检查遗留规则,只删除此次试验的准确条目,也移除自己增加的云规则。
删除专用 sysctl 文件,只有没有其他服务依赖转发时才恢复记录的原值。协调配置漂移,不整体覆盖旧防火墙备份。回读路由、解析器、规则与新管理连接,重复原日常任务。安全停用不用的密钥及所属文件;主机、地址、磁盘和快照费用需要分别在供应商处处理。
本互联网出口任务需要获授权的可达端点。NAT 后主机需要合适的上游映射;内网访问是另一种拓扑。
加密 peer 关系可以正常,但转发、NAT、回程或 DNS 仍失败。应重复授权公网任务并逐层核对。
查看接口解析状态,查询任务主机名,再检查实际应用的解析行为。自行使用加密 DNS 的应用需要独立证据。
不覆盖。它是没有另一条有效 IPv6 路径的受控客户端上的 IPv4 示例;有效 IPv6 默认路由需独立设计。
从运行 WireGuard 和持久服务端文件移除其 peer,再重试流量。只删除客户端配置仍保留服务端授权。
核对服务、有效 peer、转发、精确规则、解析范围和新任务请求。服务运行本身不证明网关可用。
只需受支持设备的公网访问而不需要服务端控制时,可考虑这条路线。核对设备条款与实际任务,不假定协议兼容。
适用范围:按 Ubuntu 24.04 LTS 官方资料整理,未进行作者完整端到端实测。此 IPv4 网关示例没有 IPv6 或断网保护验收。使用自有或获授权主机,遵守适用法律和服务规则。
来源:
Sources checked 2026 年 10 月 9 日。
相关文章:
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。