Frp 使用
Frp 介绍
说明
此文档说使用的frp版本为: 0.59.0
下载地址: https://github.com/fatedier/frp/releases
存放目录为: /opt/module/frp_server(frp_client)
frp能干什么?
frp 是一款高性能的反向代理
应用,专注于内网穿透
。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转
frp的组成
frp 主要由两个组件组成:客户端(frpc
) 和 服务端(frps
)。通常情况下,
服务端部署在具有公网 IP 地址的机器上,
客户端部署在需要穿透的内网服务所在的机器上
工作原理
由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps
,frp 负责根据请求的端口或其他信息将请求路由
到相应的内网机器
,从而实现通信。
支持的代理类型:
- TCP:提供纯粹的 TCP 端口映射,使服务端能够根据不同的端口将请求路由到不同的内网服务。
- UDP:提供纯粹的 UDP 端口映射,与 TCP 代理类似,但用于 UDP 流量。
- HTTP:专为 HTTP 应用设计,支持修改 Host Header 和增加鉴权等额外功能。
- HTTPS:类似于 HTTP 代理,但专门用于处理 HTTPS 流量。
- STCP:提供安全的 TCP 内网代理,要求在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
- SUDP:提供安全的 UDP 内网代理,与 STCP 类似,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
- XTCP:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。
- TCPMUX:支持服务端 TCP 端口的多路复用,允许通过同一端口访问不同的内网服务
Frp 配置
将Frp 下载到对客户端和服务端, 并解压至/opt/module/frp_server(frp_client)
Server
服务端基本配置
vim /opt/module/frp_server/frps.toml
输入以下配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26[common]
# 客户端访问服务端的密码
token = 123456..**&&??
# 服务端和客户端的TCP通信端口, 建议1024以上端口
bind_port = 7000
# 服务端web服务的端口, 可以用浏览器访问查看
dashboard_port = 7500
# 服务端仪表盘的用户密码
dashboard_user = frp
dashboard_pwd = 123456..
# http https
vhost_http_port = 8081
vhost_http_timeout = 6000
#vhost_https_port = 443
# 域名
subdomain_host = xiaoguiyu.cn
# 日志保存设定, 保存位置、保存时长
log_file = ./frps.log
log_level = info
log_max_days = 7将frp设置成linux系统的服务,基于systemd方式管理(可以使用system命令来启动和关闭)
vim /usr/lib/systemd/system/frps.service
输入一下配置1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/opt/module/frp_server/frps -c /opt/module/frp_server/frps.toml
[Install]
WantedBy=multi-user.target将frps设置为开机自启
1
2
3frps
systemctl enable frps
systemctl start frps手动启动frps, 以便查看log 信息
1
/opt/module/frp_server/frps -c /opt/module/frp_server/frps.toml
Client
客服端基本配置
vim /opt/module/frp_server/frpc.toml
输入以下配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48[common]
# 服务端公网IP
server_addr = xiaoguiyu.cn
# 客户端访问服务端的密码
token = 123456..**&&??
# 客户端与服务端通信端口
server_port = 7000
# log
log_file = ./frpc.log
log_level = info
log_max_days = 2
[mysql]
# 指定TCP连接类型
type = tcp
# 客户端IP, 这里填本地IP就可以
local_ip = 127.0.0.1
# 表示客户端本地的端口号
local_port = 3306
# 表示服务端的代理端口号
remote_port = 33060
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 15678
[minio]
type = tcp
local_ip = 127.0.0.1
local_port = 9001
remote_port = 9001
[minioapi]
type = tcp
local_ip = 127.0.0.1
local_port = 9000
remote_port = 9000
#[web example]
#type = http
#local_ip = 127.0.0.1
#local_port = 9000
#subdoamin = test
#custom_domains = xiaoguiyu.cn将frp设置成linux系统的服务,基于systemd方式管理(可以使用system命令来启动和关闭)
vim /usr/lib/systemd/system/frpc.service
输入一下配置1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/opt/module/frp_client/frpc -c /opt/module/frp_client/frpc.toml
[Install]
WantedBy=multi-user.target将frpc设置为开机自启
1
2
3frpc
systemctl enable frpc
systemctl start frpc