1.什么是frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
2.下载frp版本包
https://github.com/fatedier/frp/releases
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
下载好后,进入到下载文件的目录解压文件
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
mv frp_0.54.0_linux_amd64 frp
mv ./frp /etc/frp
#进入解压目录文件夹
cd /etc/frp
# 修改配置文件
vi frps.toml
bindPort = 9000
vhostHTTPPort = 9001
vhostHTTPSPort = 9002
transport.tcpMux = true
#身份验证
auth.method = "token"
auth.token = "admin"
#frp服务仪表板配置
webServer.port = 9003
webServer.addr = "172.16.133.146" #需要使用内网ip阿里云,不然绑定不了端口
webServer.user = "admin"
webServer.password = "admin"
关于参数的介绍可以去看
https://gofrp.org/zh-cn/docs/reference/common/#webserverconfig
启动frp服务端
#前台运行(关闭ssh后服务端也会关闭)
./frps -c frps.ini
#后台运行(关闭ssh服务端不会关闭)
nohup ./frps -c frps.ini &
或者是使用systemd
安装systemd
yum install systemd
创建frps的服务
vi /etc/systemd/system/frps.service
[Unit]
Description=frps
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
WorkingDirectory=/etc/frp
ExecStart=/usr/bin/env ./frps -c ./frps.toml
[Install]
WantedBy=multi-user.target
创建好服务后启动
systemctl start frps
systemctl status frps
systemctl daemon-reload
#设置自启动
systemctl enable frps
接下来我们还需要配置frpc客户端, 当我们运行frpc服务时将和公网上的frps建立一个长连接, 当我们访问公网不存在的服务时会转发到frpc, 然后frpc再做一个二次转发
1、release下载带Windows_amd64字样压缩包并解压
2、编辑 frpc.toml 文件配置以下参数
# frpc.toml
serverAddr = "1.2.3.4" #[必选]服务器ip地址/域名
serverPort = 7000 # [必选] 要连接的 frps 端口
transport.protocol = "kcp" #传输协议选择(除tcp以外的协议要填)
auth.token = "password" #与服务端校验的令牌(需一致)
transport.tcpMux = true #tcp流多路复用(优化传输,需一致)
示例
[[proxies]]
name = "web" # 代理名称(随便填)
type = "tcp" # 代理类型
localIP = "192.168.0.105" # 代理地址, 要转发到哪个地址
localPort = 5500 # 代理端口, 要转发到哪个端口
remotePort = 7001 # 远程端口(和远程 frps 哪个端口绑定在一起, 访问对应端口将使用该
评论区