目录
前言
去年出过一期在 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 最为稳妥.