frp使用
环境
(公网)服务器
系统:Centos7.9 64位 UEFI版本
JDK:17.0.15
本地服务器
系统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 目录
部署脚本(参考)

#!/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
配置并启动 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
服务端配置完成之后,通过 ./frps -c ./frps.toml
启动。启动之前,记得把公网服务器的 7000
, 7001
,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"]
客户端的 proxies 可以配置多个。针对不沟通的服务,启动不同的端口即可。
其它网络通过 http://云服务器ip:remotePort
即可访问你本地机器 localPort 对应的进程。
同一台机器代理两个端口的方法
在客户端的 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
其他
作者:chenze 出处:https://www.cnblogs.com/chenze-Index/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |