Frp 是一个高性能的反向代理应用程序,它可以帮助您轻松地管理内网中的服务,并且可以将这些服务暴露给公网。Frp 的主要作用是实现内网穿透,使外网用户能够访问内网中的服务。下面是一些 Frp 的应用场景:
- 内网穿透:通过 Frp,您可以将内网中的服务暴露到公网上,例如 Web 服务器、FTP 服务器、SSH 服务器等。
- 内网远程桌面:Frp 可以让您在外网使用远程桌面连接到内网中的计算机,方便远程管理和维护。
- 构建云计算平台:Frp 可以帮助企业构建私有云环境,提供虚拟机、存储和计算资源等服务。
- 网络监控:Frp 可以用于搭建网络监控系统,通过端口转发将监控服务暴露到公网上,方便管理员远程查看。
总之,Frp 是一款十分实用的工具,可以帮助企业和个人轻松地管理和访问内网中的服务。
官网:https://github.com/fatedier/frp/releases/tag/v0.48.0
官方文档:https://gofrp.org/docs/setup/systemd/
一、背景
使用todesk个人版(免费)连接远程桌面(win10、win11),在网络环境比较差的情况下,使用起来很不友好,于是就想使用frp这个工具了。
二、前提
服务器需要开放安全组规则
例如以我的阿里云服务器为例
具体如何配置请参考:
frp实现思路:
首先先明确服务端和客户端是什么?
FRP 中服务端(Server)和客户端(Client)是指 FRP 这个工具的两个不同角色。
服务端是 FRP 的远程服务器,它运行在公网上,并且通常被用来提供内网穿透功能。当您需要从外部网络访问内部网络的设备时,可以在公网上部署一个 FRP 服务端,通过配置相应的映射规则,将来自公网的请求转发到内网设备上。
客户端是 FRP 工具的本地组件,它运行在需要被访问的内部网络设备上,并与远程服务端建立连接。客户端会向服务端注册自己的身份信息,并定期向服务端发送心跳包以保持连接。一旦客户端成功连接到服务端,外部网络就可以通过服务端访问客户端所在的内部网络设备。
三、环境安装
在 Linux 系统下使用 systemd 控制 frps 及配置开机自启
这里以Linux服务器(centos)为例,
2.1 安装 systemd
yum install systemd
2.2 创建并编辑 frps.service
文件(使用vim编辑器)
vim /etc/systemd/system/frps.service
2.3 写入内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
# 例如我解压后的frp安装包在此路径下 /root/frp/frps
# ExecStart = /root/frp/frps/frps -c /root/frp/frps/frps.ini
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
如下图:
上面三步可以参考:https://gofrp.org/docs/setup/systemd/
2.4 下载解压安装包
方式一:
在已经创建好的 /root/frp目录下,执行下面的命令即可下frp安装包:
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_arm64.tar.gz
方式二:
下载地址:https://github.com/fatedier/frp/releases
Linux版(centos),下载如下图版本:
将frp的linux包传递Linux服务器的自定义目录下
例如:
放在/root/frp/目录(文件夹)下,然后解压此文件frp_0.48.0_linux_amd64.tar.gz
tar -zxvf frp_0.48.0_linux_amd64.tar.gz
然后对其命名:
mv 原文件名 修改后的文件名
mv frp_0.48.0_linux_amd64 frps
或者直接解压并重新命名
2.5 配置服务端(服务器)
在解压frp安装包后的文件夹下对文件进行配置:
例如:frp解压在/root/frp/frps/目录下
对frps.ini文件进行配置
vim frps.ini
输入内容:
[common]
# 服务端端口
bind_port = 7000
binf_addr = 0.0.0.0
bind_udp_port = 7000
authentication_method = token
# 认证Token的值包含字母大小写数字等
token = 自定义token
# 可视化面板
dashboard_user = admin
# Dashboard密码
dashboard_pwd = 123456
dashboard_port = 7500
保存配置并退出 :wq
使用 systemd
命令,管理 frps
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
配置 frps 开机自启:
systemctl enable frps
贴一张可视化面板图:
2.6 配置客户端frp
自定义一个文件夹解压
2.6 配置客户端(win10本机)
在解压frp安装包后,进入找到frpc.ini配置文件并使用文本编辑器打开
配置如下:
# 全局配置
[common]
# 服务端公网ip
server_addr = 你的服务端公网ip地址,自行修改
# 服务端端口
server_port = 7000
authentication_method = token
token = 自定义token
# 反向代理的名称,可以随意设置
[RDP]
# RDP 是 TCP 协议的
type = tcp
# 本机 IP
local_ip = 127.0.0.1
# 远程桌面的默认端口
local_port = 3389
# 外网访问的端口
remote_port = 7001
注意:服务端的配置的token与客户端配置的token需要保持一致。
参考:https://cloud.tencent.com/developer/article/1710141
在目录下输入cmd回车,然后运行frpc.exe
如图所示:
就此配置完成
接下来就连接远程桌面了
2.7 连接远程桌面
如下图所示:
计算机为你服务端的ip地址加端口
例如:139.224.12.12:7001 (远程访问端口)
由于我电脑使用的微软邮箱,用户名就为 [email protected],密码对应微软邮箱密码
如果你使用的是本地账号登录,那用户名就是你本地的那个用户名,密码就是开机密码。
如果不想使用ip地址,可以将ip地址绑到域名上,或不想输入端口,可以进行反向代理
总结
总之,frp不仅仅只是玩远程桌面,还可以玩内网穿透、渗透等。
附件
参考1:https://cloud.tencent.com/developer/article/1710141
参考2:https://www.cnblogs.com/zhanggaoxing/p/9221705.html
阿里云官方地址:https://account.aliyun.com/login/login.htm