FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,它可以帮助您快速、安全地暴露一个本地服务器到公网或内网。frp 支持多种协议,包括 HTTP、HTTPS、TCP、UDP 等,并且具有一些高级功能,如端口映射、加密传输、身份验证等。

一、frps 搭建

frps 是 frp 的服务端,需要搭建在有公网的服务器

在服务器运行如下命令:

mkdir -p /home/docker/frps &&  cat > /home/docker/frps/frps.toml <<EOF
bindAddr = "0.0.0.0"
bindPort = 17000
auth.method = "token"
auth.token = "Z9OlO0CbRha5Rq"

webServer.port = 17500
webServer.user = "admin"
webServer.password = "admin123"
EOF
docker run -d \
--net=host \
-v /home/docker/frps/frps.toml:/etc/frp/frps.toml \
--name=frps \
snowdreamtech/frps:0.61-alpine3.21

通过 http://ip:17500 即可访问 ui 页面,账户密码为上面设置的 admin/admin123!,如果有需要自行进行调整,在这里可以查看所有的连接。

Docker 搭建内网穿透 frp 服务端和客户端

二、frpc 安装

frps 搭建在需要穿透的机器上面,根据实际情况修改 IP 和端口。

mkdir -p /home/docker/frpc &&  cat > /home/docker/frpc/frpc.toml <<EOF
serverAddr = "<SERVER IP>"
serverPort = 17000

#不能删除, 否则连接不上会闪退
loginFailExit=false
auth.method = "token"
# 身份验证令牌
auth.token = "Z9OlO0CbRha5Rq"

webServer.port = 14500
webServer.user = "admin"
webServer.password = "admin123"

[[proxies]]
name = "frpc-web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 14500
remotePort = 45000
EOF
docker run -d \
-v /home/docker/frpc/frpc.toml:/etc/frp/frpc.toml \
--net=host \
--name=frpc \
--restart=always \
snowdreamtech/frpc:0.61-alpine3.21

通过 http://ip:14500 即可访问客户端 ui 页面,账户密码为上面设置的 admin/admin123!。

这样做的好处是方便修改配置文件,当然也可以在命令行修改配置文件,然后执行 docker restart frpc即可。

通过上面的配置可以通过 服务器 ip + 222 端口远程连接到客户端。