OpenWrt-Wire-guard设置

img

Docker版运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run -d \
--name=wg-easy \
-e WG_HOST=123.123.123.123 \
-e PASSWORD=passwd123 \
-e WG_DEFAULT_ADDRESS=10.0.0.1 \
-e WG_DEFAULT_DNS=114.114.114.114 \
-e WG_ALLOWED_IPS=10.0.0.0/24 \
-e WG_PERSISTENT_KEEPALIVE=25 \
-v ~/opt/wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
weejewel/wg-easy

OpenWrt安装配置

服务端

创建公钥私钥

预共享密钥

通过SSH登陆到 OpenWRT 后台.

1
2
3
4
5
6
7
8
9
10
mkdir wg
# 创建目录存放公钥私钥
cd wg
# 进入文件夹
umask 077
# 配置创建密钥的权限
wg genpsk > sharekey
# 创建预共享密钥
cat sharekey
# 获取密钥复制保存

img

服务端公钥私钥

1
2
3
4
5
6
wg genkey | tee server_privatekey | wg pubkey > server_publickey
# 创建服务端公钥和私钥
cat server_privatekey
# 获取服务端私钥复制保存
cat server_publickey
# 获取服务端公钥复制保存

img

客户端公钥私钥 ( macOS )

1
2
3
4
5
6
wg genkey | tee macos_privatekey | wg pubkey > macos_publickey
# 创建 macOS 客户端公钥和私钥
cat macos_privatekey
# 获取 macOS 客户端私钥复制保存
cat macos_publickey
# 获取 macOS 客户端公钥复制保存

img

配置 OpenWRT

服务端相关配置

登陆 OpenWRT - 网络 - 接口 - 添加新接口

img

填写接口名 - 选择接口协议 - 提交

img

基本设置 - 填写上文获取的服务端私钥
自行填写一个端口号 - 并且在路由器映射该端口的 UDP 协议
IP 地址填写一个 VPN 专用的网段 IP - 本文以192.168.100.X为 WireGuard 的专用网段为例,则本 WG 服务器 IP 为192.168.100.1/24

img

防火墙设置 - 选择 vpn

img

客户端 Peers 区域为每个客户端添加配置

选择预共享密钥 - 添加

img

公钥 - 填写上文获取的macOS 客户端公钥
预共享密钥 - 填写上文获取的预共享密钥
允许的 IP - 即表示为此 macOS 客户端分配固定 IP , 本文示例为 192.168.100.2/32 , 注意各客户端 IP 不能冲突.
持续 Keep-Alive - 填写 25

img

防火墙

网络 - 防火墙 - 自定义防火墙 - 添加以下防火墙 - 重启防火墙

1
2
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE
# 注意此条防火墙网段 192.168.100.0/24 需和上文服务端 IP 网段保持一致.

再次声明博主的 OpenWRT 是作为旁路由接入,此条防火墙不确定适用于主路由部署 WireGuard 使用.主路由用户可以尝试无需设置防火墙(经朋友测试)

img

重启 WireGuard

返回网络 - 接口 - 关闭 - 连接
或者直接重启整个 OpenWRT 最为稳妥.

img

客户端

创建客户端配置文件

创建后缀为.conf的配置文件,例如macos_wireguard.conf,复制以下信息,并且修改对应的公私钥信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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,从文件导入隧道.

img

选择允许添加 VPN 配置

img

连接成功

img

在 OpenWRT 状态页面能够看到连接成功的状态信息

img

iOS

重复上述操作创建 iPhone 的配置文件,并上传至 iCloud 云盘.
在 iOS 设备 App Store 下载 WireGuard

img

添加隧道 - 导入配置或压缩包

img

从 iCloud 云盘中选择 iphone_wireguard.conf 配置文件

img

选择允许添加 VPN 配置

img

连接成功

img


结语

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