# WireGuard 反向访问客户端：如何从家里远程桌面连接外网笔记本

- 原文地址：https://www.kuddy.cn/archives/231
- 发布时间：2026-05-11 00:55:28
- 更新时间：2026-05-18 02:42:22
- 分类：网络
- 标签：VPN, WireGuard

> # WireGuard 反向访问客户端：如何从家里远程桌面连接外网笔记本 大多数 WireGuard 教程只讲“外部设备...

---

# 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/32
```


OpenWrt 上笔记本 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:SystemCurrentControlSetControlTerminal Server' -Name fDenyTSConnections
```


`fDenyTSConnections` 应该是：


```
0
```


检查 RDP-Tcp 配置：


```
Get-ItemProperty 'HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-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 远程桌面服务本身。

这类场景很适合远程维护外出笔记本、临时办公电脑，或者把外部设备安全接入家庭内网。