目 录CONTENT

文章目录

FRP内网穿透 | 如何让本地没有公网的群晖使用FRP实现外网流畅访问

西溪里
2024-12-20 / 0 评论 / 0 点赞 / 31 阅读 / 0 字

介绍

FRP (Fast Reverse Proxy) 是一款高性能的反向代理应用,支持通过内网穿透将本地服务暴露到公网,适用于开发测试环境、远程管理以及各种需要穿透内网的场景。FRP 支持多种协议,包括 TCP、UDP、HTTP 和 HTTPS,同时提供稳定的穿透性能和灵活的配置方式。

它的核心原理是客户端和服务端通过一条持续连接的隧道(通常是 TCP 长连接)进行通信,客户端将内网服务的请求通过隧道转发到服务端,从而实现内网服务的公网访问。

系统环境

本文配置使用的linux系统是debain12(带公网作服务器端),穿透家中没有公网的群晖(客户端)

配置方法

服务端配置

镜像文件需要和服务器端版本像对应,不然可能会造成穿透失败,本文使用的都是客户端镜像snowdreamtech/frps镜像

更新系统包管理器:

首先,进入我们的带公网的linux服务器上,创建frp的docker文件夹目录

mkdir  frps

进入该目录,创建我们的docker-compose.yml文件

进入frps文件夹
cd frps

# 创建yml文件
vim docker-compose.yml

配置以下内容


version: "3.9"
services:
  frps:
    image: snowdreamtech/frps:0.52.3
    container_name: frps
    hostname: frps
    restart: always
    network_mode: host
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./conf/frps.toml:/etc/frp/frps.toml:ro
      - ./logs:/frp/logs


编辑完成后,按esc,输入:wq保存退出

在同级目录下,创建config文件夹

mkdir config

进入config,创建frpc的配置文件frps.toml


# 进入config
cd config

# 创建frps.toml
vi frps.toml

配置frps.toml内容如下(输入i进行编辑模式,shift+Ins粘贴)


# frps.toml
bindPort = 7000         # [必选] 绑定端口, 客户端与该端口建立连接
log.to = "console"      # [可选] 日志配置, 通过打印的方式输出日志
vhostHTTPPort = 7100    # [可选] http 代理需要, 当访问该端口时就转到对应本地 frpc 代理
vhostHTTPSPort = 7200   # [可选] https 代理需要, 当访问该端口时就转到对应本地 frpc 代理

# 身份验证
auth.method = "token"   # [必选] 身份验证方式
auth.token = "123456" # [必选] token 设置, 只有客服端设置了相同 token 才能身份校验通过, 其实就是密码

# 下面是服务端仪表板配置
webServer.port = 7300        # 仪表端口设置
webServer.addr = "0.0.0.0"   # IP 设置,可以不修改直接使用0.0.0.0
webServer.user = "root"     # 仪表盘用户名设置
webServer.password = "123456" # 仪表盘用户密码设置

配置完成后,我们按下esc,并输入英文:wq保存退出

启动我们的frps容器

# 启动
 docker compose up -d

关闭容器的命令是 docker compose down

启动成功后我们进去服务器端面板,能打开服务面板即代表启动成功

面板地址:公网IP+端口号(本文配置的是7300)

配置群晖客户端

下载镜像文件

镜像文件需要和服务器端版本像对应,不然可能会造成穿透失败,本文使用的都是snowdreamtech-frpc镜像

群晖docker文件夹中新建frpc文件夹,并在里面创建按frpc.toml文件

文件内容如下

serverAddr = "56.3.6.3"  # 对应公网地址
serverPort = 7000        # 默认7000,需要和服务器端bindPort对应
auth.method = "token"    # 默认即可
auth.token = "zxw87969392"  # 需要和服务器端auth.token对应

[[proxies]]
name = "web_nas" # 服务名称,必须唯一不重复
type = "tcp"   # 协议 
localIP = "192.168.3.36" # 本地群晖内网地址
localPort = 5000  # 本地群晖端口
remotePort = 5000  # 需要放开服务器端的端口,可以任意指定没有被占用的即可

[[proxies]]  # 配置第二个穿透的服务,以此类推
name = "lucky"
type = "tcp"
localIP = "192.168.3.36"
localPort = 16601
remotePort = 16601

启动镜像,并添加映射文件夹路径

作者本地的路径是 docker/frpc/frpc.toml 对应映射服务器的路径是/etc/frp/frpc.toml

启动成功后,查看日志,可以看到连接成功了

此时使用公网ip+5000端口访问成功,穿透速度很快,可以跑满本地带宽

0

评论区