异地组网方案
本文最后更新于 2025年11月19日 晚上
家庭网络拓扑如下图,使用WireGuard实现异地组网,可以在公司电脑或手机,通过安装WireGuard客户端通过openwrt路由器访问家中局域网的所有网络设备,需要准备公网ip
网络拓扑图
其中wireguard网段是10.0.8.x,家中局域网的网段为192.168.6.x
可以在公司电脑中输入192.168.6.x访问家中设备
准备
需要先提前安装docker和docker compose
参考:Docker相关
同时机器需要开放51820端口
WireGuard官网安装教程:Installation-WireGuard
服务端
1.准备工作
云服务器系统为centos7,需要安装一些模块,其他系统参考官网安装教程,这里我选择方法2

1 | |
2.docker-compose.yaml配置
创建docker-compose.yaml
1 | |
同时在docker-compose.yaml的路径下创建一个空的文件wg0.conf
先启动服务(此时服务端尚未配置好)
1 | |
3.生成公钥、私钥和预共享密钥
进入容器,生成一组公钥、私钥和预共享密钥,并记录下来
1 | |
每个节点需要一组公钥、私钥和预共享密钥,我这里1个服务端+3个客户端总共4个节点,所以需要执行4次生成4组(后续增加客户端可以重复此步骤)
4.服务端配置
退出容器,修改wg0.conf
1 | |
5.启动
因为刚刚先启动了服务端会在docker-compose.yaml路径下生成config文件,需要删除后才能读取新的wg0.conf,然后重新启动服务端

1 | |
客户端
openwrt
我这里wireguard装在了旁路由上,主路由也可安装实现,方法一样
网络-接口-添加新接口
名称随意,协议选择WireGuard VPN
其他配置如下图,保存并应用
防火墙打开转发
最后在openwrt中ping一下10.0.8.1(服务端),通了则openwrt客户端配置成功
Win
下载win客户端并安装
按照下图配置

保存后启动连接,打开cmd,分别ping一下服务端、openwrt客户端和家庭内网的centos7虚拟机,通了则表示已经成功连上家庭内网
Android
下载app,安装
按照下图新建配置,启动连接即可
问题
1.家庭内网win主机和linux主机都可以互相连接,但是公司电脑无法连接内网的win主机(台式机和PVE虚拟的win)
解决办法:
win添加防火墙规则
- 打开 Windows 防火墙高级安全设置:
- 按
Win + R,输入wf.msc,然后按Enter。
- 按
- 创建入站规则:
- 在左侧面板中选择“入站规则”。
- 在右侧面板中选择“新建规则”。
- 选择“自定义”规则类型,然后单击“下一步”。
- 在“程序”部分选择“所有程序”,然后单击“下一步”。
- 在“协议和端口”部分选择“任何”,然后单击“下一步”。
- 在“作用范围”部分,添加 WireGuard 的 IP 范围。例如,如果 WireGuard 的网络是
10.0.0.0/24,将其添加到远程 IP 地址。 - 在“操作”部分选择“允许连接”,然后单击“下一步”。
- 在“配置文件”部分选择“域”、“专用”和“公用”,然后单击“下一步”。
- 为规则命名,例如“Allow WireGuard VPN”,然后单击“完成”。
- 创建出站规则(步骤类似入站规则):
- 在左侧面板中选择“出站规则”。
- 在右侧面板中选择“新建规则”,并重复上述步骤。
此方法只能连接内网win台式机,PVE虚拟的win还是无法访问,目前未找到解决方案
如果只是想进行远程桌面连接,可以在openwrt里的 网络-socat 配置一下转发,配置如下图,这样就可以通过10.0.8.4:10005连接到PVE虚拟win的桌面控制了。内网其他网络设备连接也可以通过此方法连接,其中3389是win远程桌面默认端口
