内网穿透利器:通过frp来实现远程桌面控制(RDP)

内网穿透

内网穿透(本文使用frp来搭建)旨在允许外网设备能够与内网设备进行通信,我们知道在计算机网络中,可以用ip来标识一个联网的设备,设备间的通信就通过IP来建立连接。目前广泛应用的IPv4协议使用32个bit位作为IP地址,这样整个IPv4的地址空间就有232个,也就是4294967296个,42亿多看起来是个很大的数字,似乎全世界都用不完,IETF当年也是这么想的,但他们远远低估了互联网的发展速度,随着智能手机、物联网等技术的发展,互联网中的终端数量爆炸式增长,IPv4的地址早在2011年就消耗殆尽。尽管拥有128bit的IPv6已经制定完毕,不过时至今日仍然没有普遍应用,为了应对IPv4地址不足的问题,几十年来也涌现出了诸多技术,如NAT、DHCP、CIDR等等。其中NAT完成了一个公网IP到局域网的地址转换,但也使得我们无法在公网通过指定IP访问局域网的设备。

内网穿透借助一个拥有公网IP的代理服务器来实现,具体来说让内网的主机主动与代理服务器建立通信,并将代理服务器的某个端口映射至内网主机,在公网访问代理服务器端口的流量就会被转发至内网主机,从而实现在公网访问内网设备的效果。

花生壳内网穿透原理示意图

frp

frp是一个开源、跨平台的快速反向代理,可以将NAT或防火墙后面的设备暴露在公网上,它支持TCP和UDP协议,以及其它变种,如XTCP、STCP等,同时frp也支持P2P模式,流量不经过代理服务器转发,而是直接与内网设备进行点对点的通信。

配置部署

在github可以下载frp的最新发行版,提供了linux、windows、macos等平台的不同版本,按需下载即可,下面以linux平台作为代理服务器,windows平台作为内网主机的情景为例介绍frp的部署流程。

配置代理服务器

代理服务器使用腾讯云的轻量级应用服务器,带宽为3Mbps。

  • 首先访问Releases · fatedier/frp (github.com),下载 frp_0.52.3_linux_amd64.tar.gz 压缩包并上传至服务器中
  • 将压缩包解压至frp部署目录,tar -xzf frp_0.52.3_linux_amd64.tar.gz -C /usr/local
  • 解压后的文件夹包含五个文件,分别是frpsfrpcfrps.tomlfrpc.tomlLICENSE,在服务器我们只需要frpsfrps.toml即可
  • 使用编辑器打开frps.toml(frps的配置文件),设置frp客户端连接的端口,默认为7000
# frps.toml
bindPort = 7000
  • 在服务器上启动frps,进入目录执行./frps -c ./frps.toml

配置客户端

内网主机为windows系统

serverAddr = "x.x.x.x"
serverPort = 7000


[[proxies]]
name = "RDP"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6000
  • 在内网主机上启动frpc,目录下执行./frpc -c ./frpc.toml

开机启动

Linux:systemctl

/lib/systemd/system/下新建名为frps.service的文件,填写以下内容

[Unit]
Description=Frp Server Service
After=network.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
# 替换root为实际安装路径
ExecStart=/root/frpc/frpc -c /root/frpc/frpc.ini
[Install]
WantedBy=multi-user.target

保存后使用下面的命令来控制程序的状态

$sudo systemctl start frpc 
$sudo systemctl enable frpc

$sudo systemctl restart frpc
$sudo systemctl stop frpc
$sudo systemctl status frpc

windows:计划任务和vbs

frpc所在目录下新建文本文件,重命名为start.vbs,使用记事本编辑如下:

Set WinScriptHost = CreateObject("WScript.Shell")
'将下面的目录替换成frpc的实际目录
WinScriptHost.Run Chr(34) & "D:\Program Files (x86)\frp_0.52.3_windows_amd64\frpc.exe" & Chr(34) & " -c " & Chr(34) & "D:\Program Files (x86)\frp_0.52.3_windows_amd64\frpc.toml" & Chr(34), 0
Set WinScriptHost = Nothing

win+s,在搜索框中输入任务计划程序并打开,点击左侧创建任务

输入计划名称,选择不管用户是否登录都要运行,切换到触发器选项卡,新建触发器并选择启动时

切换到操作选项卡,新建操作,并选择启动程序,点击浏览,找到vbs启动脚本后点确定完成设置即可。

使用

使用微软的远程桌面添加电脑,输入代理服务器的ip和端口以及内网主机的用户名即可建立连接,验证账户用户密码后就可以开始畅快的远程控制啦

暂无评论

发送评论 编辑评论


				
上一篇
下一篇