免责声明 本人纯属技术爱好者,非网络专业人士。本教程记录了我个人的一次折腾过程(特别感谢 AI 的辅助)。 风险提示: 本教程涉及修改防火墙、注册表和网络拓扑。所有操作仅供参考,请确保你理解每一步的含义。若因操作不当导致设备被黑、数据丢失或网络故障,本人概不负责。
在没有公网 IP、也不想购买昂贵服务器或折腾软路由的前提下,实现从外网(如手机 5G)满速、低延迟地访问家中的 Windows 电脑。
应用场景: 远程访问本地服务(TeslaMate, HomeAssistant)、存取 SMB 文件、Moonlight 游戏串流。
我们的方案不依赖 ZeroTier/Tailscale 等第三方中转服务器(受限于中转带宽),而是利用 STUN 技术 进行 P2P “打洞”。
工具: Lucky (打洞工具) + WireGuard (组网隧道)。
流量路径: 手机 -> Lucky 打通的公网 UDP 端口 -> 家中电脑 Lucky -> 电脑 WireGuard -> 建立隧道 -> 虚拟局域网通信 (10.0.0.x)。
优势: 直连速度仅取决于你家宽带的上行和手机网速。
主路由: 小米 BE 6500 Pro (或其他路由器)
服务器(被控端): Windows 11 电脑 (24小时开机)
客户端(控制端): 手机 (iOS/Android) 或其他外网电脑
软件下载:
Lucky (Windows版)
WireGuard (Windows版)
WireGuard APP (手机端应用商店下载)
第一步:基础网络环境配置 (路由器与电脑)
STUN 打洞成功的关键在于网络类型必须是 Full Cone NAT (NAT1)。
固定电脑 IP:
进入路由器后台 (如 192.168.31.1) -> 局域网设置 -> DHCP 静态 IP 分配。
将电脑 MAC 地址与固定 IP 绑定 (本教程示例:192.168.31.146)。
开启 DMZ (实现 NAT1):
大部分家用路由(特别是小米)默认防火墙较严,会导致 NAT 类型不佳。
路由器后台 -> 高级设置 -> DMZ -> 开启。
DMZ IP 地址填入电脑的静态 IP (192.168.31.146) -> 保存应用。
第二步:配置 WireGuard 服务端 (电脑)
WireGuard 负责创建虚拟局域网 10.0.0.x。
安装并打开 WireGuard,点击左下角箭头 -> 新建空隧道。
名称填入 wg_server (或其他)。
重要: 复制屏幕上显示的 [公钥],保存到记事本,稍后给手机用。
将配置文件修改为以下内容:
[Interface]
# 这是服务器私钥,保留软件自动生成的即可
PrivateKey = <这里保留自动生成的私钥>
# 服务器在虚拟局域网的IP
Address = 10.0.0.1/24
# 监听端口(重要:这里填51821,作为内部转发端口)
ListenPort = 51821
[Peer]
# 这里填手机端的公钥(暂时空着或随便填,等第六步获取手机公钥后再回来改)
PublicKey = <待填入手机公钥>
# 分配给手机的虚拟IP
AllowedIPs = 10.0.0.2/32
保存,但先不要启动隧道。
第三步:配置 Lucky 打洞工具 (电脑)
Lucky 负责将内网端口映射到公网。
解压运行 lucky.exe。
浏览器访问 http://127.0.0.1:16601 进入管理后台。
菜单选择 “STUN内网穿透” -> “添加穿透规则”。
配置如下:
规则名称: WireGuard穿透
操作模式: 简易模式
穿透类型: IPv4-UDP
穿透通道本地端口: 51820 (这是 Lucky 对外的端口)
防火墙自动放行: ❌ 关闭 (我们要手动设置更高级的规则)
目标地址: 127.0.0.1
目标端口: 51821 (对应 WireGuard 的 ListenPort)
第四步:Windows 防火墙设置 (关键)
我们需要建立两条入站规则,这是打洞能否成功的核心。
打开 “Windows Defender 防火墙” -> “高级设置” -> “入站规则” -> “新建规则”。
规则 A:P2P 打洞 (允许边缘遍历)
类型: 端口
协议: UDP
特定本地端口: 51820
操作: 允许连接
配置文件: 域、专用、公用 (全选)
名称: Lucky-P2P (UDP 51820)
设置边缘遍历 (最关键一步):
右键该规则 -> 属性 -> 高级 选项卡。
边缘遍历 下拉菜单选择:允许边缘遍历。
规则 B:内部转发
类型: 端口
协议: UDP
特定本地端口: 51821
操作: 允许连接
名称: WireGuard-Internal (UDP 51821)
注:此规则不需要开启边缘遍历。
第五步:开启系统路由转发
让你的 Windows 电脑像路由器一样转发流量。
以管理员身份打开 PowerShell。
执行命令 1 (开启 IP 路由功能):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "IPEnableRouter" -Value 1
执行命令 2 (添加 NAT 规则):
New-NetNat -Name "WireGuard-NAT" -InternalIPInterfaceAddressPrefix "10.0.0.0/24"
� 必须重启电脑 才能生效!
第六步:配置手机客户端 & 最终联调
电脑重启后操作:
启动 lucky.exe。
启动 WireGuard (wg_server 隧道)。
回到 Lucky 网页后台,查看规则列表,确认已获取到 公网IP:端口 (例如 123.45.67.89:16888)。
手机端操作 (断开 WiFi,使用 4G/5G):
打开 WireGuard App -> + -> 手动创建。
[接口/Interface] 部分:
名称: MyPC
私钥/公钥: 点击生成。👉 复制这里的公钥 发送给电脑。
局域网 IP: 10.0.0.2/32
DNS 服务器: 192.168.31.1 (或 223.5.5.5)
[对端/Peer] 部分 (添加节点):
公钥: 填入 第二步 中电脑端 WireGuard 的公钥。
允许的 IP: 0.0.0.0/0 (全流量代理) 或 10.0.0.0/24, 192.168.31.0/24 (仅访问内网)。
对端 (Endpoint): 填入 Lucky 上显示的 公网IP:端口。
保存。
回到电脑端完善配置:
编辑 wg_server 隧道。
在 [Peer] 下的 PublicKey 处,填入刚刚手机端生成的公钥。
保存并重启隧道。
确保电脑 Lucky 和 WireGuard 均在运行。
手机开启 WireGuard 开关。
握手状态: 查看手机 App,如果有数据传输且握手时间在刷新(例如“3秒前”),说明打洞成功!
业务测试:
📱 手机浏览器访问 192.168.31.1 -> 成功进入路由器后台。
🎮 打开 Moonlight -> 添加主机 10.0.0.1 -> 成功串流。
如果在连接后无法访问电脑的共享文件夹,需要调整防火墙。
打开 Windows 防火墙 -> 入站规则。
找到 “文件和打印机共享 (SMB-In)”,可能有多个,找到**配置文件为“专用”**的那一条。
右键 -> 属性 -> 作用域 选项卡。
在 远程 IP 地址 区域:
选择 “下列 IP 地址”。
点击添加,输入:10.0.0.0/24 (即 WireGuard 的网段)。
确定保存。
🎉 祝贺你! 现在你拥有了一条完全免费、高速且私密的回家隧道。