OpenWRT配置WireGuard服务端及客户端配置教程

前言

去年出过一期在 OpenWRT 上部署 OpenConnect VPN 的详细教程,主要用于在外办公方便 VPN 回家的使用场景。博主几乎每天使用持续了一年多,在 macOS 和 iOS 上体验都非常的稳定。

而今天的主角是已经火了几年的了 WireGuard,同样是 VPN 回家服务,在博主试用了一段时间后决定以后主用 WG 了。(其实是强迫症患者发现 CISCO AnyConnect 还没支持 ARM 架构)。

由于 WireGuard 在 Linux 上安装配置较为麻烦,而很多 OpenWRT 固件也都预装了 WG,并且有图形化界面方便设置。所以博主目前推荐还是在 OpenWRT 来直接使用。

WireGuard 与 OpenConnect VPN 的区别

抛开深沉的原理,简单通俗的说明下两者的区别和使用感受: OpenConnect VPN 主要是使用 TCP 协议,而 WireGuard 则是 UDP 协议。最明显使用感知就是前者需要类似拨号一样过程,在网络断开,重连等情况下并非无感。而 WireGuard 则类似于常驻后台,随用随取的感觉,体验不错。

在配置方面,OpenConnect VPN 需要使用证书来提高使用安全和连接体验,而 WireGuard 则是使用点对点的加密公钥私钥的形式来配对,并且每台客户端需要单独分配 IP 和公私钥。前期配置均稍许麻烦,但两者后续使用和管理都还比较合理和方便。

OpenConnect VPN 只需要客户端拥有证书文件即可

WireGuard 只需要客户拥有配置文件即可

服务端

需要注意的是博主的 OpenWRT 是以旁路由的形式存在于家庭网络中,所以后续防火墙设置可能和把 OpenWRT 当主路由的形式不同。

创建公钥私钥

预共享密钥通过 SSH 登陆到 OpenWRT 后台。mkdir wg# 创建目录存放公钥私钥cd wg# 进入文件夹umask 077# 配置创建密钥的权限wg genpsk > sharekey# 创建预共享密钥cat sharekey# 获取密钥复制保存服务端公钥私钥wg genkey | tee server_privatekey | wg pubkey > server_publickey# 创建服务端公钥和私钥cat server_privatekey# 获取服务端私钥复制保存cat server_publickey# 获取服务端公钥复制保存客户端公钥私钥 ( macOS )重复此操作创建每个客户端的公钥和私钥,请注意修改以下命令中的文件名,本文以 macOS 为例:wg genkey | tee macos_privatekey | wg pubkey > macos_publickey# 创建 macOS 客户端公钥和私钥cat macos_privatekey# 获取 macOS 客户端私钥复制保存cat macos_publickey# 获取 macOS 客户端公钥复制保存

配置 OpenWRT

服务端相关配置登陆 OpenWRT - 网络 - 接口 - 添加新接口填写接口名 - 选择接口协议 - 提交基本设置 - 填写上文获取的服务端私钥 自行填写一个端口号 - 并且在路由器映射该端口的 UDP 协议 IP 地址填写一个 VPN 专用的网段IP - 本文以 192.168.100.X 为 WireGuard 的专用网段为,则本 WG 服务器 IP 为 192.168.100.1/24防火墙设置 - 选择 vpn客户端 Peers 区域为每个客户端添加配置选择预共享密钥 - 添加

公钥 - 填写上文获取的 macOS 客户端公钥

预共享密钥 - 填写上文获取的预共享密钥

允许的 IP - 即表示为此 macOS 客户端分配固定 IP , 本文示例为 192.168.100.2/32,注意各客户端 IP 不能冲突。

持续 Keep-Alive - 填写 25

防火墙网络 - 防火墙 - 自定义防火墙 - 添加以下防火墙 - 重启防火墙iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE# 注意此条防火墙网段 192.168.100.0/24 需和上文服务端 IP 网段保持一致.再次声明博主的 OpenWRT 是作为旁路由接入,此条防火墙不确定适用于主路由部署 WireGuard 使用.主路由用户可以尝试无需设置防火墙(经朋友测试)。重启 WireGuard返回网络 - 接口 - 关闭 - 连接 或者直接重启整个 OpenWRT 最为稳妥.

客户端

创建客户端配置文件

创建后缀为 .conf 的配置文件,例如 macos_wireguard.conf,复制以下信息,并且修改对应的公私钥信息:[Interface]Address = 192.168.100.2/32# 对应 macOS 客户段分配的 IPPrivateKey = qJHywBpl27Ao/TRse85DQ/f+kwfNGRmPDYCq0OC6uUY=DNS = 192.168.1.3# 本地的 DNS 服务器或者公有 DNS 服务器,例如: 114.114.114.114[Peer]PublicKey = u7vjXN90uJt7pRjG8tR7hb25ssYOi7PRzJ5h9Diy02I=AllowedIPs = 192.168.1.0/24, 192.168.100.0/24# macOS 如上设置可与 ClashX Pro 共存仅代理局域网,互联网走本地网络.# iPhone iPad 设置为 0.0.0.0/0 全局则模式.PresharedKey = Pu5xBEBmz9ghhUMNp5o72s+w7nuLJJUgNk3EljFVo=# 预共享密钥Endpoint = ddns.xxxxx.com:12345PersistentKeepalive = 25此时的配置文件是用于客户端的,所以 PrivateKey 则为 macOS 客户端的私钥,而 Peer 中的 PublicKey 则为 OpenWRT 的公钥。请注意反向思考,Endpoint 填写家中的 IP 或者 DDNS 域名和端口。AllowedIPs值得注意的是 AllowedIPs 参数。针对不同场景和需求,此处可以配置不用的路由。当此处为 0.0.0.0/0 时表示任意网络请求都经过 VPN 俗称全局 VPN,由于 iPhone 同时只能有 1 个 VPN 软件在线,所以当 WireGuard 启动时,其他类似 Quanx,小火箭等软件则无法使用,此时 iPhone 可以全局 VPN 使用家中的网络来访问一些外网。如果是 macOS 或 Windows 客户端,WireGuard 和 Clash 等软件可以共存,此处可以设置为 AllowedIPs = 192.168.1.0/24, 192.168.100.0/24 表示访问内网网段才会走 VPN。而其他互联网,外网等访问还是走当前网络来利用 Clash 分流。

macOS

在 macOS App Store 下载 WireGuard,从文件导入隧道。选择允许添加 VPN 配置连接成功在 OpenWRT 状态页面能够看到连接成功的状态信息

iOS

重复上述操作创建 iPhone 的配置文件,并上传至 iCloud 云盘。在 iOS 设备 App Store 下载 WireGuard。添加隧道 - 导入配置或压缩包从 iCloud 云盘中选择 iphone_wireguard.conf 配置文件选择允许添加 VPN 配置连接成功

结语

本文详细的讲解了在 OpenWRT 上如何配置 WireGuard 以及客户端的安装和配置.欢迎留言交流更多的使用方法.如果本站帮助到了您也欢迎通过以下赞赏按钮来支持我。

链接

博客:https://www.ioiox.comRSS:https://www.ioiox.com/feed微信公众号:思有云 / ioioxcom