WireGuard 反向访问客户端:如何从家里远程桌面连接外网笔记本
大多数 WireGuard 教程只讲“外部设备如何访问家里内网”,例如手机在外面访问 NAS、OpenWrt、服务器。
但有时候我们需要反过来:
笔记本在外网
笔记本通过 WireGuard 连回家里
家里内网电脑想远程桌面连接这台笔记本也就是从家庭内网反向访问 WireGuard 客户端。本文整理这个场景的配置和排障方法。
一、场景说明
假设网络如下:
家庭内网:192.168.1.0/24
OpenWrt:192.168.1.2
WireGuard 网段:10.7.0.0/24
OpenWrt wg0:10.7.0.1
手机:10.7.0.2
笔记本:10.7.0.3笔记本当前不在家里,而是通过外部网络上网,例如:
笔记本 → 手机热点 → 运营商网络 → 家里公网 IP → OpenWrt WireGuard目标是让家里内网电脑远程桌面连接:
10.7.0.3这个地址是笔记本的 WireGuard 隧道 IP。
二、先确认笔记本是独立 Peer
不要让手机和笔记本共用同一份 WireGuard 配置。
正确规划:
手机:10.7.0.2/32
笔记本:10.7.0.3/32OpenWrt 上笔记本 Peer 应该是:
描述:laptop
允许的 IP:10.7.0.3/32
为允许的 IP 创建路由:勾选
持续保持连接:25在 OpenWrt 上查看:
wg show应该看到类似:
peer: 笔记本公钥
endpoint: 外部公网IP:随机端口
allowed ips: 10.7.0.3/32
latest handshake: 几秒前
transfer: xxx received, xxx sent如果 allowed ips 是 10.7.0.3/32,并且有 latest handshake,就说明笔记本已经连入 WireGuard。
三、确认 10.7.0.3 是笔记本
在笔记本 Windows 上执行:
ipconfig找到 WireGuard 网卡,应该能看到:
IPv4 地址:10.7.0.3也可以用 PowerShell:
Get-NetIPAddress | findstr 10.7如果笔记本没有 10.7.0.3,说明配置不对。
四、OpenWrt 防火墙允许 lan → wg
外部客户端访问家庭内网时,需要:
wg → lan家庭内网访问外部 WireGuard 客户端时,需要:
lan → wg进入 OpenWrt:
网络 → 防火墙 → 区域 → wg建议:
涵盖网络:wg0
输入:接受
输出:接受
转发:接受
TCP MSS 钳制:开启
IP 动态伪装:不勾选如果只需要外部访问家里:
允许转发到目标区域:lan如果还需要家里访问外部客户端:
允许来自源区域的转发:lan最终需要双向:
wg → lan
lan → wg五、内网设备必须知道 10.7.0.0/24 在哪里
如果你已经把全屋设备默认网关设置为 OpenWrt:
默认网关:192.168.1.2那么内网设备访问 10.7.0.3 时会自动交给 OpenWrt。
如果某些设备默认网关仍然是主路由:
默认网关:192.168.1.1那么主路由需要添加静态路由:
目标网段:10.7.0.0/24
下一跳:192.168.1.2示例:
目标网段:10.7.0.0/24
下一跳:192.168.1.2否则内网设备不知道如何到达 WireGuard 网段。
六、测试三层网络
在家里内网电脑上测试:
ping 10.7.0.3如果能 ping 通,说明:
家庭内网 → OpenWrt → WireGuard → 外网笔记本这条链路已经通了。
如果 ping 不通,检查:
- 笔记本 WireGuard 是否在线。
wg show是否有 latest handshake。- OpenWrt Peer allowed IP 是否是
10.7.0.3/32。 - 是否勾选“为允许的 IP 创建路由”。
- 防火墙是否允许
lan → wg。 - 内网设备默认网关是否是 OpenWrt。
- 主路由是否缺少到 WireGuard 网段的静态路由。
七、远程桌面连接地址
如果笔记本的 WireGuard IP 是:
10.7.0.3那么家里内网电脑远程桌面应该连接:
10.7.0.3不要连接:
- 笔记本当前外部网络的 IP。
- 手机热点分配给笔记本的 IP。
- 家里公网域名。
- 手机的 WireGuard IP。
八、能 ping 通但远程桌面不通
如果能 ping 通 10.7.0.3,但 RDP 不通,说明 WireGuard 网络没问题,问题大概率在 Windows 远程桌面服务。
先在家里内网电脑测试端口:
Test-NetConnection 10.7.0.3 -Port 3389如果:
TcpTestSucceeded : True就可以直接用远程桌面连接 10.7.0.3。
如果是 False,去笔记本上排查 Windows RDP。
九、笔记本本机检查 3389
在笔记本上执行:
Test-NetConnection localhost -Port 3389如果本机都失败,说明笔记本没有正常监听 RDP,和 WireGuard 无关。
检查服务:
Get-Service TermService检查 RDP 配置:
Get-ItemProperty 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnectionsfDenyTSConnections 应该是:
检查 RDP-Tcp 配置:
Get-ItemProperty 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' |
Select-Object fEnableWinStation, PortNumber, LanAdapter, UserAuthentication, SecurityLayer常见正常值:
fEnableWinStation : 1
PortNumber : 3389
LanAdapter : 0
UserAuthentication : 1
SecurityLayer : 2查看是否有 RDP 监听器:
qwinsta正常应该看到类似:
rdp-tcp Listen查看端口监听:
netstat -ano | findstr LISTENING | findstr :3389如果没有监听,说明 RDP 服务端没有真正启动。
十、开启 Windows 防火墙规则
笔记本管理员 PowerShell:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"如果 WireGuard 网络被识别为公用网络,远程桌面可能仍然被防火墙拦截。
查看网络类型:
Get-NetConnectionProfile找到 WireGuard 对应接口,把它改成专用网络:
Set-NetConnectionProfile -InterfaceAlias "你的 WireGuard 接口名" -NetworkCategory Private接口名以 Get-NetConnectionProfile 显示为准。
十一、Windows 版本限制
Windows 家庭版不能作为远程桌面服务端。需要:
Windows Pro
Windows Enterprise
Windows Education如果是 Home 版,可以考虑:
- RustDesk
- AnyDesk
- VNC
- Parsec
- 升级到 Windows Pro
十二、排障逻辑总结
情况 1:ping 不通 10.7.0.3
优先查:
WireGuard peer
allowed_ips
route_allowed_ips
lan → wg 防火墙
内网设备默认网关
主路由静态路由情况 2:ping 通,但 3389 不通
优先查:
Windows 远程桌面是否启用
TermService 是否运行
RDP-Tcp 是否监听
Windows 防火墙
WireGuard 网卡网络类型情况 3:笔记本本机 localhost:3389 都不通
说明问题在 Windows RDP 服务端,不在 WireGuard。
总结
WireGuard 反向访问客户端的关键点是:
- 每个客户端使用独立 IP 和独立密钥。
- OpenWrt 上 Peer 的 allowed IP 必须是客户端的
/32地址。 - OpenWrt 要允许
lan → wg。 - 家庭内网设备要知道
10.7.0.0/24走 OpenWrt。 - 远程桌面目标是客户端的 WireGuard IP,例如
10.7.0.3。 - 能 ping 通但 RDP 不通时,优先排查 Windows 远程桌面服务本身。
这类场景很适合远程维护外出笔记本、临时办公电脑,或者把外部设备安全接入家庭内网。