使用 FRP 实现在家远程桌面到公司内网进行远程办公

由于安全等原因,一些公司对于 VPN 访问内网的权限也非常慎重。这就导致在公司外很难进行完整的内网访问。

好用的商业远程控制软件在未购买的情况下,在企业内部基本都是禁止使用的,即使可以使用也会对企业带来被起诉的风险。

一种简单的方式是通过两个 QQ 设置自动接受远程控制进行。这种方式被许多人采用,但它有个弊端是桌面不能锁屏,必须设置常亮。这会带来电脑重要文件泄露的风险。

1 什么是 FRP

来自官方文档的解释:

FRP 是一个可用于内网穿透的高性能的反向代理应用。借助中间服务代理转发,可以实现各种内网穿透功能。

我们这里只介绍使用 FRP 实现远程桌面配置的具体操作步骤。其中服务器为 CentOS 7 ,客户端为 Window 10 ,控制端随意,可以使用 window 的 mstsc 远程连接即可。

注意一个前提:

需要拥有一台公网服务器或 VPS 用于部署服务端进行服务转发。

当然,如果你的路由器为只能路由器的话,也可以配置家庭电脑对外开发公网服务(注意,理论上在国内这是非法的,对外开放公网服务需要备案)。

2 服务端安装与配置

安装 frp:

# 下载 frp 0.31.1 版本。注意下载的版本与服务器系统架构要相符
wget https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_linux_arm64.tar.gz
# 使用tar指令解压
tar -zxvf frp_0.31.1_linux_amd64.tar.gz
# 进入解压出来的文件夹
cd frp_0.31.1_linux_amd64

修改服务器配置文件 frps.ini

vi frps.ini

例如这里希望配置,内容参考:

[common]
# 要绑定的端口
bind_port = 7700
# 安全授权 token
token = 12345678

# 控制台的用户名
dashboard_user = lzw.me
# 控制台的密码
dashboard_pwd = password
# 控制台的端口
dashboard_port = 7750

# http 和 https 端口
# vhost_http_port = 80
# vhost_https_port = 443
# 连接认证 token
# token = 123456

在当前目录下输入如下命令启动服务端服务:

 frps -c frps.ini 

如果希望断开 ssh 后依然在后台运行,可以使用 screen 命令启动服务端:

 screen frps -c frps.ini 

当然,我们也可以设置 frps 服务开机自启动,方法参考如下。

创建后台启动服务文件:

 vi /etc/systemd/system/frp.service 

内容参考如下:

[Unit]
Description=frps
After=network.target

[Service]
ExecStart=/root/frp_0.31.1_linux_amd64/frps -c /root/frp_0.31.1_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

相关操作命令参考:

# 启动测试
systemctl start frp.service
# 查看启动状态
systemctl status frp.service
# 开机自启
systemctl enable frp.service

当服务端启动后,可以通过 dashboard_port 的端口号访问控制台。如: http://1.2.3.4:7750

3 客户端安装与配置

3.1 客户端安装与配置 frp

如果客户端是 linux 或 macOs,安装流程和服务端基本一样。如果是 windows,可以直接下载对应客户端:

macOs 的下载地址: https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_darwin_amd64.tar.gz

windows 的下载地址: https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_windows_amd64.zip

解压缩下载的文件,并进入文件夹。打开并编辑客户端配置文件 frpc.ini 。内容参考:

[common]
# 服务器的 IP
server_addr = 1.2.3.4
# 服务器上设置的服务绑定端口(frps.ini 中的 bind_port)
server_port = 7700

# 与服务端设置一致
token = 12345678

[RDP] ;这个是反向代理的名称,可以随意设置
# RDP 是 TCP 协议的
type = tcp
# 本机 IP
local_ip = 127.0.0.1
# 远程桌面的默认端口
local_port = 3389
# 外网访问的端口
remote_port = 7701
# 外网访问的域名,建议配置
# custom_domains = frp.lzw.me

# [ssh]
# type = tcp
# local_ip = 127.0.0.1
# local_port = 22
# remote_port = 6000

# [nas]
# type = http
# local_port = 5000
# custom_domains = no1.sunnyrx.com

# [web]
# type = http
# local_port = 80
# custom_domains = no2.sunnyrx.com

在当前目录下打开 cmd 或 powershell,输入如下命令启动客户端服务:

frpc -c frpc.ini

3.2 客户端开启远程桌面

望将客户端设置为允许被远程控制。方法为: 右击“此电脑”,选择“系统”——“远程设置”——“允许远程连接至此电脑”。

4 控制端远程连接客户端

在控制端电脑上搜索并打开“远程桌面连接”软件,输入 “服务器 IP:外网访问端口”。例如,按照以上服务端与客户端的示例配置,我们这里应该填入: 1.2.3.4:7701 。如果一切正常,会顺利弹出输入账号和密码的输入框。输入客户端电脑的用户名与密码即可进入其桌面。

5 相关问题参考

5.1 一些提示或建议

  • 安全起见,避免被工具使用默认端口扫描。应自定义各种端口号,不要使用默认的或以上示例的端口号配置
  • more…

5.2 服务端启动报错

/frpc: cannot execute binary file: Exec format error

这是下载错文件了,下载的 FRP 与操作系统架构不匹配,需要重新下载正确的文件。

使用 arch 命令查看系统架构。如:

$ arch
# 输出
x86_64

Linux 系统架构参考:

386 X86架构
386 X86架构
amd64 amd架构
arm arm架构
arm64 64位arm架构
mips mips架构
mips64 64位mips架构
mipsle mipsle架构
mips64le 64位mipsle架构
我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章