frp(v0.59.0)使用

1 frp版本使用差别

从2023-10-10的frp_0.52.0版本开始,frp与前面的版本在配置上有较大区别,而且有较多的语法校验。因此,如果非必要不建议使用最新版本。

以frp_0.52.0_windows_amd64.zip解压后为例(Windows版本):
共有5个文件:

  1. frpc.exe:frp客户端程序。
  2. frpc.toml:frp客户端配置文件。
  3. frps.exe:frp服务端程序。
  4. frps.toml:frp服务端配置文件。
  5. LICENSE(许可证,略)

使用中碰到过的错误:

#错误1:error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type v1.ClientConfig
原因:每个被代理的服务之间需要加入[[proxies]],还有非整型字段的值都需要加""#错误2:unmarshal ProxyConfig error: json: unknown field "customDomains"
原因:customDomains是type:http、https、tcpmux里的配置,如果放到其他类型里则会报错。且需要加[],比如:customDomains = ["test2"]

#错误3:[web2] start error: router config conflict
原因:两个type为http服务的customDomains指定的是同一域名或ip导致。

2 frp_v0.59.0下载安装使用(安装包方式)

注意:服务器需要开放相关端口。

2.1 下载地址

frp也是托管在Github上的开源项目,直接到Release页面下载即可,链接如下:https://github.com/fatedier/frp/releases
在写本文时(2024-07-13),frp的版本是v0.59.0
在这里插入图片描述

2.2 安装包内容

以frp_0.59.0_windows_amd64.zip解压后为例(Windows版本):
共有5个文件:

  1. frpc.exe:frp客户端程序。
  2. frpc.toml:frp客户端配置文件。
  3. frps.exe:frp服务端程序。
  4. frps.toml:frp服务端配置文件。
  5. LICENSE(许可证,略)

2.3 frp各端配置

更多配置可参考:github上frp的README中的Demo

2.3.1 frp服务端配置

#bindPort是服务端与客户端之间通信使用的端口号
bindPort = 7000

# 配置验证方式
auth.method = "token" # 选择token方式验证
auth.token = "123456" # 必须与客户端的token一致,token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上。

#转发web服务
vhostHTTPPort = 6555

#服务端开启仪表板
webServer.addr = "0.0.0.0"
webServer.port = 7600
# dashboard's username and password are both optional
webServer.user = "用户名"
webServer.password = "密码"

# https证书配置
# webServer.tls.certFile = "server.crt"
# webServer.tls.keyFile = "server.key"

# 多路复用
transport.tcpMux = true
# 最大连接池数量
transport.maxPoolCount = 10

2.3.2 frp客户端配置

#服务器ip
serverAddr = "11.22.33.44"
#服务端与客户端之间通信使用的端口号
serverPort = 7000

# 配置验证方式
auth.method = "token" # 选择token方式验证
auth.token = "123456" # 必须与客户端的token一致,token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上。

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

#MySQL数据库
[[proxies]]
name = "MySQL"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3357
remotePort = 3357

#Redis数据库
[[proxies]]
name = "Redis"
type = "tcp"
localIP = "127.0.0.1"
localPort = 6379
remotePort = 6379

#本地服务1
[[proxies]]
name = "web1"
type = "http"
localPort = 80
customDomains = ["web1.example.com"]#你的frp的server的ip或域名

#本地服务2
[[proxies]]
name = "web2"
type = "http"
localPort = 8080
customDomains = ["web2.example.com"]#你的frp的server的ip或域名

#本地服务3 Gitlab的传输类型是tcp而非http
[[proxies]]
name = "Gitlab"
type = "tcp"
localIP = "192.168.1.1"
localPort = 9980
remotePort = 9980

这里特别说明下frp下web服务的配置,以web1为例:假设frp服务器所在的ip为11.22.33.44,绑定的域名为 web1.example.com,使用Nginx代理转发到11.22.33.44:6555上,则frpc在配置web1时customDomains必须设置成 web1.example.com【要和访问的域名完全一致,不含端口】,否则在输入aa.bb.cn访问时,会报frp给出的404错误。

