frp(v0.61.1)企业级网络安全接入实践

Source

一、FRP介绍

FRP(Fast Reverse Proxy) 是一款高效的反向代理工具,专为将内网服务安全稳定地穿透至公网而设计。它通过在拥有公网IP的节点上部署FRP服务端,提供了一系列强大且实用的功能特性,包括但不限于:

  • 多协议支持:客户端和服务端均支持TCP、QUIC、KCP及Websocket等多种网络协议,适应不同的网络环境和需求。

  • 高效连接管理:利用TCP连接流式复用技术,在单个连接中处理更多请求,减少连接建立时间,降低延迟,提升传输效率。

  • 智能负载均衡:实现跨代理组的负载均衡,自动分配流量,保证服务的高可用性和稳定性。

  • 端口复用功能:允许多个服务共享同一个服务端口,有效节约端口资源,简化配置。

  • P2P通信支持:直接在客户端之间建立连接进行数据交换,无需经过服务器中转,最大限度利用带宽,提高传输速度。

  • 丰富的插件生态:内置多种实用插件,如静态文件浏览、HTTPS/HTTP协议转换、HTTP/SOCKS5代理等,便于用户根据需要独立使用FRP客户端完成特定任务。

  • 可扩展的服务端插件系统:易于结合具体应用场景进行定制化开发,满足用户的个性化需求。

FRP不仅简化了内网穿透的过程,还通过其强大的功能集和灵活的配置选项,成为开发者和运维人员的理想选择。无论是用于开发测试还是生产环境,FRP都能提供可靠的服务保障。

二、当前服务器系统与本地电脑系统

服务器

本地电脑是 win1064位

三、安装frp

frp地址为:Releases · fatedier/frp · GitHubA fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. - Releases · fatedier/frphttps://github.com/fatedier/frp/releases最新版本的客户端和服务端二进制文件在Release页面中。本文使用的v0.61.1。

把他分别下载下来windows是客户端  linux是服务端

上传服务端到 linux服务器,进行解压:

解压命令:

tar -zxvf frp_0.61.1_linux_amd64.tar.gz 

我上传的目录是:

进入解压的文件夹后,可以看到有5个文件,其中frpc为客户端程序,frpc.toml为客户端配置文件。frps为服务端程序,frps.toml为服务端配置文件。由于文件夹名称太长 我改为了frp_0.61.1 所以后续都是在frp_0.61.1 里面进行配置修改。

四、服务端配置

服务端配置时修改frps.toml文件

vim frps.toml 

配置文件如下:

#当前ip地址,默认
bindAddr = "0.0.0.0"
# 隧道端口,服务端通过此端口与客户端通信
bindPort = 7100
# 用于KCP协议的UDP端口,可以与“bindPort”相同。
# 如果未设置,frps 中的 kcp 将被禁用。
kcpBindPort = 7100
#界面ip
webServer.addr = "0.0.0.0"
#界面端口
webServer.port = 7500
#账号
webServer.user = "user"
#登录密码
webServer.password = "password"

#打印日志
log.to = "/frpslog/frps.log"
log.level = "info"
log.maxDays = 3
#token 客户端设置一致才能修改 这token 
auth.method = "token"

# 设置token值
auth.token = "tokentoken"
#开放 客户端映射的端口范围
allowPorts = [
{ start = 6000, end = 7000},
]

其他配置看官网的完整配置文件frp/conf/frps_full_example.toml at dev · fatedier/frp · GitHub

或者安装 | frp

启动服务端

./frps -c frps.toml

配置开机启动

使用vim编辑器创建并编辑frps.service文件。

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/ftp/frp_0.61.1/frps -c /usr/local/ftp/frp_0.61.1/frps.toml

[Install]
WantedBy = multi-user.target

使用

# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

启动后查看当前运行状态

表示服务器运行成功,由于我们配置看web可视化界面打开配置端口进行登录

frp穿透服务已经成功了,我们再查看下frp面板,浏览器地址栏输入:服务器公网IP+7500

五、客户端配置

解压在电脑的下载文件 解压后如下

修改frpc.toml

#公网ip
serverAddr = "xx.xx.xx.xx"
#服务器端口
serverPort = 7100
loginFailExit = true

log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3

auth.method = "token"
auth.token = "tokentoken"

[[proxies]]
name = "Factorio"
type = "tcp"
localIP = "127.0.0.1"
#本地端口
localPort = 80
#远程端口
remotePort = 6100

[[proxies]]
name = "Minecraft"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8500
remotePort = 6200

配置bat启动文件

bat配置如下:你需要根据你的实际需求制作

.\frpc.exe -c .\frpc.toml

双击运行bat文件

已经运行成功!在服务器web界面查看

关闭 cmd运行窗口,在看服务器

frp配置成功:

六、查看映射情况

刚才绑定了6100

能成功访问本地运行的代码!到此部署成功!如果各位有啥其他后续需要的 留言我会出哦!