一、简介
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
项目地址:
https://github.com/fatedier/frp
release版本下载:
https://github.com/fatedier/frp/releases
部署时可以使用源码编译获取直接下载release版本。
frp使用时,需要部署服务端(frps)和客户端(frpc),服务端应该具体公网IP,客户端通常部署到局域网内,通过frp可以使用公网IP访问到局域网内的设备,从而实现内网穿透、反向代理的功能。为避免出现兼容性问题,建议frpc和frps版本号保持一致。
根据部署环境不同(windows或linux,x86或arm),也要注意根据运行平台选择对应的版本。
二、frps部署
frps部署在阿里云,下载frp版本为:frp_0.40.0_linux_amd64.tar.gz
1、部署应用程序
解压后文件如下图所示:
frp_0.40.0_linux_amd64
├── frpc
├── frpc_full.ini
├── frpc.ini
├── frps
├── frps_full.ini
├── frps.ini
├── LICENSE
└── systemd
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
对服务端只需要使用frps、frps.ini、frps.service,需要部署到指定路径:
sudo cp frp_0.40.0_linux_amd64/frps /usr/bin/
sudo mkdir /etc/frp/
sudo cp frp_0.40.0_linux_amd64/frps.ini /etc/frp/
sudo cp frp_0.40.0_linux_amd64/systemd/frps.service /lib/systemd/system/
部署其他路径需要对应调整frps.service中的路径信息。
2、更新配置文件
部署完成后,需要根据自己环境修改配置信息。完成的配置信息可以参考frps_full.ini文件,常规配置信息如下:
[common]
bind_port = 7000 # 默认监听端口,可以修改
vhost_http_port = 80 # http服务默认端口,可以修改
vhost_https_port = 443 # https服务默认端口,可以修改
token = xxxxx # 用于服务端和客户端的验证,自行配置
dashboard_port = 7500 # dashboard配置信息,建议配置
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
log_file = /var/log/frps.log # 日志信息配置,可选
log_level = info
log_max_days = 3
3、运行管理
sudo systemctl start frps # 启动服务
sudo systemctl restart frps # 重启服务
sudo systemctl stop frps # 停止服务
sudo systemctl status frps # 查询状态
sudo systemctl enable frps # 使能开机自启动
sudo systemctl disable frps # 失能开机自启动
sudo journalctl -u frps -f # 查询运行日志
三、frpc部署
frpc部署在树莓派(32位),下载frp版本为:frp_0.40.0_linux_arm.tar.gz
1、部署应用程序
解压后文件如下图所示:
frp_0.40.0_linux_arm
├── frpc
├── frpc_full.ini
├── frpc.ini
├── frps
├── frps_full.ini
├── frps.ini
├── LICENSE
└── systemd
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
对服务端只需要使用frpc、frpc.ini、frpc.service,需要部署到指定路径:
sudo cp frp_0.40.0_linux_arm/frpc /usr/bin/
sudo mkdir /etc/frp/
sudo cp frp_0.40.0_linux_arm/frpc.ini /etc/frp/
sudo cp frp_0.40.0_linux_arm/systemd/frpc.service /lib/systemd/system/
部署其他路径需要对应调整frpc.service中的路径信息。
2、更新配置文件
部署完成后,需要根据自己环境修改配置信息。完成的配置信息可以参考frpc_full.ini文件,常规配置信息如下:
[common]
server_addr = xxx.xxx.xxx.xxx # frp service服务器IP
server_port = 7000 # frp service监听端口
token = xxxxxx # 需与服务端保持一致,才能连接
[ssh_22000] # ssh服务
type = tcp
local_ip = 127.0.0.1
local_port = 22 # 设备ssh服务端口号
remote_port = 22000 # 基于frp访问该设备时应指定的端口号
[web_22000_01] # web服务
type = http
local_ip = 127.0.0.1
local_port = 10000 # 设备提供服务的端口
custom_domains = web.22000.01 # 访问域名,若无备案,需要把该域名添加到访问设备的hosts文件中
[web_22000_02] # web服务,第二个
type = http
local_ip = 127.0.0.1
local_port = 10000 # 设备提供服务的端口
custom_domains = web.22000.02 # 访问域名,若无备案,需要把该域名添加到访问设备的hosts文件中
3、运行管理
sudo systemctl start frpc # 启动服务
sudo systemctl restart frpc # 重启服务
sudo systemctl stop frpc # 停止服务
sudo systemctl status frpc # 查询状态
sudo systemctl enable frpc # 使能开机自启动
sudo systemctl disable frpc # 失能开机自启动
sudo journalctl -u frpc -f # 查询运行日志
四、使用说明
-
查看frp运行状态
默认dashboard的端口号为7500,可以使用服务器地址加端口号的方式访问frp的dashboard,如:
-
1-Service 对应 n-Client
frps的一个进程对应一个frp service,可起多个进程提供frp服务。
对于frp的一个service也支持多个client使用连接,但client的配置文件中[ssh] [web]名需要保持唯一。 -
自定义域名解析
frpc的web服务中,需要提供自定义域名,若无已备案域名,可以将自定义域名添加到访问设备的hosts文件(映射为服务器IP),用于web服务的内网穿透/代理。