Alpine安装 WireGuard 作为客户端
好的,在 Alpine Linux 上安装和配置 WireGuard 作为客户端是一个非常常见的需求,因为 Alpine 轻量、安全,非常适合做容器或者小型设备。
整个过程分为三步:安装、配置、启动和验证。
场景设定
我们继续沿用之前的例子,方便你理解配置文件的内容。
ROS 服务器 (中心节点):
- 公网 IP:
117.40.248.253 - 监听端口:
31213 - WG 接口 IP:
10.10.10.1/24 - 公钥:
PubKey_ROS(你需要从 ROS 上获取) - ROS 背后内网:
192.168.88.0/24
- 公网 IP:
Alpine 客户端 (你的新设备):
- 分配给它的 WG 接口 IP:
10.10.10.9/24(假设这是你为它规划的新 IP)
- 分配给它的 WG 接口 IP:
第一步:安装 WireGuard 工具
Alpine 的包管理器是 apk。你需要安装 wireguard-tools,它包含了设置接口、密钥和连接所需的所有命令行工具(如 wg, wg-quick)。
打开你的 Alpine 终端,执行以下命令:
# 更新包列表
apk update
# 安装 wireguard-tools
# 它会自动安装内核模块依赖 wireguard-vanilla 或 wireguard-lts 等
apk add wireguard-tools安装完成后,你可以通过运行 wg --version 来验证是否安装成功。
第二步:生成密钥并配置 ROS 服务器
和 Windows 客户端一样,Alpine 客户端也需要自己的一对密钥。
在 Alpine 上生成密钥对:
# 创建存放配置的目录,并设置好权限 mkdir -p /etc/wireguard chmod 700 /etc/wireguard # 进入目录 cd /etc/wireguard # 生成私钥和公钥 wg genkey | tee privatekey | wg pubkey > publickey执行后,
/etc/wireguard目录下会生成两个文件:privatekey: 这是你的私钥,绝对不能泄露。publickey: 这是你的公钥,需要把它添加到 ROS 服务器的 Peer 配置中。
查看并复制公钥:
cat /etc/wireguard/publickey复制终端输出的这串字符。
在 ROS 服务器上添加新的 Peer:
- 用 WinBox 连接到你的 ROS 路由器。
- 打开
WireGuard->Peers选项卡,点击+号。 - Interface: 选择你的主 WireGuard 接口 (如
wg-server)。 - Public Key: 粘贴刚才从 Alpine 复制的
publickey。 Allowed IPs:
- 首先,填入你为 Alpine 分配的 IP:
10.10.10.9/32。 - 为了让它能和其他客户端通信,我们直接使用之前的方案:
10.10.10.0/24。这样它不仅能被路由,也能访问其他客户端。
- 首先,填入你为 Alpine 分配的 IP:
- Endpoint / Endpoint Port: 留空,因为这是服务器在配置客户端,不需要主动连接它。
- 点击
OK保存。
第三步:在 Alpine 上创建配置文件
WireGuard 的标准做法是为每个连接创建一个配置文件,通常放在 /etc/wireguard/ 目录下,并以 .conf 结尾。我们创建一个 wg0.conf 文件。
# 使用 vi 或 nano 创建并编辑配置文件
vi /etc/wireguard/wg0.conf将以下内容粘贴到文件中,并根据你的实际情况修改:
[Interface]
# 这是 Alpine 客户端的配置
PrivateKey = <粘贴 /etc/wireguard/privatekey 文件的内容>
Address = 10.10.10.9/24
# 可选:如果你希望通过 VPN 解析 DNS,可以加上这行
# DNS = 192.168.88.1, 8.8.8.8
[Peer]
# 这是 ROS 服务器的配置
PublicKey = <粘贴 ROS 服务器的公钥>
Endpoint = 117.40.248.253:31213
# 关键:告诉 Alpine 哪些流量应该走 VPN 隧道
# 包含了 WG 子网 和 ROS 内网,这样就能访问所有资源
AllowedIPs = 10.10.10.0/24, 192.168.88.0/24
# 保持连接,对于 NAT 后面的客户端非常重要
PersistentKeepalive = 25如何获取配置项的值?
PrivateKey: 运行cat /etc/wireguard/privatekey并复制其内容。Address: 你为 Alpine 规划的 IP 地址,注意子网掩码/24不能少,这有助于建立本地路由。PublicKey(Peer的): 在 ROS 的 WinBox 中,打开WireGuard菜单,在WireGuard选项卡里就能看到接口的公钥。Endpoint: ROS 服务器的公网 IP 和监听端口。AllowedIPs: 这是路由规则。10.10.10.0/24允许它访问其他 WG 客户端,192.168.88.0/24允许它访问 ROS 后面的内网。
编辑完成后,保存并退出 (:wq)。
第四步:启动连接并设置为开机自启
我们使用 wg-quick 这个便捷工具来启动连接。它会自动创建网络接口、设置 IP、配置路由和 DNS。
启动 WireGuard 连接:
# wg-quick up <配置文件名,不带.conf> wg-quick up wg0如果没有报错,你的 WireGuard 隧道就已经启动了。
验证连接状态:
方法一: 使用
wg命令wg show你应该能看到类似这样的输出:
interface: wg0 public key: <Alpine的公钥> private key: (hidden) listening port: <随机端口> peer: <ROS服务器的公钥> endpoint: 117.40.248.253:31213 allowed ips: 10.10.10.0/24, 192.168.88.0/24 latest handshake: 15 seconds ago <-- 看到这个就表示成功了! transfer: 1.20 KiB received, 2.50 KiB sent persistent keepalive: every 25 seconds看到
latest handshake有时间戳是成功的关键标志。方法二: 检查网络接口和路由
# 检查是否有名为 wg0 的网络接口 ip addr show wg0 # 检查路由表,看是否添加了去往 AllowedIPs 的路由 ip route
进行 PING 测试:
# PING ROS 服务器的 WG 接口 ping -c 3 10.10.10.1 # PING ROS 的内网网关 ping -c 3 192.168.88.1 # PING 另一个 WG 客户端 (如果你的配置允许) ping -c 3 10.10.10.3设置开机自启 (非常重要):
Alpine Linux 使用 OpenRC 作为其服务管理器。# 将 wg-quick@wg0 服务添加到默认运行级别 rc-update add wg-quick@wg0 default # 立即启动服务 (等同于 wg-quick up wg0) rc-service wg-quick@wg0 start这样,每次 Alpine 重启后,
wg0隧道都会自动建立。停止连接:
如果需要断开连接,使用:wg-quick down wg0 # 或者使用服务管理器 rc-service wg-quick@wg0 stop
总结 Checklist for Alpine
- [ ] 安装:
apk add wireguard-tools - [ ] 密钥: 在
/etc/wireguard生成密钥对,并将公钥添加到 ROS Peer。 - [ ] ROS Peer 配置: 在 ROS 上为 Alpine 创建 Peer,
Allowed IPs设置为10.10.10.0/24。 [ ] Alpine 配置文件 (
wg0.conf):- [ ] 填对自己的
PrivateKey和Address(10.10.10.9/24)。 - [ ] 填对服务器的
PublicKey和Endpoint。 - [ ]
AllowedIPs设置为10.10.10.0/24, 192.168.88.0/24。 - [ ] 加上
PersistentKeepalive = 25。
- [ ] 填对自己的
- [ ] 启动与验证:
wg-quick up wg0,然后用wg show和ping命令检查。 - [ ] 开机自启:
rc-update add wg-quick@wg0 default。
按照这个流程操作,你的 Alpine 设备就能稳定地作为 WireGuard 客户端运行了。
- 上一篇: WireGuard VPN 配置
- 下一篇: Authentik与Nginx配置进行“融合”