内网穿透+远程控制:frp+mstsc+stcp

**注意,下文种的token、sk、各种端口,用户名必须要自行替换
注意,下文种的token、sk、各种端口,用户名必须要自行替换
注意,下文种的token、sk、各种端口,用户名必须要自行替换**

购买,搭建公网vps

略,服务器系统使用的是centos 7

服务端安装frp

进入vps后:

官网下载frp

在:https://github.com/fatedier/frp/releases上下载相应版本,这里使用的是0.36.2:

wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz

解压frp压缩包

tar -xzvf frp_0.36.2_linux_amd64.tar.gz

更改文件夹名并进入文件夹

mv frp_0.36.2_linux_amd64 frp
cd frp

删除无用文件

rm -rf frpc*

编辑配置文件

vi frps.ini

修改配置文件

bind_port = 7000

authentication_method = token
token = 123456789

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
bind_port:客户端和服务端连接的端口,在之后配置客户端时会用上,一般默认即可。
dashboard_port:服务端仪表板的端口,一般默认即可。如果按默认设置为 7500,则可通过 7500 端口访问仪表盘(例如 服务器
IP:7500),查看 frp 状态。 token:客户端和服务端连接的口令,请自行设置。 dashboard_user /
dashboard_pwd:仪表盘用户名和密码,请自行设置。

运行frps

./frps -c frps.ini

创建后台启动模版

vi /etc/systemd/system/frps.service

粘贴入:
可能需要修改frp路径:

[Unit]
Description=frps
After=network.target

[Service]
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini 

[Install]
WantedBy=multi-user.target

启动测试

systemctl start frps.service

查看启动状态

systemctl status frps.service

开机自启

systemctl enable frps.service

Windows受控端设置(stcp)

下载frp的Windows对应客户端

在:https://github.com/fatedier/frp/releases上下载相应版本,这里使用的是0.36.2:

https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_windows_amd64.zip

Windows xp不支持新版go,xp下必须下载老版本的frp,如 0.20.0版:

https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_windows_386.zip

设置修改受控端配置文件:frpc.ini

解压后,frpc相关是客户端文件,是下面要用到的,frps属于公网上服务端用的(可以删除),
为了方便后面引用,这里直接创建一个frpc.ini的副本:frpc-stcp.ini

[common]
server_addr = 公网服务器ip
server_port = 7100
token=123456789

[secret_rdp]
type = stcp
sk = 987654321
local_ip = 127.0.0.1
local_port = 3389

受控端中frpc读取配置文件:

  • “[secret_rdp]”服务中,以stcp模式,把受控端本地的3389转发到服务器的frps上。(此处建议修改掉)
  • "sk"是stcp服务的密钥,两端中的"sk"不匹配,不允许连接。
  • 受控端stcp模式以服务名的形式匹配连接,不需要映射到公网IP的端口上,也不再需要remote_port。

创建个受控端bat批处理

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd D:\frp
frpc -c frpc_stcp.ini
exit

复制粘贴上述内容到记事本,然后修改frpc.exe所在路径,另存为:frp-stcp.bat ,文件类型修改为:所有文件,

双击运行frp-stcp.bat

如果属于长期使用,也可以创建个frp-stcp.bat 的计划任务,或直接在“启动”文件夹中创建个快捷方式。

可能遇到的问题

配置完后,无法连接上被控端

如开启frpc后,连接时报错:No connection could be made because the target machine actively refused it.
此时,1.先确认被控端是否开启 允许远程协助连接这台计算机
2.确认远程连接的端口是否有改动,或是否需要改动,可能需要用到下面这个RDPWrap-v1.6.2.zip
https://github.com/stascorp/rdpwrap/releases
右键 install.bat - 使用管理员身份运行。(一定要使用管理员身份运行!)
最后提示 Successfully installed 即可
然后双击打开 RDPConf.exe,检查服务运行状态以及端口号是否正确。
查看远程端口,或直接修改掉远程端口,修改完后重启下电脑。
然后再开启frpc。

Windows操作控制端设置

下载解压frp客户端

同上,下载frp的Windows对应客户端

修改操控端frpc.ini

同样为了方便后面引用,这里直接创建一个frpc.ini的副本:frpc-stcp.ini

