frp详细使用过程

介绍

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

如下优点:

  • 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
  • TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
  • 代理组间的负载均衡。
  • 端口复用:多个服务可以通过同一个服务端端口暴露。
  • P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
  • 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
  • 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
  • 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

案例

背景

在线上部署了saas服务,但是saas服务管理平面无法使用隧道请求内网服务地址(如:AD等服务),saas与内网通信在公网传输时需要加密传输,自己拥有代理端口管理权,不变动现网架构,为应对如上场景使用到了frp反向代理,代理服务器建议使用独立服务器,不建议在服务器本身直接部署。

设计逻辑

使用frp代理内网LDAP服务给线上Saas服务器提供服务,需要使用两台服务器,一台为服务器一台为客户端,由客户端控制代理那些端口服务器。
线上申请一台服务器用做代理服务器,有条件可限制线上入网IP,安全组只放通7100端口,拒绝其他端口,避免公网暴露。
内网部署一台服务器用做代理客户端,服务器需要与LDAP服务通信。
将线上代理服务器192.168.0.2 的 7010 端口通过TCP隧道映射为内网的 192.168.2.100 的LDAP服务。

软件下载

下载页面 https://github.com/fatedier/frp/releases

获取最新版文件下载连接

进入系统并移动至指定目录,笔者使用opt目录。

cd /opt

下载hrp文件,将 wget 后面的连接换下最新版本。

sudo wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz

下载完成后解压文件,请为你的更换版本名称。

sudo tar -zxvf frp_0.60.0_linux_amd64.tar.gz

重命名文件夹

sudo mv frp_0.60.0_linux_amd64 frp

进入frp文件

cd frp

文件介绍,后面需要按需改动配置。
服务端frps启动文件, frps.toml为配置文件吗,默认配置文件监听的端口为7000,不使用认证。
客户端frpc启动文件, frpc.toml为配置文件,默认配置文件转发端口为22,远程端口是6000。

服务端配置

服务端只需要留下 frps 和 frps.toml 文件。

编辑 frps.toml ,完整的配置文件选项可访问 https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml 查看。

# 默认监听所以地址,如果你想使用特定的IP地址,请更改为你使用的IP地址并取消注释。
# bindAddr = x.x.x.x

# 默认使用7000作为服务端口,建议改成其他端口。
bindPort = 7100

# 用于客户端和服务器通信的身份验证令牌
auth.method = "token"
# 秘钥格式建议配置 用户+@+密码 的格式,方便区分用户,如下所示:
auth.token = "user1@12345678"

# 允许的端口范围,不设置允许所以端口,笔者允许使用7101-7199端口和6001端口。
allowPorts = [
  { start = 7101, end = 7199 },
  { single = 6001 }
]

# 面板相关配置(可选),配置面板后可以查看代理使用的流量统计。
# webServer.addr = "x.x.x.x"
webServer.port = 7200
webServer.user = "admin"
webServer.password = "your_pwd"

# 最大连接池数量
transport.maxPoolCount = 5

# 指定日志文件存储级别和位置,最大存储日志为7天。
log.to = "/opt/frp/frps.log"
log.level = "info"
log.maxDays = 7

服务端 systemd 管理 frp

创建管理文件

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 = /opt/frp/frps -c /opt/frp/frps.toml

[Install]
WantedBy = multi-user.target

开机自器和启动服务。

sudo systemctl enable frps && sudo systemctl start frps

服务端状态检查

检查服务是否正常,使用如下命令查看,如果服务异不是active请检查日志。

sudo systemctl status frps

客户端配置

客户端只需要留下 frpc 和 frpc.toml 文件。

编辑 frpc.toml ,完整的配置文件选项可访问 https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml 查看。

# 指定服务器地址与端口号。
serverAddr = "x.x.x.x"
serverPort = 7100
# 代理名称将会改为 {user}.{proxy},建议配置,取服务器上的token中@前部分。
user = "user1"
auth.method = "token"
auth.token = "user1@12345678"

# 面板相关配置(可选),配置面板后可以查看代理使用的流量统计。
# webServer.addr = "x.x.x.x"
webServer.port = 7200
webServer.user = "admin"
webServer.password = "your_pwd"

# 指定日志文件存储级别和位置,最大存储日志为7天。
log.to = "/opt/frp/frpc.log"
log.level = "info"
log.maxDays = 7

[[proxies]]
# name为应用名称,type为协议类型,localIP为内网服务的地址,localPort为内网服务的端口,remotePort为服务器上监听的端口,transport.bandwidthLimit为限速,服务端不限制使用端口,不建议使用1-1024端口。
name = "ssh"
type = "tcp"
localIP = "x.x.x.x"
localPort = 389
remotePort = 7101
transport.bandwidthLimit = "1MB"

客户端 systemd 管理 frp

创建管理文件

sudo vim /etc/systemd/system/frpc.service
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /opt/frp/frpc -c /opt/frp/frpc.toml

[Install]
WantedBy = multi-user.target

开机自器和启动服务。

sudo systemctl enable frpc && sudo systemctl start frpc

客户端状态检查

检查服务是否正常,使用如下命令查看,如果服务异不是active请检查日志。

sudo systemctl status frpc

访问管理web

默认看板只监听本地 127.0.0.1 地址,如果你通过内网地址请修改 webServer.addr = “x.x.x.x” 配置字段。

客户端看板

服务端看板

使用如下命令查看日志文件,可用于排错和查看frp运行状态。

# 服务端
sudo cat /opt/frp/frps.log

# 客户端
sudo cat /opt/frp/frpc.log

参考地址: https://gofrp.org/zh-cn/docs/overview/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值