当前位置:首页 > 群晖专栏 > 技术教程 > 正文内容

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

admin3年前 (2021-09-18)技术教程3068

前言

去年出过一期在 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 客户段分配的 IP
PrivateKey = 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+w7nuLwxJJUgNk3EljFVo=
# 预共享密钥
Endpoint = ddns.xxxxx.com:12345
PersistentKeepalive = 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 客户端,WireGuardClash等软件可以共存,此处可以设置为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 以及客户端的安装和配置.欢迎留言交流更多的使用方法.如果本站帮助到了您也欢迎通过以下赞赏按钮来支持我.

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面

扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=191

标签: 技术教程
分享给朋友:

相关文章

了解 frp 的一些通用功能

了解 frp 的一些通用功能

前言日常使用中除了常规的HTTP/HTTPS代理以外,SOCKS5代理也是有一定的使用需求,例如通过SOCKS5代理可以方便的 SSH 登陆国外网络环境不好的服务器. 而goproxy是一款轻量级,功能强大,高性能的代理软件,不仅可以同时部...

docker 部署 zfile 在线文件目录 - 支持本地,对象存储,OneDrive等各种环境.

docker 部署 zfile 在线文件目录 - 支持本地,对象存储,OneDrive等各种环境.

前言两个月前在 V 站看到某大佬开源了一个支持多种平台的在线文件目录程序,直到现在才有时间去尝试安装使用.程序支持的环境非常全面,有阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家...

分享优质工具 - gh-proxy 代理下载或 git clone Github 仓库

分享优质工具 - gh-proxy 代理下载或 git clone Github 仓库

简介在国内网络环境下使用 GitHub 相关服务体验很差,其域名github.com和仓库文件直链域名raw.githubusercontent.com被 DNS 污染,除了修改 hosts 解决以外,还可以使用gh-proxy来代理访问....

腾讯云对象存储 COSFS 工具安装配置与使用命令

腾讯云对象存储 COSFS 工具安装配置与使用命令

前言COSFS 工具是一款将腾讯云 COS 挂载到本地的工具,能像使用本地文件系统一样直接操作对象存储中的文件.本文将简单介绍在 Linux 系统中的安装,配置和常规挂载命令,更详细的用法请参考下文中的相关参考链接.安装获取源码git&nb...

实测国行 Apple Watch 开通 ECG 无需换绑 iCloud 无需取消 Watch 配对

实测国行 Apple Watch 开通 ECG 无需换绑 iCloud 无需取消 Watch 配对

前言早前网上很多关于国行 Apple Watch 开通 ECG 的方法多半是需要切换 iCloud 账户和换绑 Watch 等繁琐麻烦的操作.所以一直没有去研究.最近多了解了下关于 ECG 开通的信息,发现完全可以做到主力 iPhone +...

黑群晖 本地/远程唤醒功能 试验成功

黑群晖 本地/远程唤醒功能 试验成功

今天有空研究了一下具体的软件设定方法,可以通过手机APP -----(DS Finder)  局域网/远程,来唤醒黑群晖。几个设置简要说明:1、BIOS的PCIE设备开机,开启。2、打开DSM中的电源自动恢复中的&nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。