[common]
server_addr = 公网服务器ip
server_port = 7100
token=123456789

[secret_rdp_visitor]
type = stcp
role = visitor
sk = 987654321
server_name = secret_rdp
bind_addr = 127.0.0.1
bind_port = 12345

控制端中的配置:

  • [secret_rdp_visitor]服务中"role=visitor"是指定本机的服务为"访问者"的stcp模式。
  • "sk"密钥。
  • 控制端中的“server_name”是指定要连接的受控端中的服务名,服务名必须一致。
  • 控制端中的"bind_addr"必须是"127.0.0.1"。
  • "bind_addr"、"bind_port"这两个参数是指本地端口。指定本地frpc转发要通过frps和受控端连接的本地端口。

创建个操控端bat批处理

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd D:\frp
frpc -c frpc_stcp.ini
exit

复制粘贴上述内容到记事本,然后修改frpc.exe所在路径,另存为:frp-stcp.bat ,文件类型修改为:所有文件,

双击运行frp-stcp.bat

如果属于长期使用,也可以创建个frp-stcp.bat 的计划任务,或直接在“启动”文件夹中创建个快捷方式。

操控端使用window自带远程桌面开始远程控制

  • win + r 键调出运行窗口,输入:mstsc,回车确认
  • 在打开的远程桌面窗口中输入ip+端口: 127.0.0.1:12345
  • 如果是自己的常用电脑,可以勾选“允许我保存凭据”,根据需要设置其他选项。
  • 另存为:xxx.rdp
  • 以后可以直接双击xxx.rdp开启远程桌面,并且省去输入计算机、用户等信息。

Mac端操控设置

MAC 需要使用 darwin_amd64 结尾的版本,我使用的是 frp_0.36.2_darwin_amd64.tar.gz

https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_darwin_amd64.tar.gz

wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_darwin_amd64.tar.gz    
tar -xzvf frp_0.36.2_darwin_amd64.tar.gz
mv frp_0.36.2_darwin_amd64 frp
cd frp

修改frpc.ini,参见上面的Windows操作控制端设置

配置个批处理用于开机自启

此处最好在“终端”下使用vi命令创建,之前使用Mac自带的文本编辑创建的sh文件运行时总报错。

在FRP文件夹下新建frpc.command文件

sudo vim frpc.command

写入frpc.command配置

#!/bin/bash
cd /Users/xxx/frp
./frpc -c ./frpc.ini &
exit

同时要修改frpc.command的权限,否则会提示运行报错。

chmod 755 ./frpc.command

配置开机启动

  • 系统偏好设置 - 用户和群组 - 当前或准备设置的用户 - 底部解锁 - 在登录项种加入刚才的frpc.command
  • 同时为了终端-偏好设置-描述文件-shell-当 shell 退出时 关闭。

安装微软的RDP远程桌面

有美区账号可以直接下载,没有可以去下载Beta版:https://install.appcenter.ms/orgs/rdmacios-k2vy/apps/microsoft-remote-desktop-for-mac/distribution_groups/all-users-of-microsoft-remote-desktop-for-mac
下载完直接安装,后和Win端一样做相应配置即可。

  • 开启frpc后,在服务器地址栏输入:127.0.0.1:12345
  • 输入受控端的用户名及密码进行连接

附注:

流程

  • frps启动,等着两端frpc的stcp转发配置。
  • 受控端frpc启动,读取配置文件:服务名[secret_rdp]以stcp模式,将本地的3389端口转发到frps上。
  • 控制端frpc读取配置文件和frps连接。
  • 控制端frpc的配置指定"sk"密钥和受控端的服务名,要frps把控制端本地12345端口和受控端的[secret_rdp]服务绑定上。
  • 控制端访问本地12345端口,请求被控制端的frpc转发到frps上,frps再将请求转发到受控端的[secret_rdp]服务上。
  • 受控端[secret_rdp]服务里也指明了受控端哪些端口来接收响应处理被转发请求。

控制多台不同的受控端

  • 修改受控端的服务器名([secret_rdp] 不同受控端,修改为不同的实例名)
  • 同时参考上面Window操控端设置,修改操控端的端口号及server_name
  • rdp远程桌面里:不同的受控端对应不同的端口号
添加新评论