title: >-
【2021-12-24】OpenWrt的WireGuard食用方法 - 软路由,x86系统,openwrt(x86),Router OS 等 -
恩山无线论坛
updated: 2022-04-07 05:06:37Z
created: 2022-04-07 05:06:37Z
source: >-
https:/www.right.com.cn/forum/forum.php?mod=viewthread&tid=7553422&highlight=wireguard


本帖最后由 xiaowen-king 于 2021-12-24 21:42 编辑 废话现在很多OpenWrt都集成了WireGuard,但是很多和我一样刚开始玩OpenWrt的小白估计都和我差不多,很多功能不会用,很多功能不懂可以用来干嘛
这里我做一个WireGuard的食用方法,如果不知道WireGuard是什么的小伙伴自行百度了
确定自己的OpenWrt有没有WireGuard登录路由器的Web管理界面,在【状态】下可以看到【WireGuard状态】就说明自己的路由器以及集成有WireGuard了

一、路由端的设置
首先用SSH工具连接上路由器,我使用的工具是FinalShell,打开FinalShell,点击左上角的【文件夹】图标,点击【新建连接】按钮的图标,选择【SSH连接】 jpg

在弹出来的窗口中填写连接信息,名称任意,主机填写路由器的地址,认证方法选择【密码】,用户名和密码填写进入路由器的Web管理界面的用户名和密码,也就是路由器的管理员账号和密码,填写完成后点击【确当】按钮添加

在主页面中就可以看到刚刚添加的路由器了,点击路由器名称进行连接,弹出是否保存密钥,点击【接受并保存】

jpg

连接到路由器之后,我们需要在root文件夹下新建一个文件夹用来存储WireGuard的信息,输入一下命令新建文件夹

1
2
cd /root
mkdir WireGuard

输入完以上命令后输入ls然后回车就可以看到刚刚新建的文件夹了
jpg

使用cd命令进入刚刚新建的文件夹
jpg

输入一下命令对文件夹设置权限

jpg

为路由器端创建公钥和私钥,sprivatekey为私钥,spublickey为公钥

1
wg genkey | tee sprivatekey | wg pubkey > spublickey

输入完上面的命令后输入ls就可以看到创建的公钥和私钥了,在使用cat命令查看公钥和私钥的内容并且记录下来

1
2
cat sprivatekey
cat spublickey

jpg

在浏览器打开路由器的Web管理界面,点击【网络】>【接口】>【添加新接口】

jpg

接口名称任意,我自己填写的是WG0,新接口的协议选【WireGuard virtual**】,然后点击【提交】

jpg

在【基本设置】中,把刚刚记录下来的私钥填写上去,监听端口自己指定一个,IP地址填写一个私有IP,不能与自己的局域网冲突就可以

jpg

【高级设置】保持默认

jpg

【防火墙设置】悬着【virtual】,如果没有【virtual】选项的就选【LAN】,我这个就没有【virtual**】选项,选好了之后点击【保持&应用】

jpg

在接口里面就可以看到刚刚新增的WG0接口了

jpg

接口新建完了之后还需要设置防火墙规则,点击【网络】>【防火墙】>【自定义规则】,把下面的命令粘贴进去,注意:192.168.5.0/24是WireGuard的网段,就是刚刚在接口里面填写的那个IP地址的网段,-o参数如果路由器的LAN口没有取消桥接就是br-lan,如果取消桥接了就是网口,例如eth0或者eth1等,如果不清楚自己的是什么可以在【网络】下的【接口】里面查看【LAN】口的名称或者网口,添加完成后点击【重启防火墙】

1
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o br-lan -j MASQUERADE

jpg

防火墙规则自定义完成后还需要开放端口,点击【网络】>【防火墙】>【通信规则】,滑倒最下面,在名称处填写一个名称,名称自定义,协议选【UDP】,外部端口填刚刚添加新端口时填写的监听端口,填写完成后点击【添加】,然后点击【保存&应用】,如果OpenWrt是旁路有,那么需要在主路由上做端口转发,外部端口和内部端口都填刚刚新建端口时填写的监听端口,IP地址填旁路有的IP地址,协议填UDP协议。

jpg 二、创建以及配置其他用户端
回到命令模式,在WireGuard文件夹下在新建一个文件夹,这样的目的是方便管理,一个用户一个文件夹,我这里创建了一个01文件夹,创建完成后使用cd命令进入文件夹 jpg

先给01这个用户创建一个预共享密钥并查看记录下来,这个预共享密钥不是必须的,但是有这个可以提升访问的速度,使用以下命令

jpg

在使用创建01用户的私钥和公钥并且查看记录下来

1
wg genkey | tee cprivatekey | wg pubkey > cpublickey

jpg

公钥和私钥都生成后返回路由器的Web管理界面,点击【网络】>【接口】并找到刚刚创建的接口然后点击【修改】

jpg

找到Peers这一项,点击【添加】,在公钥那个地方填写刚刚01用户的公钥,允许的IP填写一个IP,要和刚刚创建的新接口在同一个网段上的,但是不能冲突,勾选上路由允许的IP,最下面的【更多选项】选泽【预共享密钥】,然后点击旁边的【添加】

jpg

点击【预共享密钥】旁边的【添加】之后,就可以看到预共享密钥这个填写框了,把刚刚创建的01用户的预共享密钥填写进去,填写完成后点击【保存&应用】按钮

jpg

这样路由器这端就设置好了,只需要生成配置文件然后再其他端导入配置文件就可以使用了,如果需要外网访问的话可以做一个端口映射,如果自己没有公网地址的话可以使用FRP进行穿透,配置文件是不能自动生成的,所以需要自己用文本文档填写好然后改成conf格式的文件,配置文件的格式如下,把对应的部分替换成自己的就可以,最后一行保持默认就可以。

1
2
3
4
5
6
7
8
9
10
11
[Interface]
Address = 分配到的virtual**地址
PrivateKey = 客户端私钥
DNS = 路由器IP

[Peer]
PublicKey = 路由器端公钥  
AllowedIPs = 0.0.0.0/0
presharedKey = 共享密钥
Endpoint = 公网IP:端口号
PersistentKeepalive = 25

下面这个是我配置好的文件,可以做一个参考

1
2
3
4
5
6
7
8
9
10
11
[Interface]
Address = 192.168.5.2
PrivateKey = WDCXBefHouhLKoAtIzZdl6PaCMZYxWuvTV4/0dPLRnw=
DNS = 192.168.0.119

[Peer]
PublicKey = mAunaCFut7TsLgA5q0IRCc1ibcP8kvrA+jKvapR1x3Y=
AllowedIPs = 0.0.0.0/0
presharedKey = LK30DwbxuAwRfyJySRCNYEofXd5pJPeau6n87GyyeCE=
Endpoint = 10.10.10.10:2000
PersistentKeepalive = 25

jpg

配置完成后点击【文件】>【另存为】,文件名为:xxx.conf,保持类型为:所有文件(.)

jpg

最后把这个文件导入到用户端使用就可以了