2.4 启动运行

Linux下启动frps服务端,在frp目录下执行:

nohup ./frps -c ./frps.toml > frps.log 2>&1 &

启动后会将日志记录到frps.log文件中。


windows下启动frpc客户端:

start /b frpc.exe -c D:\Software\frp\frp_0.59.0_windows_amd64\frpc.toml

服务端和客户端都启动成功后即可正常使用frp服务了。

附:
Linux下查看正在使用的端口情况:

netstat -tunlp

2.4.1 自启动

参考:frp安装与配置

  1. 创建/usr/bin/frps/目录。
  2. /opt/software/frp/frp_0.59.0_linux_amd64/中的frps、frps.toml文件移动到/usr/bin/frps
  3. 服务端自启动,先创建一个frps.service文件。
vim /usr/lib/systemd/system/frps.service
  1. 添加以下内容,编辑完记得保存。
[Unit]
Description=Frp Server Service
After=network.target
 
[Service]
Type=simple
Restart=always
RestartSec=1min
ExecStart=/usr/bin/frps/frps -c /usr/bin/frps/frps.toml    
#其他都不用改,仅上一行两处目录改为frps文件和frps.toml文件存放的目录,不能放root目录中
 
[Install]
WantedBy=multi-user.target
  1. 将frps加入系统服务
#添加开机自启动
sudo systemctl enable frps

#启动frps
sudo systemctl start frps

#关闭frps
sudo systemctl stop frps

#重启frps
sudo systemctl restart frps

#查看frps状态
sudo systemctl status frps

3 frp_v0.35.1下载安装使用(安装包方式)

可参考:frp(v0.35.1)使用

4 docker部署frp(未成功,原因待查)

4.1 frp各端配置

docker-compose部署frp时,默认的frps、frpc的配置文件还是旧版的,也就是以.ini结尾的,这里可以参考:frp(v0.35.1)使用

frps.ini:

[common]
#bind_port是服务端与客户端之间通信使用的端口号
bind_port = 7000
#与客户端的token必须设置成一致,token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上
token = 123456
#转发web服务
vhost_http_port = 6555
#开启仪表板
dashboard_port = 7600
dashboard_user = admin
dashboard_pwd = admin

tcp_mux = true
max_pool_count = 10

log_file = /var/log/frp/frps.log
log_level = info

frpc.ini:

[common]
#服务器ip
server_addr = 11.22.33.44
#服务端与客户端之间通信使用的端口号
server_port = 7000
#与服务端的token必须设置成一致
token = 123456

log_file = /var/log/frp/frpc.log
log_level = info

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

#MySQL数据库
[mysql]
type = tcp
local_ip = 192.168.1.1
local_port = 3306
remote_port = 3306
custom_domains = 11.22.33.44 #你的frp的server的ip

#Redis数据库
[redis]
type = tcp
local_ip = 192.168.1.1
local_port = 6379
remote_port = 6379
custom_domains = 11.22.33.44 #你的frp的server的ip或域名

#本地服务1
[web1]
type = http
#本地端口 1
local_port = 9090
custom_domains = aa.bb.cn

#本地服务2
[web2]
type = http
#本地端口 1
local_port = 9090
custom_domains = web2.xx.xx

#本地服务3 gitlab的传输类型是tcp而非http
[gitlab]
type = tcp
local_ip = 192.168.3.220
local_port = 9980
remote_port = 9980
#custom_domains = 11.22.33.44
custom_domains = gitlab.xxx.xxx

4.2 docker-compose文件

version: '3'

services:
  frps:
    image: snowdreamtech/frps
    container_name: frps
    restart: always
    ports:
      - "7000:7000"
      - "7600:7600"
      - "6555:6555"
    volumes:
      - ./frps.ini:/etc/frp/frps.ini
	  - ./logs:/var/log/frp # 将日志目录挂载到容器中
 
  frpc:
    image: snowdreamtech/frpc
    container_name: frpc
    volumes:
      - ./frpc.ini:/etc/frp/frpc.ini
	  - ./logs:/var/log/frp # 将日志目录挂载到容器中
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值