Windows远程协助实现跨网络连接的“黑科技”
为了和远方的朋友进行远程联机,我们组建了一个联机的VN网络,实现虚拟局域网。 有一次使用Windows远程协助的时候,忘记连接VN,竟然成功连接上了! 我和我的小伙伴都惊呆了!
环境是这样的: 操作系统都是Windows 10(22H2) 电脑是通过中国电信的光猫联网。 中国电信光猫没有公网IPv4,但有公网IPv6。 但光猫默认配置是禁止所有的IPv6进站连接的。
所以排除2台电脑通过IPv6直联的情况。
继续研究发现远程协助的进程msra.exe监听的端口是随机的,但可以看到监听了一个IPv6地址。 2台电脑连接时,可以互相看到msra.exer是通过IPv6的地址连接的。

这个IPv6地址是哪来的呢? 本机的网卡并没有这个IP地址。
经过一番研究,找到了,原来Windows创建了一个Teredo虚拟网卡:

继续研究这个虚拟网卡,找到了关键信息:这是IPv6的隧道技术。
结论:msra.exe启动的时候会尝试建立IPv6的隧道,来实现2台电脑的连接。 这样一来,Windows远程协助的实用性得到极大的提升。 在一般的应用场景下,基本可以告别“向日葵”,TeamViewer等第3方软件了。
通过分析,不使用msra,我们也可以手动创建隧道网络:
命令如下:
netsh interface teredo set state type=natawareclient servername=win1910.ipv6.microsoft.com. servervirtualip=0.0.0.0
执行这个命令后:查看ipconfig /all就能找到隧道IPv6的地址了。
这个命令重启后一般会失效,还可以到组策略开启这个功能:
组策略/计算机配置/管理模板/网络/TCPIP设置/IPv6转换技术/ 设置Teredo刷新率:30 设置Teredo服务器名称:win1910.ipv6.microsoft.com 设置Teredo状态:企业客户端
设置好后,重启电脑。
这样的IPv6地址可以实现Windows远程协助 和 Windows远程桌面连接。
使用第3方软件暂时没有成功。