贫穷真的会激起人的创造力
前言
最近经常在学校用mba远控家里的windows,又被todesk、uu远程这类远控软件的逆天延迟搞的口吐芬芳(
唉,资本,你又赢了
一怒之下决定自己搭一个可以直连的远程控制服务,以便在外也能愉快使用
原理
要想自己搭建远控服务,就先来了解一下现在市面上远控软件的主要原理。其实很简单,就是两台电脑利用远控软件提供的中转服务器作为桥梁传输RDP协议数据
这是最常见的模式,也叫Relay。这种模式是延迟最高的,因为两台电脑都需要连接到一台中转服务器上,而两边各自的链接质量都会影响你的最终体验
还有一种就是前言里提到的P2P (peer to peer),也就是直连,一般是先接入Relay,然后再利用udp打洞的形式让各级路由告诉你的两台电脑在其各自nat下的ip地址,以此达到类似直连的效果。这种模式看似方便,但实际上容易出现某一层nat不愿交出路由信息导致最终只能无奈妥协转成Relay的情况
由此可见,在传统的网络架构下,要想用ipv4做到简单部署显然是不可能的,因为现在绝大多数电脑都藏在一层又一层的nat下。所以我们不妨换一个思路,既然v4不行,那就用v6吧
准备工作
开启RDP服务
如果你是windows vista以上的非家庭版,那么只需要打开 控制面板->系统和安全->允许远程访问
,将这个勾上
因为这篇文章主要面向在校学生,现在大多windows笔记本又是默认不提供远程访问功能的家庭版,所以下面将教大家怎么为win10/11家庭版破解出远程功能。如果你不需要这一部分教程可以直接跳过。
怎么判断自己需不需要破解呢?我以自己的win11为例,在设置
里搜索远程
如果出现下面这样就说明你需要破解
首先需要到这里下载最新版.zip文件
解压后以管理员身份运行这个,为你的windows安装远程控制服务。
运行完打开这个,根据提示操作。操作完关闭后打开这个,进入配置页面
打开后,理论上你的第三行应该都会是红的(因为我已经可以用所以是绿灯),因为你还没将自己的系统相应的配置文件配置好。记住第二行后面的这串数字,我这里是10.0.22621.5124
,每台windows的版本都可能不一样,你只需要知道你自己的就行
来到项目issue页面,将你的这串数字贴进去搜索
点进第一条,看看有没有提供配置文件。如果有,就直接复制使用,如果没有,就继续找。
可以看到有人提供,复制这段内容,打开这个路径C:\Program Files\RDP Wrapper
。记事本打开rdpwrap.ini
,拉到最下面,张贴进去
保存,然后重启你的电脑。重启后如果显示像我上面那样的三行绿就说明破解成功,你的家庭版也可以像其他windows一样接受远程控制了。此时我们回到刚才存放工具的目录,点开这个
它会尝试起一个本地链接来链接你的电脑,如果出现这个页面点击连接
如果能看到你的锁屏界面,那么就说明RDP功能已经开启成功了,接下来我们来配置端口和认证方式。
重新点开这个
你可以参考我的选项来。这里为了不暴露我使用的端口号就调回了3389,当然你也可以自己选一个端口,只要不和你已知的服务冲突
(这段话新手可以跳过不看)另外我需要向懂windows登录验证模式的朋友解释一下这里为什么选择default RDP auth而不是更安全的网络级验证,因为我实在没搞懂它在网络级验证登录窗口要我提供的账号密码是什么,尽管我已经留下了密码凭证但依旧没法使用我的microsoft账户或者windows hello登录。唯独没尝试将我的用户设置为本地用户,因为这会使我失去很多依赖的功能,所以我决定还是用默认RDP验证
配置完成后点击apply,然后再次重启你的电脑,接着我们来配置防火墙。
打开控制面板->系统和安全->Windows Defender防火墙->高级设置->入站规则->新建规则
最后名称和描述随意。完成后你应该能找到一条和我一样的规则
此时你的电脑就已经可以被你的局域网设备访问了,下一步就是要让你的电脑在公网上也能被链接到
地址解析
首先我们肯定不可能自己记v6地址,这玩意不像v4还有记住的可能,而是又臭又长。所以我们就需要一个域名来解决这个问题。这里我选择到porkbun买大家也可以自行到其他国外域名提供商购买,例如namesilo。为什么不到国内的买?因为国内需要备案,需要比较长的等待时间,如果你是和我一样已经迫不及待想开始使用的,就推荐直接找国外的域名商购买
购买完成后,我们就要想办法把自己ip解析上去。但由运营商直接提供的公网ip不像你买的vps那种IDC机房分发的一样固定,而是几乎隔两天就更新一次(具体频率随各个地区运营商不同),所以如果手动解析就会变得很麻烦,我们就需要ddns
ddns意为动态域名解析,可以在你ip地址变化后及时自动更新,需要在你的windows电脑上安装这个软件:ddns-go
在解压目录打开cmd,运行ddns-go -s install
即可设置为开机自启,这样以后只要你想远控,就只需要打开你的电脑,不需要解锁屏幕,将剩下的都交给开机后的后台任务即可。
执行完成后在浏览器打开http://localhost:9876
,就能进入到管理页面根据提示设置完账号密码后就能进入(建议将账号密码保存在你的浏览器里,以免日后要用的时候忘记)
接着我们就要让你的ddns-go与域名商联动起来,以我的porkbun为例,找到下面圈出来的入口
随意输入一个title,点击创建
创建完成后你会得到一串以pk1开头的api key和一串以sk1开头的secret key,这两串key非常重要,不要透露给别人
回到域名管理页面,在域名后面的detail里将api access打开
接着将他们填到你的ddns-go,别选错服务商。你的域名是哪家买的就选哪家,填完点一下保存
接下来的步骤分为两类。如果你是直接拥有公网v6地址的家庭宽带用户,那么可以看v6和v4两种地址解析;如果你是学校校园网用户,那么只需要看v4地址解析,因为校园网并没有为每台设备分配公网v6地址,因此只需要解析你的v4地址
v6地址解析
打开cmd,使用ipconfig /all
指令查询一下你的ipv6地址。一般来说,你会得到三个v6地址
第一个一般比较短,专业名称叫全局单播地址(Global Unicast Address),这一段地址的前64比特位一般是由运营商(ISP)分配给你的。这个地址一般比较稳定,较长期不更换(但也不是不更换)。
第二和第三个一般比较长,叫临时地址(Temporary Address) 或 隐私扩展地址(Privacy Extension Address)。第三个在windows命令行会比第二个多一个“临时”只是因为windows显示特性,和第二个并没有本质上的区别,都是临时地址。和第一个不一样的地方就在于他们俩的后64比特位经常更换。
因此为了安全起见,我们在假定黑客不知道你域名的情况下得到了你的地址,那么如果你的地址在他实行攻击前越早更换肯定越好。因此我们使用第二或第三个地址作为我们的解析对象。
在ddns-go里找到ipv6,勾选启用,在ip获取方式选择通过网卡获取,选择你在cmd看到的网卡名,使用正则表达式选择你的地址。比如我想用上面看到的第三个“临时IPV6地址”,那么就就输入@3
。域名就写你购买的域名或子域名。我这里就以子域名v6为例设置
v4地址解析
在cmd使用ipconfig
查看你的内网ip地址。如果你在校园网,可能是10.96
或10.98
开头
接着来到ddns-go,勾选启用,在ip获取方式选择通过网卡获取,选择你在cmd看到的网卡名,域名就写你购买的域名或子域名。我这里就以子域名v4为例设置
生效需要一点时间,等待十五分钟左右后即可生效。可以使用ping 你的域名
或ping -6 你的域名
测试
密码凭证保存与开始使用
由于windows极为“特别”(狗屎)的登录验证机制,要想在RDP正常使用你的windows,要先搞清你的电脑上登录的账户类型
windows账户类型分为好几种,一种是在线登录式的微软账户,这种情况的可能性最大,也是我自己的情况。
winodws hello登录
这是最常见的登录方式,你的win 10/11电脑打开到锁屏界面只需要输入密码不需要输入用户名的登陆方式就叫windows hello
。这种方式登录的密码是完全独立与任何windows系统用户的,所使用的密码不能用登录远程桌面,这玩意就是微软对mac os与linux简洁的用户结构拙劣模仿后产下的一坨答辩(恼
微软账户登录
同样以windows 11为例,在设置->账户->账户信息
里可以看到你的账号类型
如果显示microsoft账户,那么你的账户类型就是上面所说的在线登录式的微软账户。点击这个页面下面的账户按钮
就可以在浏览器进入到在线账户的管理页面,如果你不记得这个在线账户的登陆密码,需要你自行修改成你知道的密码。注意,这和你打开电脑后锁屏登录页面使用的windows hello密码是两个完全不相关东西。
接着,打开任务管理器,点击一旁的用户按钮,查看你的用户名
括号里的就是你一会儿远程登录用的账户名。注意,是括号里的不是括号外的,括号外的是你的姓名不是账户名。例如我这里是邮箱地址,那么用户名就是邮箱地址。如果你是别的,那就以你自己括号里的为准。
接着,来到这个页面
如果你看到登陆方式里有密码这一项,就像上图这样,那么恭喜你,你不需要做下面的步骤,直接跳转到使用阶段即可。
如果你没有,那么你就需要在点击win键后点击用户名,点击注销
注销后点击“登陆选项,选择”使用microsoft账号密码”,用上面的用户名和密码登录,此时回去看一下有没有出现“密码”这个选项,如果有那么同样恭喜你可以跳过下面的步骤,直接到使用阶段了。
如果你还是没有,登录后打开cmd,运行下面这段代码
runas /u:MicrosoftAccount\your@email.com cmd.exe
记得替换你自己的邮箱地址。接着根据提示操作完重启即可
本地账户登录
如果你不想使用上面这样的方式登录远程控制,就需要点击这个按钮,修改为本地账户登录。
但要注意,修改完后**依然不能使用你的windows hello密码登录**,你得单独为你的本地账户设置一个密码。不过本地账户相比微软在线账户唯一的缺点应该就是可以在使用一些微软产品(如office)时会有登录不便的麻烦,别的倒也没什么不一样的
至此,如果你的使用环境是“校园网内”或"使用手机热点连接等有ipv6的场景",你就已经可以开始愉快的使用了,下面的步骤对你而言是非必要的。如果你想知道你的使用环境支不支持ipv6,可以用这个网站测试一下:IPv6 测试
v4环境搭建(非必要)
最近比较忙,还没空复现一遍搭建过程,持续更新…
使用
windows 7及以上
在win键打开mstsc.exe或“远程桌面连接”
接着输入你的域名和端口即可,像下面这样。如果你使用3389端口,可以省略输入端口号,只需要输入域名即可。(校园网内禁用了3389)
mac os & ios & android
在所在平台的应用商城搜索这个软件
这个软件就是以前的microsoft remote desktop
,功能是一模一样的。安装后启动,点击添加
根据我下面填写即可。名称填你的域名,友好名称可以填这台电脑的备注
然后对新建好的图标双击即可连接。
linux
可以使用rdesktop或remmina,就不演示了