wireguard用作远程局域网接入的工具,我长期以来都是在手机上用,场景也比较简单,需要连接到家里局域网,此时打开wireguard客户端,连接使用,用完关闭。

国庆节回老家,帮老家装了一台openwrt软路由,连接了众多只能设备,比如冰箱等,在老家的局域网内使用没问题,而节后回到了上海,此时在登录老家的智能设备就比较繁琐,需要先在手机上打开wireguard,连接老家的peer,然后再尝试远程操控,用完后,还需要退出wireguard,非常繁琐。

1、目标:

直接通过路由器完成虚拟局域网互联,路由器之间建立连接,常年不断,而路由器下面的设备无需再次开启wireguard。

即在家直接访问远程(老家)智能设备的虚拟局域网,体验上和在老家没有任何区别。

2、前提

两地软路由分别装有openwrt,且装有wireguard,异地有公网(ipv4或ipv6)。

3、网络拓扑

4、配置修改

4.1、通过openwrt控制台,生成密钥,注意,此处的密钥简称为远程密钥

# 新建wg目录,设置权限
mkdir wg && cd wg && umask 077

# 生成与共享密钥
wg genpsk > sharekey

# 生成公钥与私钥
wg genkey | tee privatekey | wg pubkey > publickey

4.2、另外再次生成客户端密钥,注意,此处密钥简称为客户端密钥

# 生成公钥与私钥
wg genkey | tee privatekey | wg pubkey > publickey

4.3、异地的openwrt配置篇 - 即服务端

1、 登陆 OpenWRT - 网络 - 接口 - 添加新接口
2、 填写接口名 - 选择接口协议 - 提交

3、提交后,填写上述生成的私钥、监听端口填写51820(可自定义)、ip地址(如10.20.0.1/24,注意网段不要重复)
4、增加Peers,公钥填写 客户端 公钥,预共享密钥填写远程的预共享密钥,允许的IP为10.20.0.2(与上述3中的网段需要对应),勾选「路由允许的IP」,端点端口51820
5、保存&应用,然后重启路由。
6、至此,异地的openwrt配置完成。

4.4、本地openwrt配置篇 - 即客户端

1、登陆 OpenWRT - 网络 - 接口 - 添加新接口,与上述操作类似
2、私钥填写客户端私钥,监听端口不填,IP地址10.20.0.2/32(此处非常关键,与上述允许的IP地址需要对应)
3、增加Peers参数,公钥填写远程公钥,预共享密钥填写远程预共享密钥,允许的IP填写192.168.3.0/24(此处注意,非常关键,此处填写远程的实际局域网网段),勾选路由允许的IP,端点主机填写远端主机的IP(此处非常关键,也可以填写DDNS对应的域名),端点端口51820(对应远程的监听端口)

4、防火墙设置

为了能够让本地局域网顺利访问远程局域网,需要将两个网段放入同一区域,这一步很关键。

将覆盖网络中,新增的进行勾选

此时可以看到已经加入到同一区域,此时在lan(即本地局域网下)可以无痛访问远程局域网

5、保存&应用,然后重启路由。
6、登录本地路由,然后查看新建的网络接口,查看是否有IPv4,同时是否有数据接收和发送

7、如果有数据包发送,一般就连接成功。此时本地任何接入路由器的设备上,尝试Ping一下远程局域网的ip,例如本地网段192.168.2.1/24,远程局域网192.168.3.1/24

此时本地设备的ip为192.168.2.100,Ping远程的局域网内设备192.168.3.213,相距几百公里,延迟还是很低的。

在家里的路由器常年通过wireguard连接着远程的路由器,访问远程的设备,如同在远程的局域网中一模一样。至此大功告成!