openwrt WireGuard 组网

wg组网需要一个有公网(v4v6任选)的路由器or服务器
所有流量都会经过这个公网服务端

在这个例子里,服务端是有公网IP的openwrt路由器

作为服务端的路由器lan口ip是10.1.1.1

router1的lan口ip是192.168.100.1

router2的lan口ip是192.168.233.1

下面的配置文件按照自己的情况替换就好了

172.16.0.X是wg接口的ip

先在服务端把wg要用的端口打开
/etc/config/firewall这个文件末尾添加

端口自己选不会冲突的就行了,这里用的53258

1
2
3
4
5
6
7
config rule
option name 'WireGuard'
list proto 'udp'
option src 'wan'
option src_port '53258'
option dest_port '53258'
option target 'ACCEPT'

然后在服务端添加一个wg接口,在web操作太麻烦了(懒的去截图),直接改配置文件

配置文件路径/etc/config/network

直接在末尾添加 注意空行

服务端的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
config interface 'wg'
option proto 'wireguard'
option private_key '********服务端的private_key'********
option listen_port '53258'
list addresses '172.16.0.1/24'
option mtu '1280'
option defaultroute '0'

config wireguard_wg
option description 'router1'
option public_key '*********router1的public_key***********'
list allowed_ips '192.168.100.0/24'
list allowed_ips '172.16.0.2/32'
option route_allowed_ips '1'
option persistent_keepalive '25'

config wireguard_wg
option description 'router2'
option public_key '********router2的public_key**********'
list allowed_ips '192.168.233.0/24'
list allowed_ips '172.16.0.3/32'
option route_allowed_ips '1'
option persistent_keepalive '25'

再生成3个设备要用的密钥

直接在op的ssh里运行就行

1
PRIVATE_KEY=$(wg genkey) && echo "Private Key: $PRIVATE_KEY" && echo "Public Key: $(echo $PRIVATE_KEY | wg pubkey)"

将上面生成的密钥替换到服务端的配置文件里

注意:在这个例子里需要生成3组密钥,服务端一组,router1和router2各一组,在上面服务端的配置文件中暂时可能用不到完整的一组,但是先留着,下面要用

下面是另外两台需要组网的路由器的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# router1
config interface 'wg'
option proto 'wireguard'
option private_key '*********router1的private_key ***********'
list addresses '172.16.0.3/32'
option mtu '1280'

config wireguard_wg
option route_allowed_ips '1'
option endpoint_port '53258'
option public_key '********服务端的public_key '********'
option persistent_keepalive '25'
list allowed_ips '172.16.0.0/24'
list allowed_ips '192.168.100.0/24'
list allowed_ips '10.1.1.0/24'
option endpoint_host '服务端的公网IP或者DDNS链接'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#router2
config interface 'wg'
option proto 'wireguard'
option private_key '*********router2的private_key ***********'
list addresses '172.16.0.2/32'
option mtu '1280'

config wireguard_wg
option public_key '********服务端的public_key '********'
option endpoint_port '53258'
option persistent_keepalive '25'
option route_allowed_ips '1'
list allowed_ips '172.16.0.0/24'
list allowed_ips '192.168.233.0/24'
list allowed_ips '10.1.1.0/24'
option endpoint_host '服务端的公网IP或者DDNS链接'

然后把3个路由器的WG接口都划到lan里

一切顺利的话 重启这3个路由器后就组网成功了

PS:

家宽的IP会变化,可以在router1和router2的定时任务加入这个脚本,如果服务端IP变了会自动重连(用的DDNS的话)

1
*/10 * * * * /usr/bin/wireguard_watchdog

openwrt WireGuard 组网
https://2333.world/_posts/2024_05_27/openwrt-WireGuard-组网/
作者
Yuban10703
发布于
2024年5月27日
许可协议