0. 前言
近期一直在折腾软路由系统及配置,并在家中部署了一套 Kubernetes 环境。由于有从外部访问该环境以补充开发资源的需求,虽然可以通过外网端口暴露的方式实现,但这种做法既不方便也不够安全。因此,最理想的方案是将办公电脑通过内网 IP 直接连入家庭局域网。
由于办公环境使用 H3C 的 iNode 客户端上网,实测发现连接 OpenVPN 会导致 iNode 掉线。查阅官方论坛得知两者存在冲突(详见 iNode 跟其他VPN冲突),若同时使用 SSL VPN 软件会相互排斥,只能二选一。为此,必须更换 VPN 协议,最终选择了基于 UDP 协议的 WireGuard。
本文不介绍 OpenWrt 的安装及旁路由配置,重点讲解如何在旁路由上安装配置 WireGuard 以实现内网穿透。我使用的是 eSir 的“高大全”版本(已预装 WireGuard),固件下载地址如下:
1. OpenVPN 与 WireGuard 的区别
- 协议与连接体验:OpenConnect VPN 主要基于 TCP 协议,连接过程类似拨号,在网络断开和重连时感知明显;而 WireGuard 基于 UDP 协议,类似于常驻后台的服务,随用随取,连接体验更佳。
- 密钥与配置管理:OpenConnect VPN 通常依赖证书来提升安全性和连接体验;WireGuard 则采用点对点的公私钥对进行配对,且需为每个客户端单独分配内网 IP 及专属公私钥。两者前期配置都略显繁琐,但后续的管理和使用均较为便捷。
- 客户端要求:OpenConnect VPN 客户端仅需证书文件(或配置对应的账号密码);WireGuard 客户端则仅需对应的配置文件。
2. 网络环境介绍

192.168.50.1:iNode 主路由。192.168.50.2:OpenWrt 旁路由(兼任 DNS 服务器,与主路由网关互指)。
3. 服务端设置
3.1 创建公私钥
通过 SSH 登录到 OpenWrt 后台:
# 创建目录存放公钥私钥
mkdir wg
# 进入文件夹
cd wg
# 配置创建密钥的权限
umask 077
# 创建预共享密钥
wg genpsk > sharekey
# 获取密钥并复制保存
cat sharekey
请妥善保存 sharekey,后续配置将会用到。
- 服务端公私钥
# 创建服务端公钥和私钥
wg genkey | tee server_privatekey | wg pubkey > server_publickey
# 获取服务端私钥并复制保存
cat server_privatekey
# 获取服务端公钥并复制保存
cat server_publickey
请妥善保存 server_privatekey 和 server_publickey。
- 客户端公私钥(以 macOS 为例)
有几个客户端就需要生成几套密钥,可按 macos_publickey 和 macos_privatekey 命名区分:
# 创建 macOS 客户端公钥和私钥
wg genkey | tee macos_privatekey | wg pubkey > macos_publickey
# 获取 macOS 客户端私钥并复制保存
cat macos_privatekey
# 获取 macOS 客户端公钥并复制保存
cat macos_publickey
请妥善保存 macos_privatekey 和 macos_publickey。
最终生成的目录文件结构如下:

3.2 配置 OpenWrt
3.2.1 添加 WireGuard 网络新接口
登录 OpenWrt 后台,依次点击:网络 -> 接口 -> 添加新接口。

填写接口名称,选择接口协议为 WireGuard VPN,点击提交。

3.2.2 WireGuard 网络接口基本设置
- 基本设置:填入上文生成的服务端私钥
server_privatekey。 - 监听端口:自定义一个端口号(例如
16666),并在主路由上做好该端口的 UDP 协议映射。
我以 iNode 作为主路由为例,UDP 端口映射设置如下:

- IP 地址:为 VPN 专用的网段分配一个 IP。本文以
192.168.100.X作为 WireGuard 专用网段,则服务端 IP 设为192.168.100.1/24。

点击右下角的保存并应用。
核心参数汇总:
- 协议:
WireGuard VPN - 私钥:
server_privatekey - 监听端口:
16666(需在 iNode 中做 UDP 映射) - IP 地址:
192.168.100.1/24
3.2.3 WireGuard 网络接口防火墙设置
在防火墙设置页面中,将当前接口绑定至 wireguard 区域。

