使用 Docker 部署 frp 实现内网穿透
frp(Fast Reverse Proxy)是一个高性能的反向代理应用,可帮助你将处于内网或防火墙后的设备(如个人电脑、树莓派等)暴露给公网。提示: 大学生可以通过认证免费领取或以优惠价格购买阿里云、腾讯云等云服务商的轻量应用服务器或 ECS 服务器,非常适合作为本教程中的 frps 服务器端。请留意相关云服务商的校园计划。
核心原理
frp 依赖于一台拥有公网 IP 的服务器(frps 服务器)作为中转站。内网设备(frpc 客户端)通过隧道连接到这台服务器,frps 接收到公网请求后,通过隧道将其转发给 frpc,从而实现内网服务的暴露。
一、部署 frps 服务器端 (公网服务器)
frps 需要部署在您的公网服务器上(例如阿里云、腾讯云等)。
1. 创建配置文件 frps.ini
在您的服务器上创建一个目录(例如 /opt/frp),并在其中创建 frps.ini 配置文件。
1 | # frps.ini |
重要: 确保您的公网服务器防火墙(包括云服务商的安全组和 Linux 系统的 firewalld/ufw)开放了
bind_port(7000) 以及您希望暴露给公网的服务端口(如80,443,7500)。
2. 使用 Docker 部署 frps
使用 snowdreamtech/frps 镜像部署 frps(大陆网络环境下),并挂载配置文件和开放端口。
Bash
1 | docker run -d \ |
3. 检查 frps 运行状态
执行以下命令确认 frps 是否正常运行。如果开启了仪表盘,您可以通过 http://您的公网IP:7500 访问。
Bash
1 | docker logs frps |
二、部署 frpc 客户端 (内网设备)
frpc 需要部署在您希望进行内网穿透的设备上(例如本地电脑、开发机等)。
1. 创建配置文件 frpc.ini
在内网设备上创建目录(例如 /opt/frpc),并在其中创建 frpc.ini 配置文件。
Ini
1 | # frpc.ini |
2. 使用 Docker 部署 frpc
使用 snowdreamtech/frpc 镜像部署 frpc,并挂载配置文件。
Bash
1 | docker run -d \ |
注意
--network host: 客户端容器通常使用--network host模式,以便 frpc 能够直接访问内网主机的服务端口(如22或8080),从而实现准确的端口转发。
3. 检查 frpc 运行状态
执行以下命令确认 frpc 是否成功连接到 frps 服务器。
Bash
1 | docker logs frpc |
三、验证穿透效果
SSH 服务验证: 尝试通过公网访问内网设备的 SSH 服务。
Bash1
ssh user@YOUR_SERVER_IP -p 6000
- Web 服务验证: 如果您配置了
[web]代理,在浏览器中访问您绑定的域名或公网 IP,即可访问内网设备上8080端口运行的 Web 服务。

