🌐FRP内网穿透Docker部署
2024-10-14
| 2025-6-8
字数 1585阅读时长≈ 4 分钟
🤖
AI总结 这篇文章详细介绍了如何使用FRP(Fast Reverse Proxy)实现内网穿透,以便通过境外服务器访问境内服务器的服务,无需备案即可使用域名。文章首先解释了FRP的概念和工作原理,然后提供了详细的部署步骤,包括在境外服务器上部署FRPS(服务端)和在境内服务器上部署FRPC(客户端)。文章还介绍了如何配置Nginx Proxy Manager来管理域名和SSL证书,最终实现通过HTTPS访问境内服务。
English Version
This article provides a comprehensive guide on using FRP (Fast Reverse Proxy) to achieve intranet penetration, allowing access to services on domestic servers through foreign servers without domain registration. The article begins by explaining the concept and working principles of FRP, followed by detailed deployment steps for FRPS (server-side) on foreign servers and FRPC (client-side) on domestic servers. It also covers the configuration of Nginx Proxy Manager for domain and SSL certificate management, ultimately enabling HTTPS access to domestic services.
 

一,FRP

1,FRP概述

FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,专注于内网穿透。它允许用户将内网服务安全、便捷地通过具有公网IP的服务器暴露到公网,从而实现远程访问。

2,FRP工作原理

FRP主要由两个组件组成:
  • 服务端(frps):部署在具有公网IP的服务器上。
  • 客户端(frpc):部署在需要穿透的内网服务所在的机器上。
用户通过访问服务端的frps,FRP会根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。这种机制使得内网设备能够被外部用户访问,而无需进行复杂的网络配置或端口映射。

3,主要作用

  • 远程访问内网HTTP/HTTPS服务
  • 远程桌面连接(如Windows远程桌面)
  • 远程文件访问
  • SSH连接
  • 家庭NAS、树莓派等设备的远程控制
在本文中,FRP作为一个媒介,主要以境外服务器作为跳板,从而实现无需备案就能够以域名访问境内服务器部署的服务。其中,境外服务器是FRP-Server,境内服务器是FRP-Client。

二,前提条件

1,硬件条件

一台境内服务器(此处以阿里云新人赠送的服务器为例,位于华南河源地区,价格低廉)
一台境外服务器(此处以Azure服务器为例,推荐HK地区,无需备案且实际延迟不高)

2,软件条件

全程基于Docker进行部署,两台机器都必须有Docker环境。
境外服务器要求安装jc21/nginx-proxy-manager ,境内服务器无要求。
建议使用portainer/portainer-ce 进行Docker管理与部署。

三,FRPS境外服务器部署

1,拉取FRPS容器或软件

运行docker pull命令拉去容器docker pull snowdreamtech/frps:alpine
Releases · fatedier/frp · GitHub 中下载压缩包,解压后将frps.toml 发送到服务器,其中frps 是FRP服务器端软件,可以不使用Docker直接运行该软件。

2,frps.toml配置

frps.toml 配置如下所示:

plain

# 开放端口 # 实际与客户端通信端口,需要在防火墙与服务器中开放该端口 bindPort = 7070 # 虚拟通信端口,用于链接后进行映射 vhostHTTPPort = 8080 # # vhostHTTPSPort = 8443 # 配置验证方式 # 选择token方式验证 # token用于验证连接,只有服务端和客户端token相同的时候才能正常访问 auth.method = "token" # 必须与客户端的token一致 auth.token = "random_string" # FRP可视化管理面板 webServer.addr = "0.0.0.0" # 可视化面板端口 webServer.port = 7071 webServer.user = "admin" webServer.password = "admin" # 多路复用 transport.tcpMux = true # 最大连接池数量 transport.maxPoolCount = 10 # https证书配置 # webServer.tls.certFile = "server.crt" # webServer.tls.keyFile = "server.key" log.to = "/etc/frp/frps.log" log.level = "info" log.maxDays = 3
Plain text

3,开放端口并运行

运行sudo ufw allow 7070/tcp 命令在防火墙开放7070端口,同时在VPS管理端开放7070端口
(1)使用docker部署运行FRPS
Image:snowdreamtech/frps:alpine
Port Mapping: host 7070container 7070
Volumes:
/etc/frp/frps.log bind /path/to/frps.log
/etc/frp/frps.toml bind /path/to/frps.toml
Network:bridge、docker-frps-ipv4-address
Restart Policy:Always
点击Deploy the Container 部署完成
(2)服务器部署运行

powershell

# 以指定配置文件启动FRPS /path/to/frps -c /path/to/frps.toml # 终止FRPS sudo pkill frps
PowerShell

四,FRPC境内服务器部署

1,拉取FRPC容器或软件

运行docker pull命令拉取容器docker pull snowdreamtech/frpc:alpine
若无法拉去,可使用镜像docker pull dockerpull.com/snowdreamtech/frpc:alpine
Releases · fatedier/frp · GitHub 中下载压缩包,解压后将frpc.toml 发送到服务器,其中frpc 是FRP客户端软件,可以不使用Docker直接运行该软件。

2,frpc.toml配置

frpc.toml 配置如下所示:

plain

serverAddr = "境外服务器IPv4地址" # 实际与服务器端通信端口 serverPort = 7070 # 选择token方式验证 auth.method = "token" auth.token = "random_string" auth.additionalScopes = ["HeartBeats"] # frp日志配置 log.to = "/etc/frp/frpc.log" log.level = "info" log.maxDays = 3 [[proxies]] # 标识服务名称 name = "nginx" # 协议 http/https/tcp等等 type = "http" # 本地ip,此处为暴露外部服务docker的ipv4地址 localIP = "172.18.0.2" # docker 开放端口 localPort = 81 # 映射到该docker服务的域名 customDomains = ["www.nginxmanager.com"]
Plain text

3,开放端口并运行

(1)使用docker部署运行FRPC
Image:snowdreamtech/frpc:alpine
Volumes:
/etc/frp/frpc.log bind /path/to/frpc.log
/etc/frp/frpc.toml bind /path/to/frpc.toml
Network:bridge、docker-frpc-ipv4-address
Restart Policy:Always
点击Deploy the Container 部署完成
(2)服务器部署运行

powershell

# 以指定配置文件启动FRPS /path/to/frpc -c /path/to/frpc.toml # 终止FRPC sudo pkill frpc
PowerShell

五,配置Nginx-Proxy-Manager

1,配置域名SSL证书

SSL CertificatesAdd SSL Certificate → 两种方法任意

2,域名映射到境内服务器Docker

DashboardProxy HostsAdd Proxy Hosts
Domain Names: www.nginxmanager.com
Scheme: http
Forward Hostname/IP:docker-frps-ipv4-address
Forward Port:8080

3,访问域名

域名可通过HTTPS访问,该SSL证书部署在境外服务器,但境外服务器通过内网穿透以HTTP形式访问境内服务。
 
  • 工具
  • 网络
  • RustDesk中继服务器Docker部署公益AI站点
    Loading...