Openwrt Wireguard 安装与配置

这篇文章是 openwrt 系列 15 篇文章中的第 1 篇

Wireguard安装

方法一

先ssh登录旁路由,再运行如下:

opkg update
opkg install kmod-wireguard luci-app-wireguard luci-proto-wireguard wireguard wireguard-tools

方法二

系统>>软件包>>过滤器:“luci-proto-wireguard”

image.png|800

Openwrt 配置 WireGuard 服务端

1、ssh登录路由,创建文件夹,生成相应密钥

创建 wg 文件夹
mkdir wg

设置文件权限
umask 077

生成服务端 Privatekey 和 Publickey
wg genkey | tee sprivatekey | wg pubkey > spublickey

生成客户端 Privatekey 和 Publickey
mkdir vivo
umask 077
wg genkey | tee cprivatekey | wg pubkey > cpublickey

生成预共享密钥
wg genpsk > sharekey

image.png|800
image.png|800
image.png|800

2、前往“网络”-“接口”界面,添加新接口,接口名称可按需自定义,协议则选择 WireGuard VPN 协议。

image.png|800

3、为 wg 接口配置“私钥”、“公钥”、“监听端口”、“IP 地址”。
如果你已经有准备好的“私钥”、“公钥”,则直接粘贴进去即可。
如果没有,则可以点击界面上的“生成新的密钥对”按钮,会自动随机生成密钥并填充。

监听端口:按需自定义一个公网能访问的端口号。

IP 地址:按需自定义一个 IP 地址,这个 IP 是路由器自身作为一个 WireGuard 节点所使用的 IP,不可与路由器上的其它网段相同,书写格式需要附带 IP 掩码位,例如:10.0.0.1/24

image.png|800

4、为这个 wg 接口配置防火墙区域,一般为了方便日常使用,选择 lan 即可,也可按需创建其它防火墙区域。

image.png|800

5、打开 wg 所需的防火墙端口,前往“网络”-“防火墙”-“通信规则”界面,按需添加所需规则。

image.png|800

6、如果路由器拥有的是动态公网 IP 地址,那么可以启用 DDNS 服务来方便后续使用,如何创建 DDNS 服务本文不做介绍。

Openwrt 配置对端节点参数

1、随后转到对端配置界面,按需添加对端参数,即客户端参数。

如果客户端尚无任何配置,则可以使用 OpenWrt 的对端配置界面生成所需参数,然后通过二维码等方式导出参数给客户端使用,以便快速配置客户端。

image.png|800

公钥:输入对端设备(客户端) wg 接口的公钥。(必需项)

私钥:如果要导出参数给对端设备使用,则输入对端 wg 接口的私钥,配置完对端设备后,则此项可以删除。

预共享密钥:可选项,嫌麻烦可以不填。所有组网节点应使用一个相同的预共享密钥。(点击界面按钮可自动随机生成一个)

允许的 IP:指定哪些网段需要通过 WireGuard 接口转发,如果为空,则默认为 0.0.0.0/0, ::/0
路由器上的此项参数要格外注意,一般不要为空,否则所有流量都将被转发给 WG 对端设备,这会导致路由器的网络故障。
注意:路由端此参数也不要输入路由器自身局域网的网段,例如输入 192.168.9.0/24 ,否则会导致逻辑错误,使得路由器自身局域网变得不可访问。(因为流量被转发至对端设备了)

路由允许的 IP:按需勾选,勾选后,对端节点即可访问此路由器上的其它网段。

剩下的三项参数:端点主机、端点端口、连接保活间隔,通常无需设置,因为对端(客户端)无法通过公网访问。
如果对端设备具备公网 IP 地址和固定的端口号(且打开了防火墙端口),则可以根据实际情况添加这三项参数。

image.png|800

2、各项必要参数添加完毕后,点击底部的“生成配置”按钮,即可打开一个二维码界面,如果是手机客户端,则直接打开手机的 WireGuard 应用程序,选择“扫描二维码”的方式来添加配置,其它不支持二维码的 WireGuard 应用程序,可通过复制粘贴的方式导入配置。

注意:对端参数不能多个设备共用,应给每个设备添加不同的对端参数。

image.png|800

3、给客户端导入了配置后,应返回对端配置界面,稍加修改部分参数,以便正式投入使用。

image.png|800

确认各项配置无误后,最后再点击“保存并应用”按钮以使修改生效。

如果要排除所有局域网地址段通过 WireGuard 接口,则将下列地址段添加至“允许的 IP”选项即可。

0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, ::/0, /32

Openwrt 客户端参数配置

客户端模板文件 test.conf

[Interface]
Address = 192.168.2.2/32
PrivateKey = cprivatekey文件内容
DNS = 192.168.1.2
# 本地的 DNS 服务器,比如你的路由器IP(主路由或旁路由)或者公有 DNS 服务器,例如: 8.8.8.8
[Peer]
PublicKey = spublickey文件内容
AllowedIPs = 192.168.100.0/24, 192.168.2.0/24 或者 0.0.0.0/0
# 设置为 0.0.0.0/0 全局则模式.
PresharedKey = XXX
# 预共享密钥
Endpoint = xx.xxxxx.com:5555 公网IP:端口号
# 你的DDNS域名和第一步开放的端口
PersistentKeepalive = 25

什么?!配置不生效

OpenWrt 只保存 WireGuard 配置是无效的!!!

修改 WireGuard 配置之后必须重启 WireGuard 程序来应用配置,在 OpenWrt 对应操作是重启 WireGuard 的接口。

下面这些动作会导致配置变化,都需要保存配置后重启 WireGuard 接口来应用配置

  • 增加 Peer 条目
  • 修改 Peer 信息
  • 删除 Peer 条目

这些动作不会引起配置变化:

  • 导出 Peer 条目

重启 WireGuard 接口后流量记录会清零。

参考

https://www.youtube.com/watch?v=F8z74oE71Gg

系列目录Openwrt 软件路由空间扩容 >>