内网穿透神器FRP配置,个人记录

官网地址:

Frp 开源地址:  https://github.com/fatedier/frp

Frp 中文文档: https://gofrp.org/zh-cn/

Frp 作者博客: https://blog.fatedier.com/

1、frp是什么?

1、frp 是一个专注于内网穿透的高性能反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。 由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。

在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。

2、frp和nginx的区别

FRP 和 Nginx 存在多方面的区别,以下是详细介绍:

功能特性
  • Nginx:支持 HTTP/2、IPv6、WebSockets、gRPC 以及 HTTP/3(通过 Nginx QUIC 传输模块)等多种协议和技术,能很好地服务静态文件,支持 SSL,还包含用于转换响应的模块,可通过第三方模块进行扩展5.
  • FRP:支持 TCP、UDP、HTTP、HTTPS、WebSocket 等协议,拥有丰富的插件系统,支持全锥型 NAT、P2P 连接、会话保持、健康检查以及热重载而不中断连接等功能.
使用场景
  • Nginx:适用于复杂的负载均衡场景、高性能环境以及服务网格架构等,在需要诸如速率限制、缓存或高级路由等高级功能时表现出色,常被用于容器化环境如 Kubernetes 中的入口控制,以管理对集群中服务的外部访问.
  • FRP:擅长将位于 NAT 或防火墙后的内部服务快速、简便地暴露到互联网上,例如位于 NAT 后的 Web 服务器或用于远程管理的 SSH 服务器,适用于较为简单的场景,无需 Nginx 的高级功能.
易用性

  • Nginx:配置语法相对简单,有庞大的社区提供丰富的文档和示例,但要处理复杂任务可能需要深厚的技术专业知识.
  • FRP:设置和管理相对容易,即使没有丰富的网络知识,也能轻松地将内部服务器暴露到互联网上.
反向代理与负载均衡能力

  • Nginx:作为高性能的负载均衡器,支持 HTTP、TCP 和 UDP 的负载均衡,具备 SSL 终止、会话保持、健康检查和服务器名称指示(SNI)等功能,能提供容错和实时活动监控,不过其高级负载均衡功能仅在付费的 Nginx Plus 版本中可用,复杂场景下的配置可能会变得复杂.
  • FRP:可将任何位于 NAT 或防火墙后的 HTTP 和 HTTPS 服务暴露到互联网,支持会话保持和健康检查,能在同一端口上复用流量以代理多个服务,但负载均衡功能相较于 Nginx 不够成熟.
对不同协议的支持

  • HTTP 和 HTTPS:Nginx 在 HTTP 和 HTTPS 方面表现卓越,提供了丰富的路由、重写、重定向和负载均衡选项,还有缓存和速率限制等高级功能;FRP 虽也能处理 HTTP/HTTPS 流量,但缺少 Nginx 的高级选项.
  • SSH:Nginx 不适合处理 SSH 流量,而 FRP 能够将来自公网的 SSH 流量转发到私网,方便管理位于 NAT 或防火墙后的服务器.
  • WebSockets:Nginx 对 WebSockets 有强大的支持,可提供代理和负载均衡;FRP 支持 WebSockets,但缺乏 Nginx 的高级负载均衡和路由功能.

配置说明下载

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

解压后为

服务端配置,修改 frps.toml配置

[common]
bind_port = 9911
dashboard_port = 9912
dashboard_user = admin
dashboard_pwd = admin

[tcp_8888]
type = tcp
local_port = 8888
listen_port = 8888

[tcp_9000]
type = tcp
local_port = 9000
listen_port = 9000

[tcp_nacos]
type = tcp
local_port = 8848
listen_port = 8848

详解
bind_port frp服务端口,frpc的配置会调用
dashboard_port frp的web控制台端口
dashboard_user frp的web控制台端口账号
dashboard_pwd frp的web控制台端口密码
[tcp_9000] 链接的名称
type = tcp 代理的连接类型
local_port = 9000 本地映射的端口
listen_port = 9000 监听的端口

配置完成后启动

 ./frps -c frps.toml

#后台启动 nohup ./frps -c ./frps.toml &> /dev/null &

配置服务 通过命令服务启动

vim /etc/systemd/system/frps.service



Description = frp server
After = network.target syslog.target
Wants = network.target

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

[Install]
WantedBy = multi-user.target
  • Description:描述了服务的作用或功能,这里被设置为 "frp server",表示 frp 服务器。
  • After:定义了服务的启动顺序,表明在启动该服务之前需要等待 network.targetsyslog.target 服务已经启动。
  • Wants:表明该服务想要依赖 network.target 服务。 [Service] 在这个部分,你可以设置服务运行的相关参数:
  • Type:定义服务的类型,这里设置为 simple,表示该服务不会派生出其他子进程。
  • ExecStart:定义了启动 frp 服务器的命令,你需要根据你的实际情况修改命令路径和配置文件路径。在这个例子中,使用的启动命令是 /home/frp/frps -c /home/frp/frps.toml,表示使用 /app/frp 目录下的 frps 可执行文件,并加载 /app/frp/frps.toml 配置文件。 [Install] 在这个部分,你可以定义服务的安装和启动方式:
  • WantedBy:表明服务希望被启用的目标单元,这里设置为 multi-user.target,表示服务希望在多用户模式下启动。

配置好了文件之后可以用以下命令运行frp服务

启动 frps 服务

systemctl start frps

停止 frps 服务

systemctl stop frps

检查 frps 服务的状态

systemctl status frps
 

重新加载 Systemd 守护进程(当你修改了服务单元文件后需要执行此命令)

systemctl daemon-reload
 

客户端配置,修改frpc.toml配置

[common] 
server_addr = 公网IP
server_port = 9911

[tcp_8888]
type = tcp
local_ip = 127.0.0.1
local_port = 9000
remote_port = 8888

[tcp_9000]
type = tcp
local_ip = 127.0.0.1
local_port = 9000
remote_port = 9000

[tcp_nacos]
type = tcp
local_ip = 192.168.13.244
local_port = 8848
remote_port = 8848


[Web]
# http服务
## 数据类型
type = http
## 本地IP localhost、127.0.0.1或你用ipconfig得到的内网IP都可
local_ip = localhost
## 本地需要暴露在外网的端口,一般为你本地的项目端口
local_port = 8200
## 是该条规则在服务端开放的端口号,自己填写并记录即可,服务端对https设置的端口为8200,所以此处也为8200
## remote_port = 8200
## subdomain = test
custom_domains= **.**.**.**

详解
server_addr 服务器公网ip
server_port frp服务端口
[tcp_9000] 链接的名称
type = tcp 代理的连接类型
local_ip 代理IP
local_port = 代理端口

remote_port = 代理映射端口

 ./frpc -c frpc.toml

启动客户端

启动完成后浏览器访问

设计思想:

1、服务端需要监听端口,部署在公网服务器上

2、客户端能够ping通公网IP,注册本地的ip和端口到服务端,同时配置好通过公网访问端口进来后的方向代理地址

访问端-->公网服务器<---反向代理服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值