Let's go

frp使用

环境

(公网)服务器

系统:Centos7.9 64位 UEFI版本

image

JDK:17.0.15

image

 本地服务器

系统Centos7

安装的frp版本frp_0.63.0_linux_amd64.tar.gz

官网 https://gofrp.org/zh-cn/docs/setup/
下载地址:https://github.com/fatedier/frp/releases
参考:https://www.cnblogs.com/joy99/p/18962652
解压到/usr/local/frp 目录

image

 部署脚本(参考)

#!/bin/bash
tar -zxvf frp_0.63.0_linux_amd64.tar.gz -C /usr/local/
cd /usr/local/
mv frp_0.63.0_linux_amd64 frp
mkdir -p /usr/local/frp/logs
chown -R root:root /usr/local/frp
cat >  /usr/local/frp/frps.ini  << \EOF
[common]
bind_address = 0.0.0.0
bind_port = 9111
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = Frp@2023!
log_file =  /usr/local/frp/logs/frps.log
log_level = info
log_max_days = 30
EOF
cat >  /usr/local/frp/frpc.ini  << \EOF
[common]
server_addr = 127.0.0.1
server_port = 9111
authentication_method = token
authenticate_heartbeats = false
token = Frp@2023!
log_file =  /usr/local/frp/logs/frpc.log
log_level = info
log_max_days = 30
[forward_locahost_SSH]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 22122
EOF
cat > /usr/lib/systemd/system/frps.service << \EOF
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
[Install]
WantedBy=multi-user.target
EOF
cat > /usr/lib/systemd/system/frpc.service   << \EOF
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable frps.service
systemctl enable frpc.service
systemctl start frps.service
sleep 2
systemctl restart frpc.service
View Code

配置并启动 frp 进程

在使用之前,需要进行一些配置。不同版本配置文件格式不一致,早起可能是 .ini 或其它格式。本文以当前最新版 0.63.0 版本为例,配置文件是 toml 格式。
服务端配置文件 frps.toml

bindAddr = "0.0.0.0" # 服务端监听地址,用于接收 frpc 的连接。默认监听 0.0.0.0, 表示监听所有网络接口。
bindPort = 7000 # 服务端监听端口,默认值为 7000,客户端通过此端口连接。
vhostHTTPPort = 7001 # 接收http请求
auth.token = "myfrptoken" # 客户端需要配置对应的token才允许映射

#仅允许服务器上的指定端口/端口范围 避免滥用端口
allowPorts = [
  # 范围指定
  { start = 5000, end = 5500},
  # 单独指定
  # { single = 5501},
]

# 仪表盘配置
# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = "0.0.0.0"
webServer.port = 7002
webServer.user = "admin"
webServer.password = "admin"

配置https证书

bindPort = 700
transport.tls.certFile = "/home/frp/ssl/server.crt"
transport.tls.keyFile = "/home/frp/ssl/server.key"
transport.tls.trustedCaFile = "/home/frp/ssl/ca.crt"
vhostHTTPPort = 7001
vhostHTTPSPort = 7003
#transport.tls.force = false
auth.token = "myfrptoken"
log.to = "/home/frp/log/frp.log"
log.level = "error"
log.maxDays = 60
View Code

服务端配置完成之后,通过 ./frps -c ./frps.toml 启动。启动之前,记得把公网服务器的 70007001,7002 的端口打开, 5000-5500 用到哪个打开哪个。一般可以通过购买的服务器的控制台进行设置。

客户端配置文件为 frpc.toml

serverAddr = "你的服务器 ip"
serverPort = 7000  # 和服务端进行通信的端口,与服务端 bindPort 保持一致。
auth.token = "myfrptoken" # token 校验,和服务端保持一致。

[[proxies]]
name = "comfyui" # 要映射的服务名,随便起。比如我想映射本机的 comfyui 进程。
type = "tcp"
localIP = "0.0.0.0"
localPort = 8188 # 本机需要映射的端口,比如本机 comfyui 进程端口是 8188
remotePort = 5000 #映射到云服务器的哪个端口,需要打开服务器的这个端口。
serverAddr = "你的服务器 ip"
serverPort = 7000

auth.method = "token" 
auth.token = "myfrptoken"
log.to = "/usr/local/frp/log/frp.log"
log.level = "error"
log.maxDays = 120

transport.tls.certFile = "/usr/local/frp/ssl/client.crt"
transport.tls.keyFile = "/usr/local/frp/ssl/client.key"
transport.tls.trustedCaFile = "/usr/local/frp/ssl/ca.crt"

[[proxies]]
name = "htts2http"
type = "https"
customDomains = ["xx.client.com"]

[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8081"
crtPath = "/data1/frp/ssl/client.crt"
keyPath = "/data1/frp/ssl/client.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "web1"
type = "http"
localIP="0.0.0.0"
localPort = 8082
locations = ["/"]
customDomains = ["xx.client.com","www.xx.com"]


[[proxies]]
name = "web2"
type = "http"
localIP="0.0.0.0"
localPort = 8083
locations = ["/page1"] 
customDomains = ["xx.client.com","www.xx.com"]
View Code

客户端的 proxies 可以配置多个。针对不沟通的服务,启动不同的端口即可。

其它网络通过 http://云服务器ip:remotePort 即可访问你本地机器 localPort 对应的进程。

 

image

同一台机器代理两个端口的方法

在客户端的 frpc.toml 文件中,可以通过添加多个 [[proxies]] 块来实现同一台机器代理多个端口。例如,在 Linux 客户端的 frpc.toml 文件中:

serverAddr = "x.x.x.x"
serverPort = 7000
auth.method = "token"
auth.token = "12344321"
 
[[proxies]]
name = "pvessh"
type = "tcp"
localIP = "0.0.0.0"
localPort = 22
remotePort = 8087
 
[[proxies]]
name = "pvehttp"
type = "tcp"
localIP = "0.0.0.0"
localPort = 8006
remotePort = 8487

其他

 

 

 

posted @ 2025-08-04 11:00  chenze  阅读(34)  评论(0)    收藏  举报
有事您Q我