William
发布于 2023-05-13 / 0 阅读 / 0 评论 / 0 点赞

Openwrt上使用wireguard组网

准备:

- openwrt路由器,内网段192.168.7.1/24

 - ipv4或者ipv6公网并做好ddns解析

生成密钥:

首先根据名称上来定义不同的服务端或者客户端密钥,以免混淆

 - sprivatekey: 服务端私钥

 - spubkey: 服务端公钥

 - cprivatekey: 客户端私钥

 - cpubkey: 客户端公钥

- sharekey:预共享密钥

ssh到你的openwrt路由器,任意目录新建一个wireguard文件夹用于存放密钥,然后在wireguard文件夹下创建一个user1的子目录,用于存放第一个用户的密钥,如果有需要多个客户端,可以自行创建多个。

mkdir wg
cd wg
umask 077
mkdir user1

生成服务端密钥

wg genkey | tee sprivatekey | wg pubkey > spublickey

openwrt配置:

不同的固件可能界面和操作上会有些许不同,我使用的是esir的固件,自带了wireguard,如果你的openwrt并没有内置,请先自行安装wireguard组件

去到网络 - 接口 - 添加新接口,填写名wg0来表示,,协议选择Wireguard VPN创建

新建接口wg0

下一步,填写上上面生成的服务端私钥sprivatekey,端口任意填写,建议使用高位端口,IP地址选择一个新的内网IP,不要和你的openwrt所在内网地址段冲突,我这里使用了10.10.7.1/24的内网段作为wireguard的地址

接口配置

高级设置跳过,保持默认,防火墙设置选择LAN区域,保存并应用

接口配置

接口这里可以看到新建的接口已经有了

wg接口

配置防火墙,点开网络 - 防火墙 - 自定义规则,最后面粘贴上iptable规则,这里网段替换成你自己的

iptables -t nat -A POSTROUTING -s 10.10.7.0/24 -o eth0 -j MASQUERADE

点开通信规则,打开路由端口,允许UDP协议的51083端口

打开路由器端口

客户端配置

进入刚才创建的user1文件夹,首先生成一个sharekey,后面会用到,再生成客户端对应的私钥和公钥

cd user1
wg genpsk > sharekey
wg genkey | tee cprivatekey | wg pubkey > cpublickey

回到网络 - 接口 - 修改wg0接口,添加一个新的peers,一个peer对应一个客户端

公钥填入客户端的cpubkey

允许的IP随便写一个但是要在刚才定义的网段里面,10.10.7.2/32,::/0

勾选上路由允许的IP,其余的可以留空

左下角更多选项,添加预共享密钥,就是刚才生成的sharekey

peers

创建客户端配置文件

新建一个后缀为.conf的配置文件,填入刚才的信息,注意不要填错

[Interface]
Address = 10.10.7.2
PrivateKey = uJiBT1YszdqoyMZrca8rHf+PMwxjp/K8bj6RBnpnRE8= #cprivatekey客户端私钥
DNS = 192.168.7.1
[Peer]
PublicKey = nl80iInAz8lbBWn3CQWqYxQwZnU5T5wsI9k+fRcFP3g= #spublickey服务端公钥
AllowedIPs = 0.0.0.0/0, ::/0
presharedKey = Yqz9KOIj8HGAcaeorB7N9cJREPtPC6Fz+yR6yAkDSWA= #sharekey预共享密钥
Endpoint = 域名或者IP:端口
PersistentKeepalive = 25

手机或者电脑上安装wireguard客户端,导入.conf配置文件,测试连接成功

openwrt菜单栏状态 - WireGuard状态可以查看当前连接信息

进阶快速备份或者添加peer,打开/etc/config/network

# 示例填写方式
config interface 'wg0'
	option proto 'wireguard'
	option delegate '0'
	option private_key 'YFUZ5xG0xc9SC6+QrMHaSZSMohcILG+MkOazr57Om2E=' #sprivatekey:服务端私钥
	list addresses '10.10.7.1/24'
	option listen_port '51083'
config wireguard_wg0
	option public_key 'H7VMlPuOUumCl6sURd7O+cbcch3CvMhapfhogU3jLRA=' #cpublickey客户端公钥
	option preshared_key 'Yqz9KOIj8HGATaeorB4N9cJREPtPC6Fz+yR6yAkDSWA=' #sharekey预共享密钥
	list allowed_ips '10.10.7.2/32'
	list allowed_ips '::/0'
	option route_allowed_ips '1'

保存后,记得重启一下network

# 示例Peer填写
[Interface]
Address = 10.10.7.2
PrivateKey = uJiBT1YszdqoyMZrcb8rHf+PMwxjp/K8bj6RBapnRE8= #cprivatekey客户端私钥
DNS = 192.168.7.1
[Peer]
PublicKey = nl80iInAz8laBWn3CQWqYxQwZna5T5abI9k+fRcFP3g= #spublickey服务端公钥
AllowedIPs = 0.0.0.0/0, ::/0
presharedKey = Yqz9KOIj8HGATaeorB4N9cJREPtPC6Fz+yR6yAkDSWA= #sharekey预共享密钥
Endpoint = 域名:端口
PersistentKeepalive = 25

THE END

原作者出处:suckmypeen https://www.bilibili.com/read/cv19245161 出处:bilibili


评论