什么是 Frp
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
使用示例
服务端
配置文件
1
2
3
4
5
6
7
8
9mkdir -p /etc/frp
cat > /etc/frp/frps.ini << EOF
# frps.ini
[common]
# 服务端口
bind_port = 7000
# 服务端和客户端的 common 配置中的 token 参数一致则身份验证通过。
token = 07401b.f395accd246ae52d
EOF容器运行
1
2
3
4docker run --name frps \
--network host -d --restart=always \
-v /etc/frp/frps.ini:/etc/frp/frps.ini \
dockerhub.azk8s.cn/snowdreamtech/frps:0.29.0
客户端
配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19mkdir -p /etc/frp
cat > /etc/frp/frpc.ini << EOF
# frpc.ini
[common]
server_addr = setzero.wenqi.us
server_port = 7000
# 服务端和客户端的 common 配置中的 token 参数一致则身份验证通过。
token = 07401b.f395accd246ae52d
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# 加密
use_encryption = true
# 压缩
use_compression = true
EOF容器运行
1
2
3
4docker run --name frpc \
--network host -d --restart=always \
-v /etc/frp/frpc.ini:/etc/frp/frpc.ini \
dockerhub.azk8s.cn/snowdreamtech/frpc:0.29.0
改进
简单使用时挂卷是一个比较麻烦的事情,使用环境变量进行设置比较优雅一点。
frps
Dockerfile
1
2
3
4
5
6FROM dockerhub.azk8s.cn/snowdreamtech/frps:0.29.0
ENV FRPS_PORT=7000 \
FRPS_TOKEN=07401b.f395accd246ae52d
COPY frps.ini /etc/frp/frps.inifrps.ini
1
2
3
4# frps.ini
[common]
bind_port = {{ .Envs.FRPS_PORT }}
token = {{ .Envs.FRPS_TOKEN }}
frpc
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13FROM dockerhub.azk8s.cn/snowdreamtech/frpc:0.29.0
ENV FRPS_ADDR=127.0.0.1 \
FRPS_PORT=7000 \
FRPS_TOKEN=07401b.f395accd246ae52d \
FRPC_SECTION=ssh \
FRPC_ADDR=127.0.0.1 \
FRPC_LOCAL_PORT=22 \
FRPC_REMOTE_PORT=6443 \
USE_ENCRYPTION=true \
USE_COMPRESSION=true
COPY frpc.ini /etc/frp/frpc.inifrpc.ini
1
2
3
4
5
6
7
8
9
10
11
12
13# frpc.ini
[common]
server_addr = {{ .Envs.FRPS_ADDR }}
server_port = {{ .Envs.FRPS_PORT }}
token = {{ .Envs.FRPS_TOKEN }}
[{{ .Envs.FRPC_SECTION }}]
type = tcp
local_ip = {{ .Envs.FRPC_ADDR }}
local_port = {{ .Envs.FRPC_LOCAL_PORT }}
remote_port = {{ .Envs.FRPC_REMOTE_PORT }}
use_encryption = {{ .Envs.USE_ENCRYPTION }}
use_compression = {{ .Envs.USE_COMPRESSION }}
服务端
1 | docker run --name frps \ |
客户端
1 | docker run --name frpc \ |