什么是FRP?
FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。
FRP有服务端和客户端,你将服务端安装在你买的便宜云服务器上,FRP客户端安装在你自己的电脑上,配置好暴露的端口,就可以实现你访问服务器ip:指定的端口,就会被转发到本地的电脑上,这样就可以利用本地的高性能机器
它可以做什么?
使用FRP可以实现在家里搭建自己的网站,个人网盘,远程访问自己的电脑,流媒体服务器等
将云服务器当frp服务端,客户端为windows电脑
客户端为liunx教程在下面
下载frp文件,因为服务端是linux环境,而客户端是windows环境,因此需要下载两个文件,项目地址:GitHub
下载好后,各自解压,解压后打开liunx文件的目录放置如下文件
服务器端配置frps
配置文件名称:frps.ini 这里为解释,实际并不需要配置这么多
[common]
bind_addr = 0.0.0.0 # 默认为0.0.0.0
bind_port = 7000 # 绑定服务器的服务端口
# 注:KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果。
# kcp_bind_port = 7000
# frp服务端和客户端通过bind_port端口进行认证的token,服务端和客户端都要一样
token = 12345678
# 如果客户端配置了type=http,则服务端必须设置vhost_http_port否则客户端的frp连接不上(可选)
# 注意:http端口和https端口可以与“bind_port”相同
vhost_http_port = 80
vhost_https_port = 443
# dashboard_addr默认和bind_addr相同
# frpweb统计界面 当dashboard_port被设置后,dashboard才可用
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and passwd for basic auth protect, if not set, both default value is admin
# 用于登录验证dashboard的账号和密码,如果不设置,账号和密码的默认值都为admin
dashboard_user = admin
dashboard_pwd = admin
实际配置如下即可
[common]
bind_port = 7000
token = 12345678
开启frpweb统计界面
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
内网机器端配置frpc
配置文件名称:frpc_full.ini
# [common]是不可缺少的部分
[common]
bind_addr = 0.0.0.0
server_addr = 0.0.0.0 # 注:连接frps服务器的地址
server_port = 7000 # 注:连接frps服务器的端口
token = 12345678 # 身份验证token值
# 通过http api,例如重载,为控制frpc操作设置管理地址
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
# 目前支持tcp,kcp和websocket,默认是tcp
protocol = tcp # 用于连接服务器的通讯协议
[ssh]
type = tcp # type的类型包含tcp,udp,http,https,stcp,xtcp,默认是tcp
# 注:相对于frpc部署机器,想使用穿透功能的其他机器IP,需要frpc机器可访问到
# 注:如果想让frpc部署机器可连接的其他机器穿透,这里可以写对应机器的IP地址
local_ip = 127.0.0.1
# 注:ssh服务的端口
local_port = 22
实际配置如下即可
[common]
server_addr = 公网ip
server_port = 7000
token = 12345678
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 5000 #本地程序运行的端口
remote_port = 5000 # 本地5000端口映射的远程服务器的端口,后续通过公网ip:remote_port去访问到本地的服务
custom_domains = 公网ip
服务端后台运行
在/lib/systemd/system目录下创建一个文件frps.service
内容如下:
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini
[Install]
WantedBy=multi-user.target
#然后就启动frps
sudo systemctl start frps
再打开自动启动
sudo systemctl enable frps
重启应用
sudo systemctl restart frps
停止应用
sudo systemctl stop frps
查看应用日志
sudo systemctl status frps
将frps相关的文件传到服务器某个路径下去,然后运行
./frps -c ./frps.ini
打开公网ip:7500(7500为frps.ini中的dashboard_port)能看到界面即代表服务端启成功
在windows目录中运行
frpc.exe -c frpc.ini
至此frpc连接成功,公网ip:5000 即可访问到你本地的5000端口的服务中去
将云服务器当frp服务端,客户端为linux
步骤跟上面一样,只是不需要下载frp的windows文件,同样的配置,在本地的linux中通过如下命令启动即可
./frps -c ./frps.ini