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 option proto option private_key option listen_port list addresses option mtu option defaultroute
config wireguard_wg option description option public_key list allowed_ips list allowed_ips option route_allowed_ips option persistent_keepalive
config wireguard_wg option description option public_key list allowed_ips list allowed_ips option route_allowed_ips option persistent_keepalive
|
再生成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 option proto option private_key list addresses option mtu
config wireguard_wg option route_allowed_ips option endpoint_port option public_key option persistent_keepalive list allowed_ips list allowed_ips list allowed_ips option endpoint_host
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #router2 config interface option proto option private_key list addresses option mtu
config wireguard_wg option public_key option endpoint_port option persistent_keepalive option route_allowed_ips list allowed_ips list allowed_ips list allowed_ips option endpoint_host
|
然后把3个路由器的WG接口都划到lan里
一切顺利的话 重启这3个路由器后就组网成功了
PS:
家宽的IP会变化,可以在router1和router2的定时任务加入这个脚本,如果服务端IP变了会自动重连(用的DDNS的话)
1
| */10 * * * * /usr/bin/wireguard_watchdog
|