点击右下角的保存并应用。
3.2.4 客户端 Peers 设置
在 Peers 区域为每个客户端添加配置:
- 公钥:填入上文获取的 macOS
客户端公钥 macos_publickey。 - 预共享密钥:填入上文获取的
sharekey。 - 允许的 IP (Allowed IPs):为该 macOS 客户端分配的固定 IP,本文示例为
192.168.100.2/32(注意各客户端 IP 不能冲突,此 IP 将在客户端配置文件中使用)。 - 持续 Keep-Alive:填写
25。

点击右下角的保存并应用。
3.2.5 OpenWrt 防火墙设置
依次点击:网络 -> 防火墙 -> 自定义规则,添加以下防火墙规则,随后重启防火墙:
# 注意:此处的网段 192.168.100.0/24 需与上文服务端 IP 网段保持一致
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE

3.2.6 重启 WireGuard
返回 网络 -> 接口,将 WireGuard 接口先关闭再连接;为了稳妥起见,建议直接重启整个 OpenWrt 系统。
4. 客户端配置
创建后缀为 .conf 的客户端配置文件(例如 macos_wireguard.conf),并根据实际情况填写公私钥及网络参数:
- Address:客户端专用的内网 IP(如
192.168.100.2/32)。 - PrivateKey:对应的客户端私钥。
- DNS:OpenWrt 的 IP 地址(
192.168.50.2),前提是主路由已将 DNS 指向 OpenWrt。 - PublicKey:OpenWrt 服务端的公钥。
- Endpoint:家中的公网 IP(或 DDNS 域名)加端口。
- AllowedIPs:该参数决定了流量走向。若设置为
0.0.0.0/0,则表示所有网络请求均通过 VPN 转发(即全局 VPN)。由于 iOS 系统同时只能激活一个 VPN 软件,开启全局模式后,其他代理工具将无法使用;但在不需要开启其他代理工具的场景下,它能直接接管所有外网及内网流量。
注意:客户端配置文件中的
PrivateKey填对应客户端的私钥,而 Peer 下的PublicKey填 OpenWrt 服务端的公钥,请勿弄混。
4.1 macOS 配置
新建 macos_wireguard.conf 文件。在 macOS App Store 下载 WireGuard 客户端,从文件导入该隧道(注:下载 WireGuard 客户端需要美区 Apple ID)。
[Interface]
# 客户端分配的专用 IP
Address = 192.168.100.2/32
# 对应客户端私钥
PrivateKey = macos_privatekey
# 本地 DNS 服务器
DNS = 192.168.50.2
[Peer]
# OpenWrt 服务端公钥
PublicKey = server_publickey
# 仅代理局域网与 VPN 网段,互联网流量走本地网络(可与 ClashX Pro 共存)
AllowedIPs = 192.168.50.0/24, 192.168.100.0/24
# 预共享密钥
PresharedKey = sharekey
# WireGuard 服务端连接地址
Endpoint = 公网IP或域名:16666
PersistentKeepalive = 25
提示:
AllowedIPs = 192.168.50.0/24, 192.168.100.0/24中,192.168.50.0/24为家庭内网网段,192.168.100.0/24为 WireGuard 专有网段。
连接成功后的运行状态:

4.2 iPhone 配置
新建 ios_wireguard.conf 并上传至 iCloud 云盘。在 iOS 设备 App Store 下载 WireGuard 客户端(同样需要美区 Apple ID),从文件导入隧道。
[Interface]
# 客户端分配的专用 IP(需保持唯一)
Address = 192.168.100.3/32
# 对应客户端私钥
PrivateKey = ios_privatekey
# 本地 DNS 服务器
DNS = 192.168.50.2
[Peer]
# OpenWrt 服务端公钥
PublicKey = server_publickey
# 手机端采用全局代理模式
AllowedIPs = 0.0.0.0/0
# 预共享密钥
PresharedKey = sharekey
# WireGuard 服务端连接地址
Endpoint = 公网IP或域名:16666
PersistentKeepalive = 25


5. OpenWrt 的 WireGuard 运行状态
完成所有配置后,可在 OpenWrt 后台实时查看 WireGuard 的运行状态及连接情况:


评论 0
可以先写评论,登录后草稿会自动恢复。