解决问题的关键:开源项目frp
发展历程
- 在内网环境中出门不想要带电脑,希望能够免费实现远程控制
- 离开内网环境还希望使用远程控制
- 离开内网环境仍然希望使用内网资源,但是同时用不想使用官方的VPN,希望自建隧道
- 管理登录信息,做好未授权登录溯源准备
frp配置
frp是本套方案的核心,作为go语言编码的程序,frp适用于所有平台,在本次案例使用中,将主要使用tcp和stcp,官方参考文档
frp是一个内外穿透的解决方案,用来对抗大内网环境下多层Nat不同环境下的设备无法直接通信的的问题,实现原理就是通过内网设备不断向一个具有公网IP的服务器发送数据来保持连接,当需要内网穿透的时候,就把内网的某个特定端口0数据发送到该服务器的特定端口上1,由该台服务器进行转发到另一个特定端口2;而当特定端口2收到数据后,就会原封不动的进行转发到内网设备的特定端口0上
模式区别
- TCP:顾名思义,就是代理内网的端口数据传输层都是使用tcp,例如本文中提到的对于VNC,RDP都是使用了tcp进行传输。而下文出现的http模式本质也是在传输层使用了http,所以对于需要穿透多个http服务,也可以使用tcp模式
- STCP:就是给tcp数据包进行加密,就要求在内网穿透的两台设备:提供安全的 TCP 内网代理,要求在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。这样可以在一定程度上保证信息传递的安全性,然而由于是静态对称密钥并且多层NAT中转服务器不可能被全部信任,传输的信息也并不是绝对安全。而且由于加密解密,可能会出现卡顿的情况。
- UDP:穿透端口的服务使用udp
- SUDP:提供安全的 UDP 内网代理,与 STCP 类似,需要在被访问者和访问者的机器上都部署
- HTTP:专为 HTTP 应用设计,支持修改 Host Header 和增加鉴权等额外功能。
- HTTPS:类似于 HTTP 代理,但专门用于处理 HTTPS 流量。
- XTCP:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。但实际上在多层NAT的国内环境下,该模式的使用条件严重受限
- XTCP:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。
启动命令
对于个平台下的frp都需要使用命令行进行启动:应用 + 参数 + 配置文档
- Linux
1 | ./frpc -c ./frpc.toml |
- Windows
1 | .\frpc -c .\frpc.toml |
9
内网远程桌面
本文使用了VNC和RDP进行实现远程桌面
选择VNC服务的时候使用了VNC server当然tigerVNC也不愧为一个好选择,本文只介绍VNC server
Windows实现免休眠
系统免休眠
win + r输入control打开控制面板,切换路径:控制面板\硬件和声音
编辑电源选项
更改计算机睡眠时间,设置为插电状态下永不熄屏
切换路径:控制面板\硬件和声音\电源选项\系统设置 ,在其中关闭启动快速启动
可以进一步设置,合上盖子后不休眠,设置操作为不进行任何操作
就可以实现合上盖子之后仍然使用远程桌面。
然而实际上合上盖子之后会认为屏幕停止工作而无法使用vnc,所以需要购买显卡欺骗器或者是安装驱动实现一个虚拟屏幕的作用。
我本人更加推荐显卡欺骗器,主要是因为功耗的原因,当然具体的功耗差异也并没有下功夫实际去测量过
这两种方法使用之后使用sunshine进行串流使用其他设备当副屏时也是一个很好的选择。
网卡免休眠
- win + r 呼出运行,输入devmgmt.msc打开设备管理器
- 在网络适配器中找到对应网卡,打开属性
- 在电源管理标签中取消允许计算机关闭此设备以节约电源
- 但是默认并不能找到这个标签,打开cmd输入以下命令即可出现该页面,如何执行2-3
1 | reg add HKLM\System\CurrentControlSet\Control\Power /v PlatformAoAcOverride /t REG_DWORD /d 0 |
realVNC服务端下载:
- 官方网址
- [学习者测试版本私链下载](链接: https://pan.baidu.com/s/1C3R0gfQVsw75ECwiwvGhqw 提取码: 4svv 复制这段内容后打开百度网盘手机App,操作更方便哦)
激活码:FBV9V-7Z3V9-MED3U-47SEU-85T3A
VNCViewer下载
作为远程访问软件,VNCViewer支持远程控制所有使用VNC服务的设备
- 安卓端:GooglePlay下载,[私链下载](D:\a数据\微信数据\WeChat Files\wxid_aeqbo6bvn0r222\FileStorage\File\2024-07)
- Windows端:私链下载:[①](链接: https://pan.baidu.com/s/12vct5MEDoBORnaU26cl1DQ 提取码: vcat 复制这段内容后打开百度网盘手机App,操作更方便哦),[②](链接: https://pan.baidu.com/s/1wgyn-e4j9dQhC4ed9MtfTg 提取码: 24fe 复制这段内容后打开百度网盘手机App,操作更方便哦)
- ios端:AppStore下载
RDP实现
实现条件
Windows专业版
打开指南:
设置 - 系统 - 远程桌面
若是非专业版:
- 按照提示正常进入商店页面升级Windows版本选择“开始”>“设置”>“系统”>“激活”。
- 在“激活”页面顶部,可以看到你的版本:家庭版或专业版。 你还将在“激活状态”下看到是否已激活。
- 选择使用产品密钥进行升级,百度参考:①,②,③
突发情况解决:
对于Windows的某些版本,可能出现密钥验证通过但是无法激活
- 断网激活:
在最后的激活步骤的时候关闭网络,尝试离线激活,但是如果重启后显示为未激活的专业版则需要见2 - 使用代码进行激活:
新建一个文本文档,粘贴以下代码并且填入专业版密钥后修改文件格式为.bat,双击运行
1 | slmgr /ipk <粘贴密钥> |
会出现小窗页面,一路确定即可
启动RDP
在设置中搜索远程桌面并且打开
安全解决情况
端口修改
各类扫描工具中的快速扫描都会对于这些端口进行着重扫描,若是想要避开扫描工具的全网段快速扫描行为,就务必要对端口进行修改建议端口修改范围为:10000 - 65536,并且应该尽量避开大整数的端口
- 修改端口后需要手动开放防火墙端口
设置 - 隐私和安全中心 - Windows安全中心 - 打开Windows安全中心 - 防火墙和网络程序保护
打开高级设置
编辑出入站规则,添加对应应用程序和希望自定义的端口
在以下的修改端口操作完成后,想用访问设备,由于不是默认端口,需要手动指定端口,因此在输入IP地址的时候需要手动添加端口,例如IP为127.0.0.1,端口为13389则
1 | 127.0.0.1:13389 |
- VNC的默认端口为5900,在options - Connections - Port中进行修改
- RDP的默认端口为3389
- win + r输入regedit打开注册表
- 依次在注册表左侧找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP-Tcp
- 右侧找到Portnumber,默认端口为3389
- 双击打开,用十进制修改为目标端口
登录日志查看
VNC Server
win+r输入eventvwr.msc
或者win搜索事件,进入windwos事件查看器
导航到Windows 日志 → Application(应用程序日志)
使用功能: 查找 -> VNC Server
发现对应的登录事件ID是 256
筛选当前日志
RDP 登录日志
使用win+r打开运行键入eventvwr.msc
打开事件查看器
导航到:应用程序和服务日志 --> Microsoft --> Windows --> TerminalServices- RemoteConnectionManager
,右键单击Operational并选择筛选当前日志。
远程事件id: 1149, 其他同上