本文目录导读:

要为 QuickQ(假设是一个基于 Linux 的系统,使用 systemd 管理服务)编写 WireGuard 的 systemd 服务单元文件,可以参考以下步骤和模板,WireGuard 本身在较新内核中已支持,但通常需要一个 wg-quick 脚本来管理配置和接口。
以下是标准的 WireGuard systemd 服务写法(使用 wg-quick@.service 模板):
确保安装了 wg-quick
大多数发行版的 WireGuard 包都包含 wg-quick,如果未安装,请安装:
# Debian/Ubuntu sudo apt install wireguard # CentOS/RHEL/Rocky sudo dnf install wireguard-tools # Arch Linux sudo pacman -S wireguard-tools
准备 WireGuard 配置文件
假设你的配置文件在 /etc/wireguard/wg0.conf(文件名 wg0 将作为服务实例名)。
使用 systemd 自带模板(推荐)
wg-quick 安装后会自动提供一个 systemd 模板服务:wg-quick@.service。
启动/启用方式:
# 启动(对应配置文件 /etc/wireguard/wg0.conf) sudo systemctl start wg-quick@wg0 # 设置开机自启 sudo systemctl enable wg-quick@wg0 # 查看状态 sudo systemctl status wg-quick@wg0
原理:wg-quick@.service 模板会接收一个接口名(wg0),然后执行 wg-quick up wg0 和 wg-quick down wg0,无需手动编写服务文件。
如果必须手动编写的备选方案
如果由于某些原因(QuickQ 定制系统没有自带 wg-quick),你需要手动编写一个 systemd 服务单元文件,可以创建 /etc/systemd/system/wireguard-quickq.service:
[Unit] Description=WireGuard Tunnel (QuickQ) After=network-online.target Wants=network-online.target [Service] Type=oneshot RemainAfterExit=yes # 启动隧道 ExecStart=/usr/bin/wg-quick up /etc/wireguard/quickq.conf # 停止隧道 ExecStop=/usr/bin/wg-quick down /etc/wireguard/quickq.conf # 重启行为(可选) ExecReload=/usr/bin/wg-quick down /etc/wireguard/quickq.conf ExecReload=/usr/bin/wg-quick up /etc/wireguard/quickq.conf # 安全加固(可选) PrivateTmp=true ProtectSystem=full NoNewPrivileges=true [Install] WantedBy=multi-user.target
使用此服务:
sudo systemctl daemon-reload sudo systemctl enable wireguard-quickq.service sudo systemctl start wireguard-quickq.service
常见检查和调试
- 配置文件权限:WireGuard 私钥敏感,建议
chmod 600 /etc/wireguard/*.conf。 - 查看日志:
sudo journalctl -u wg-quick@wg0
- 手动测试:
sudo wg-quick up /etc/wireguard/wg0.conf看是否有错误。
最简单可靠的方法是使用系统自带的 wg-quick@.service 模板(只需 systemctl enable wg-quick@wg0),无需自己写 .service 文件,QuickQ 环境确实需要自定义,则参考上面第4步的手动编写方案。