简介

frp(Fast Reverse Proxy)是一个开源的高性能反向代理应用,由fatedier开发。它的主要目的是帮助在NAT网络环境下,通过将内网服务映射到公网上,实现对内网服务的访问。

frp使用客户端-服务器架构,其中frp服务器位于公网中,而frp客户端则位于内网中。通过配置客户端和服务器,frp可以实现端口转发、HTTP和TCP代理等功能,使得公网用户可以访问内网中的服务。

安装

Release v0.51.3 · fatedier/frp (github.com)
在github中下载对应版本的压缩包,进行解压

1
tar -zxvf frp_0.51.3_linux_arm64.tar.gz

配置

服务端

在服务器端使用 frps,写好配置文件 frps.toml

1
2
3
4
5
6
7
8
9
10
# frps.toml
bindPort = 10124 # 服务端与客户端通信端口

auth.token = "e99468f136bca375682959611c14b009ec8a370d21482e66ea2b378e7144138d"

# Server Dashboard,可以查看frp服务状态以及统计信息
webServer.addr = "0.0.0.0" # 后台管理地址
webServer.port = 7500 # 后台管理端口
webServer.user = "zishuq" # 后台登录用户名
webServer.password = "NSQ030402nsq!@#" # 后台登录密码

之后使用命令启动

1
./frps -c frps.toml

客户端

在客户端使用 frpc,写好配置文件 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
# frpc.toml
serverAddr = "8.130.103.90" # 公网服务器IP
serverPort = 10124 # 公网服务端通信端口
auth.token = "e99468f136bca375682959611c14b009ec8a370d21482e66ea2b378e7144138d" # 令牌,与公网服务端保持一致

[[proxies]]
name = "filebrowser-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8091
remotePort = 8091

[[proxies]]
name = "filebrowser-udp"
type = "udp"
localIP = "127.0.0.1"
localPort = 8091
remotePort = 8091

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

# 多个端口的映射,从v0.56.0版本开始支持
{{- range $_, $v := parseNumberRangePair "6000-6006,6007" "6000-6006,6007" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}

之后使用命令启动

1
./frpc -c frpc.toml		

使用docker开启frp服务

在服务端:

1
docker run --restart=always --network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
1
2
3
4
5
6
7
8
9
10
version: '3'

services:
frps:
image: snowdreamtech/frps
container_name: frps
restart: always
network_mode: "host"
volumes:
- ./frps.toml:/etc/frp/frps.toml

在客户端:

1
docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc