赞
踩
frp 是一款高性能的反向代理
应用,专注于内网穿透
。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转
。
中文文档:https://gofrp.org/zh-cn/docs/
通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
frp 主要由两个组件组成:客户端(frpc
) 和 服务端(frps
)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps
,frp 负责根据请求的端口或其他信息将请求路由
到相应的内网机器
,从而实现通信。
在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。
frp 支持多种代理类型,以适应不同的使用场景。以下是一些常见的代理类型:
每种代理类型适用于不同的使用情境,您可以根据需求选择合适的代理类型来配置 frp。
演示frp安装和简单配置,用阿里云服务器(公网)作为服务端,本地Windows和本地Linux作为客户端实现内网穿透效果。
演示目的:
使用服务器的
3316
端口访问本地(Windows)的3306
端口
使用服务器的33022
端口连接本地(Linux)的22
端口(SSH)
由于frp功能和配置项比较多,有需要的可以直接去官网查看具体文档
1.下载安装包
本次演示使用安装包
Windows:https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_windows_amd64.zip
Linux:https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz
如果下载慢可以使用:百度网盘下载
其它版本下载地址:https://github.com/fatedier/frp/releases
2.上传压缩包到Linux服务器并修改配置文件
创建目录并上传压缩包,这里演示使用的安装目录为:/usr/local/frp
将压缩包上传到Linux服务器后解压到当前目录,然后进入解压后的文件夹目录
cd /usr/local/frp
tar -zxvf frp_0.57.0_linux_amd64.tar.gz
cd frp_0.57.0_linux_amd64/
修改服务端配置文件 frps.toml
[common]
# 服务端和客户端的TCP通信端口, 建议1024以上端口
bind_port = 7000
# 客户端访问服务端的密码
token = abcdefg
# 服务端仪表盘的端口, 可以用浏览器访问查看
dashboard_port = 7500
# 服务端仪表盘的用户密码
dashboard_user = frp
dashboard_pwd = frp123
# 日志保存设定, 保存位置、保存时长
log_file = ./frps.log
log_level = info
log_max_days = 7
启动命令(如果启动失败,需要先设置防火墙开放端口)
./frps -c frps.toml &
启动成功可以去浏览器验证一下仪表盘页面
仪表盘访问地址:公网IP:[刚才配置的仪表盘端口]
输入刚才配置的用户名密码登录即可
至此服务器的安装配置和启动就完成了
解压下载好的zip文件,这个时候可能会出现病毒查杀,手动添加进信任区就可以了
进入解压好的文件夹,编辑 frpc.toml 配置文件
[common] # 服务端公网IP server_addr = [服务端公网IP] # 客户端访问服务端的密码 token = abcdefg # 客户端与服务端通信端口 server_port = 7000 [mysql] # 指定TCP连接类型 type = tcp # 客户端IP, 这里填本地IP就可以 local_ip = 127.0.0.1 # 表示客户端本地的端口号 local_port = 3306 # 表示服务端的代理端口号 remote_port = 3316
此配置文件的意思是将服务端的3316端口代理到客户端本地的3306端口
客户端启动命令
在当前目录下进入cmd命令行窗口执行启动命令
frpc.exe -c frpc.toml
OK,下面验证一下
然后服务器本地的MySQL服务是不受影响的,还是可以通过原来的端口访问
安装步骤与服务端基本相同,除最后一步修改文件不同
服务端修改的是 frps.toml
客户端修改的是 frpc.toml
[common] # 服务端公网IP server_addr = [服务端公网IP] # 客户端访问服务端的密码 token = abcdefg # 客户端与服务端通信端口 server_port = 7000 [range:ssh] # 指定TCP连接类型 type = tcp # 客户端IP, 这里填本地IP就可以 local_ip = 127.0.0.1 # 当前设备开放的远程连接端口, 默认为22 local_port = 22 # 表示服务端的代理端口号 remote_port = 33022 # 是否加密 use_encryption = true # 是否压缩 use_compression = false
此配置文件的意思是将服务端的33022
端口代理到本地虚拟机的22
端口,也就是可以通过服务端的33022
端口SSH
连接到本地虚拟机
启动客户端
./frpc -c ./frpc.toml &
OK,下面验证一下
可以通过仪表盘来监控连接情况
在 Linux 系统下,使用 systemd
可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
以下是具体的操作步骤:
安装 systemd
如果 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum
(适用于 CentOS/RHEL)或 apt
(适用于 Debian/Ubuntu)来安装它:
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
创建 frps.service 文件
使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frps 服务。
sudo vim /etc/systemd/system/frps.service
写入内容
注意替换路径和配置文件名称以匹配实际安装。
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
设置 frps 开机自启动
sudo systemctl enable frps
sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7500/tcp --permanent
sudo firewall-cmd --reload
案例使用的服务端安装在阿里云服务器,还需要到阿里云设置安全组,将端口添加到安全组中,仅供参考。
通常情况下,服务端
部署在具有公网
IP 地址的机器上,而客户端
部署在需要穿透的内网
服务所在的机器上。
服务端
# 服务端启动命令, & 表示后台运行
./frps -c ./frps.toml &
# 配置文件
frps.toml
客户端
# 客户端启动命令, & 表示后台运行
./frpc -c ./frpc.toml &
# 配置文件
frpc.toml
服务端和客户端比较容易混淆,输入命令的时候需要注意一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。