Wireguard本身只是一个P2P tunnel,简单理解就是在设备之间拉了个网卡和网线,本身不定义网络拓扑。整个拓扑需要自行配置。相比openvpn那种复杂的配置server-side、client-side配置脚本下发。Wireguard则走了另外一个极端,配置极度简单,基于UDP,只提供有限、必要的选项。
在OpenWRT上配置门户
网上一堆文章相关配置文章,而且如果你用的是最新OpenWRT,LuCI基本能完成所有操作,旧版OpenWRT的LuCI可能无法生成Peer配置文件,这里不再详述。这里主要总结一下我碰到的问题和排查:
- 首先第一步,确认链接成功。是否链接成功要看上次handshake(握手)时间。如果一直没有收到握手,或者只有一方(路由或者客户端)收到握手表明网络不通,需要先排查这个问题。
- 握手成功后,表明网络已经搭起来,需要确定路由。如果你只是想访问内网设备,不需要所有流量都经过wg,在客户端的
AllowedIPs
那部分只需要增加内网设备的网段192.168.0.0/16, ::/1, 8000::/1
类似这样,如果需要拦截其他流量,/1
变成/0
- 局域网的设备如果默认路由不是走openwrt的,需要手动在该设备给wg网段添加静态路由。不然入站能收到,出站的路由没走openwrt设备依然是不通。
- Masquerading和DNAT并非必要。主要看你想要什么,如果你想访问的时候保留wg的地址信息,则不要勾选;wg访问内网设备要不需要经历一次nat;反之如果你想少点路由配置,打开Masquerading和DNAT,内网不再知道wg的ip段信息,所有的转换的都在路由完成。