frp 的安装和使用

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 分为服务端和客户端,以下用 frps 指代服务端,frpc 指代客户端

安装 frps

点击查看最新版本下载链接,这里以 v0.38.0 为例

1
2
3
4
5
6
7
8
9
10
11
## 下载
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

## 解压
tar -xf frp*linux_amd64.tar.gz

## 进入目录
cd frp*linux_amd64

## 查看版本
./frps -v

配置 frps

通过自定义域名访问内网的 Web 服务。更多示例访问 frp 官方文档
修改frps.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
## frpc连接端口
bind_port = 7000

## https请求端口
vhost_https_port = 4443

## http请求端口
vhost_http_port = 8080

## 设置访问密码
authentication_method = token
token = 你的密码

## log级别
## trace, debug, info, warn, error
log_level = warn

启动 frps

通过 PM2 启动 frps。点击查看 PM2 的安装和使用

1
pm2 start ./frps -n frps -- -c ./frps.ini

配置 frpc

frpc 的安装和启动同 frps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[common]
## 服务器IP和服务器连接端口
server_addr = x.x.x.x
server_port = 7000

token = 你的密码

## 首次登录失败时是否退出程序,否则继续重新登录frps
## 默认为true
login_fail_exit = false

log_level = warn

[web1]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = exp1.com

[web2]
type = https
local_port = 443
local_ip = 127.0.0.1
custom_domains = exp2.com

如果你的 frps 服务端在外网,建议 frpc 通过加密的代理连接 frps,减少 IP 被墙的风险。这里推荐使用 xray,它省略了对 https 流量的二次 tls 加密,使客户端访问本地的服务更快

将 127.0.0.1:7000 这个连接服务端的请求,通过本地的代理软件发送到 frps 服务端

1
2
3
4
5
6
[common]
server_addr = 127.0.0.1
server_port = 7000
http_proxy = socks5://127.0.0.1:1083
token = 你的密码
...

请注意你的代理软件没有过滤本地 IP 的规则。否则请为 frps 服务端解析一个专用域名,并设置

1
2
server_addr = frps.exp.com
server_port = 7000

为了省略域名解析的过程,并且不开放服务端的7000端口,你可以设置服务端的hostsfrps.exp.com手动指定到本机

1
echo '127.0.0.1 frps.exp.com' >> /etc/hosts